|
|
1.1 ! root 1: #define NMOUNT 16 ! 2: #define NAMSIZ 32 ! 3: ! 4: struct mtab { ! 5: char file[NAMSIZ]; ! 6: char spec[NAMSIZ]; ! 7: } mtab[NMOUNT]; ! 8: ! 9: main(argc, argv) ! 10: char **argv; ! 11: { ! 12: register struct mtab *mp; ! 13: register char *p1, *p2; ! 14: int mf; ! 15: ! 16: sync(); ! 17: mf = open("/etc/mtab", 0); ! 18: read(mf, (char *)mtab, NMOUNT*2*NAMSIZ); ! 19: if(argc != 2) { ! 20: printf("arg count\n"); ! 21: return(1); ! 22: } ! 23: if (umount(argv[1]) < 0) { ! 24: perror("umount"); ! 25: return(1); ! 26: } ! 27: p1 = argv[1]; ! 28: while(*p1++) ! 29: ; ! 30: p1--; ! 31: while(*--p1 == '/') ! 32: *p1 = '\0'; ! 33: while(p1 > argv[1] && *--p1 != '/') ! 34: ; ! 35: if(*p1 == '/') ! 36: p1++; ! 37: argv[1] = p1; ! 38: for (mp = mtab; mp < &mtab[NMOUNT]; mp++) { ! 39: p1 = argv[1]; ! 40: p2 = &mp->spec[0]; ! 41: while (*p1++ == *p2) ! 42: if (*p2++ == 0) { ! 43: for (p1 = mp->file; p1 < &mp->file[NAMSIZ*2];) ! 44: *p1++ = 0; ! 45: mp = &mtab[NMOUNT]; ! 46: while ((--mp)->file[0] == 0); ! 47: mf = creat("/etc/mtab", 0644); ! 48: write(mf, (char *)mtab, (mp-mtab+1)*2*NAMSIZ); ! 49: return(0); ! 50: } ! 51: } ! 52: printf("%s not in mount table\n", argv[1]); ! 53: return(1); ! 54: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.