home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l440 / 2.ddi / CHAP4 / DRVSET.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-09-25  |  1.7 KB  |  64 lines

  1. /* DRVSET.C -- set attrib of drive given on command line */
  2.  
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <string.h>
  6.  
  7. #include "currdir.h"
  8.  
  9. void fail(char *s) { puts(s); exit(1); }
  10.  
  11. main(int argc, char *argv[])
  12. {
  13.     CDS far *drv;
  14.     unsigned drive;
  15.     int drvoff;
  16.  
  17.     /* to just turn off drives, program can be renamed DRVOFF */
  18.     drvoff = strstr(strupr(argv[0]), "DRVOFF");
  19.     
  20.     /* what drive do they want? (accepts letters and numbers) */
  21.     if (argc < 2)
  22.     {
  23.         if (drvoff)
  24.             fail("usage: drvoff [drive]");
  25.         else
  26.             fail("usage: drvset [drive] <NET|PHYS|SUBST|JOIN|OFF>");
  27.     }
  28.     else if (argv[1][0] >= 'A')
  29.         drive = toupper(argv[1][0]) - 'A';
  30.     else
  31.         drive = atoi(argv[1]);
  32.  
  33.     if (! (drv = currdir(drive)))
  34.         fail("can't get current directory structure");
  35.  
  36.     /* just turn drive off */
  37.     if (drvoff)
  38.     {
  39.         drv->flags = 0;
  40.         return 0;
  41.     }
  42.  
  43.     /* change drive state */
  44.     if (argc > 2)
  45.     {
  46.         strupr(argv[2]);
  47.         if (strstr(argv[2], "OFF"))     drv->flags = 0;
  48.         if (strstr(argv[2], "NET"))     drv->flags |= NETWORK;
  49.         if (strstr(argv[2], "SUBST"))   drv->flags |= SUBST;
  50.         if (strstr(argv[2], "JOIN"))    drv->flags |= JOIN;
  51.         if (strstr(argv[2], "PHYS"))    drv->flags |= PHYSICAL;
  52.     }
  53.  
  54.     /* print current drive state */
  55.     if (! drv->flags)           fputs("INVALID ", stdout);
  56.     if (drv->flags & NETWORK)   fputs("NET ", stdout);
  57.     if (drv->flags & SUBST)     fputs("SUBST ", stdout);
  58.     if (drv->flags & JOIN)      fputs("JOIN ", stdout);
  59.     if (drv->flags & PHYSICAL)  fputs("PHYSICAL ", stdout);
  60.     putchar('\n');
  61.  
  62.     return 0;
  63. }
  64.