home *** CD-ROM | disk | FTP | other *** search
- /*
- FreeSpace.c (DiskInfo())
-
- This routine returns the free space on each device (also RAM:)
- in bytes. If it does return a negative value an error was occured
- (ie. disk not validated,...).
-
- */
-
-
- extern APTR mempool;
-
-
- LONG DiskInfo( STRPTR diskname )
- {
- LONG freedisk;
- DiskData *dd;
-
- if( Strnicmp( diskname, "RAM:", 4) )
- {
- if( (dd = AllocMemH(mempool, sizeof(struct InfoData))) )
- {
- if( (dd->lock = Lock( diskname, SHARED_LOCK )) )
- {
- Info( dd->lock, dd->id );
- UnLock( dd->lock );
-
- if( dd->id->id_DiskState == ID_VALIDATED )
- freedisk = (dd->id->id_NumBlocks - dd->id->id_NumBlocksUsed) * dd->id->id_BytesPerBlock;
- else
- freedisk = -dd->id->id_DiskState;
- }
- else
- freedisk = -1;
- FreeMemH( dd );
- }
- else
- freedisk = -2;
- }
- else
- freedisk = AvailMem( MEMF_ANY );
-
- return freedisk;
- }
-
-