www.pudn.com > CRGAB.zip > FBYTE.C


/* 
HEADER:		; 
TITLE:		Get free diskspace; 
VERSION:	1.0; 
 
DESCRIPTION:	Calculates the amount of free space on disk.  The drive 
		number is entered on the command line  as in the following 
		example: fbyte c:.  If no drive number is entered then the 
		current drive is assumed.; 
 
KEYWORDS:	Dos utilities; 
SYSTEM:		MSDOS; 
FILENAME:	FBYTE; 
WARNINGS:	None; 
 
AUTHORS:	Dr. Ronald J. Terry; 
COMPILERS:	Turbo C; 
*/ 
#include  
#include  
 
void main(int argc, char *argv[]) /* get command line arguments */ 
{ 
    struct dfree space; 
    unsigned long freespace; 
    unsigned long c,bps,spc; 
    unsigned char drive[3],drvno,curdrv; 
    argc = argc + 0; 
    curdrv = 'A' + getdisk(); 
    strncpy(drive,argv[1],2); 
    drive[3] = NULL; 
    drive[0] = toupper(drive[0]); 
    if(drive[0]) 
    { 
    drvno = drive[0] - 'A'+ 1;  /* determine drive number */ 
    } 
    else 
    { 
    drvno = 0; 
    drive[0] = curdrv; 
    } 
    getdfree(drvno,&space);        /* get disk free space */ 
    c = (unsigned long) space.df_avail; 
    bps =(unsigned long) space.df_bsec; 
    spc = (unsigned long) space.df_sclus; 
    if(space.df_sclus==0xffff) 
    printf("Can't determine available space"); 
    else 
    { 
    freespace = c*bps*spc;    /* calculate space in bytes */ 
    printf("Space available on drive %c: = %lu\n",drive[0],freespace); 
    } 
}