home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / GLEN / IS.ZIP / IS_DISK.C < prev    next >
C/C++ Source or Header  |  1988-10-26  |  2KB  |  65 lines

  1. /*
  2. ** is-disk.c source file for 'disk' functions of IS
  3. */
  4.  
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <stdlib.h>
  8. #include <dos.h>
  9. #include "is.h"
  10. #define INBUFF 81
  11.  
  12. int is_disk(char *fun, char *ret_str)
  13. {
  14.    struct diskfree_t diskinfo;                 /* place to store disk info */
  15.    char drivestr[2];                           /* place to store drive     */
  16.    unsigned int drivenum;
  17.    char *dbeg, *dend;                           /* drive begin             */
  18.    char *dr = drivestr;
  19.    long freespace, totalspace;
  20.  
  21.    /* extract drive from fun (if any) */
  22.    if((dbeg = strchr(fun, '(')) != NULL)       /* if there's a left paren  */
  23.    {
  24.        if((dend = strrchr(fun, ')')) != NULL)  /* and a right paren        */
  25.        {
  26.            ++dbeg;                         /* copy what's inside to prompt */
  27.            *dr++ = *dbeg;
  28.            *dr = '\0';
  29.        }
  30.    }
  31.  
  32.    /* if no drive specified, use current drive */
  33.    if(dr == drivestr)
  34.        drivenum = 0;
  35.    else
  36.    {
  37.        tolower((int) drivestr[0]);
  38.        drivenum = (int) drivestr[0] - 'a' + 1;
  39.    }
  40.  
  41.    /* get free space   */
  42.    _dos_getdiskfree(drivenum, &diskinfo);
  43.    freespace = diskinfo.avail_clusters * diskinfo.sectors_per_cluster;
  44.    freespace *= diskinfo.bytes_per_sector;
  45.    totalspace = diskinfo.total_clusters * diskinfo.sectors_per_cluster;
  46.    totalspace *= diskinfo.bytes_per_sector;
  47.  
  48.    if(strncmp(fun, "diskfree", 8) == 0)
  49.    {
  50.        ltoa(freespace, ret_str, 10);
  51.        return(OK);
  52.    }
  53.    else
  54.    {
  55.        if(strncmp(fun, "disksize", 8) == 0)
  56.        {
  57.            ltoa(totalspace, ret_str, 10);
  58.            return(OK);
  59.        }
  60.        else
  61.            return(BAD);
  62.    }
  63. }
  64.  
  65.