
/*---------------------------------------------------------------------*/
/*                   ASSIGN-Funktion für AmigaDOS                      */
/*                                                                     */
/*                           JEA, 18-08-87                             */
/*---------------------------------------------------------------------*/
#include <libraries/dos.h>
#include <libraries/dosextens.h>
#include <libraries/filehandler.h>

extern struct DosLibrary *DOSBase;

UBYTE *dtl_types[] = {
"Device   : ",
"Directory: ",
"Volume   : "
};

/*---------------------------------------------------------------------*/
/*                   BSTR in C-String konvertieren                     */
/*                                                                     */
/*                                                                     */
/*---------------------------------------------------------------------*/
BstrC( bstr, buf )
BSTR *bstr;
UBYTE *buf;
{
UBYTE *str;
LONG loop;
LONG zaehler;

   zaehler = 0;
   str = (UBYTE*) BADDR( bstr );
   for( loop = (LONG) str[0]; loop--; ++zaehler){
      buf[zaehler] = str[zaehler+1];
   }
   buf[zaehler] = 0;
}

/*---------------------------------------------------------------------*/
/*                         BPTR-String ausgeben                        */
/*                                                                     */
/*                                                                     */
/*---------------------------------------------------------------------*/
BstrOut( bstr )
BSTR *bstr;
{
UBYTE buf[80];

   BstrC( bstr, buf );
   printf( buf );
}

/*---------------------------------------------------------------------*/
/*                      ASSIGN-Einträge ausgeben                       */
/*                                                                     */
/*                                                                     */
/*---------------------------------------------------------------------*/
FindeAssign()
{
struct RootNode   *rootnode;
struct DosInfo    *dosinfo;
struct DeviceList *devicelist;
struct FileLock   *filelock;

   rootnode   = (struct RootNode*)   DOSBase->dl_Root;
   dosinfo    = (struct DosInfo*)    BADDR( rootnode->rn_Info );
   devicelist = (struct DeviceList*) BADDR( dosinfo->di_DevInfo );

   while( devicelist->dl_Next ){
      printf( dtl_types[devicelist->dl_Type] );
      BstrOut( devicelist->dl_Name );
      printf( "\n" );
      devicelist = (struct DeviceList*) BADDR( devicelist->dl_Next );
   }
}

/*---------------------------------------------------------------------*/
/*                           Hauptprogramm                             */
/*                                                                     */
/*                                                                     */
/*---------------------------------------------------------------------*/
main()
{
   FindeAssign();
}


