/* GetVolume.c -- Written 02/13/87 by Chuck McManis feel free to use it * * This simple Program can be used to get the Volume name for a given file. * Works on any device, even the RAM: device. * * Note: The BADDR macro is in the dos.h file */ #include #include #include #include void main() { char VolumeName[40], FileName[80], *MyVolume; struct FileLock *MyLock; printf("Enter a file name :"); gets(FileName); /* Simultaneous get a lock and convert BPTR to a C pointer */ MyLock = (struct FileLock *)BADDR(Lock(FileName,ACCESS_READ)); if (MyLock == NULL) { printf("File could not be found!\n"); exit(20); /* Die appropriately on failure */ } /* This next statement chases the BCPL pointers thru a FileLock and * * DeviceList structures */ MyVolume = (char *) BADDR(((struct DeviceList *)BADDR(MyLock->fl_Volume))->dl_Name); /* Lattice V3.10 function to copy a string and Null terminate it */ stccpy(VolumeName,MyVolume+1,MyVolume[0]+1); printf("That file resides on Volume '%s' \n",VolumeName); UnLock(((long)MyLock) >> 2); /* You must UnLock or the GURU visits */ exit(0); }