|
|
1.1 ! root 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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.