home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / cmd / mount.c < prev    next >
Encoding:
C/C++ Source or Header  |  1979-01-10  |  1.2 KB  |  66 lines

  1. #include <stdio.h>
  2.  
  3. #define    NMOUNT    16
  4. #define    NAMSIZ    32
  5.  
  6. struct mtab {
  7.     char    file[NAMSIZ];
  8.     char    spec[NAMSIZ];
  9. } mtab[NMOUNT];
  10.  
  11. main(argc, argv)
  12. char **argv;
  13. {
  14.     register int ro;
  15.     register struct mtab *mp;
  16.     register char *np;
  17.     int mf;
  18.  
  19.     mf = open("/etc/mtab", 0);
  20.     read(mf, (char *)mtab, NMOUNT*2*NAMSIZ);
  21.     if (argc==1) {
  22.         for (mp = mtab; mp < &mtab[NMOUNT]; mp++)
  23.             if (mp->file[0])
  24.                 printf("%s on %s\n", mp->spec, mp->file);
  25.         exit(0);
  26.     }
  27.     if(argc < 3) {
  28.         fprintf(stderr,"arg count\n");
  29.         exit(1);
  30.     }
  31.     ro = 0;
  32.     if(argc > 3)
  33.         ro++;
  34.     if(mount(argv[1], argv[2], ro) < 0) {
  35.         perror("mount");
  36.         exit(1);
  37.     }
  38.     np = argv[1];
  39.     while(*np++)
  40.         ;
  41.     np--;
  42.     while(*--np == '/')
  43.         *np = '\0';
  44.     while(np > argv[1] && *--np != '/')
  45.         ;
  46.     if(*np == '/')
  47.         np++;
  48.     argv[1] = np;
  49.     for (mp = mtab; mp < &mtab[NMOUNT]; mp++) {
  50.         if (mp->file[0] == 0) {
  51.             for (np = mp->spec; np < &mp->spec[NAMSIZ-1];)
  52.                 if ((*np++ = *argv[1]++) == 0)
  53.                     argv[1]--;
  54.             for (np = mp->file; np < &mp->file[NAMSIZ-1];)
  55.                 if ((*np++ = *argv[2]++) == 0)
  56.                     argv[2]--;
  57.             mp = &mtab[NMOUNT];
  58.             while ((--mp)->file[0] == 0);
  59.             mf = creat("/etc/mtab", 0644);
  60.             write(mf, (char *)mtab, (mp-mtab+1)*2*NAMSIZ);
  61.             exit(0);
  62.         }
  63.     }
  64.     exit(0);
  65. }
  66.