home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
magazine
/
nan_news
/
toolkit
/
diskfunc.prg
< prev
next >
Wrap
Text File
|
1991-08-15
|
3KB
|
120 lines
/*
* File......: DISKFUNC.PRG
* Author....: Robert A. DiFalco
* Date......: $Date: 15 Aug 1991 23:02:20 $
* Revision..: $Revision: 1.2 $
* Log file..: $Logfile: E:/nanfor/src/diskfunc.prv $
*
* This is an original work by Robert A. DiFalco and is placed in
* the public domain.
*
* Modification history:
* ---------------------
*
* $Log: E:/nanfor/src/diskfunc.prv $
*
* Rev 1.2 15 Aug 1991 23:02:20 GLENN
* Forest Belt proofread/edited/cleaned up doc
*
* Rev 1.1 14 Jun 1991 17:49:28 GLENN
* Documentation format change (minor).
* Added work around suggested by a number of Nanforum users; sometimes
* _ftDiskFunc() would return negative numbers on large drives.
*
* Rev 1.0 01 Apr 1991 01:01:12 GLENN
* Nanforum Toolkit
*
*/
#include "FTINT86.CH"
#define DRVTABLE "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
#ifdef FT_TEST
FUNCTION MAIN( cDrv )
QOut("Disk size: " + str( FT_DSKSIZE() ) )
QOut("Free bytes: " + str( FT_DSKFREE() ) )
return ( nil )
#endif
/* $DOC$
* $FUNCNAME$
* FT_DSKSIZE()
* $CATEGORY$
* DOS/BIOS
* $ONELINER$
* Return the maximum capacity of a fixed disk
* $SYNTAX$
* FT_DSKSIZE( [ <cDrive> ] ) -> nMaxCapacity
* $ARGUMENTS$
* <cDrive> is the fixed disk to query. If no drive is sent, the
* operation will be performed on the default drive. Send without
* the ":".
* $RETURNS$
* An integer representing the maximum disk capacity in bytes.
* $DESCRIPTION$
* Function utilizing FT_INT86() to return Maximum Disk Size.
* Uses FT_INT86() through the internal function _ftDiskInfo().
* $EXAMPLES$
* ? FT_DSKSIZE() // Maximum capacity for default drive
* ? FT_DSKSIZE( "D" ) // Maximum capacity for Drive D:
* $END$
*/
FUNCTION FT_DSKSIZE( cDrive )
local aReg[INT86_MAX_REGS]
_ftDiskInfo( cDrive, aReg )
aReg[4] := if(aReg[4] >= 0,aReg[4],65536+aReg[4]) //work around
RETURN iif( aReg[1] == -1, aReg[1], aReg[1] * aReg[3] * aReg[4] )
/* $DOC$
* $FUNCNAME$
* FT_DSKFREE()
* $CATEGORY$
* DOS/BIOS
* $ONELINER$
* Return the amount of available disk space
* $SYNTAX$
* FT_DSKFREE( [ <cDrive> ] ) -> nSpaceAvail
* $ARGUMENTS$
* <cDrive> is the fixed disk to query. If no parameter is passed
* the operation will be performed on the default drive. Do not
* include the ":".
* $RETURNS$
* Integer representing the available disk space in bytes.
* $DESCRIPTION$
* Function to return the available space on the passed
* drive letter or the default drive if no drive is passed.
*
* Uses FT_INT86() through the internal function _ftDiskInfo().
* $EXAMPLES$
* ? FT_DSKFREE() // Returns free space on default drive.
* $END$
*/
FUNCTION FT_DSKFREE( cDrive )
local aReg[INT86_MAX_REGS]
_ftDiskInfo( cDrive, aReg )
aReg[2] := if(aReg[2] >= 0,aReg[2],65536+aReg[2]) // work around
RETURN iif( aReg[1] == -1, aReg[1], aReg[1] * aReg[3] * aReg[2] )
STATIC FUNCTION _ftDiskInfo( cDrive, aReg )
local nDrive
nDrive := if( cDrive == NIL, 0, at( upper(cDrive), DRVTABLE ) )
aReg[1] := MAKEHI( 54 )
aReg[4] := nDrive
FT_INT86( 33, aReg )
RETURN Nil