home *** CD-ROM | disk | FTP | other *** search
- #define NMOUNT 16
- #define NAMSIZ 32
-
- struct mtab {
- char file[NAMSIZ];
- char spec[NAMSIZ];
- } mtab[NMOUNT];
-
- main(argc, argv)
- char **argv;
- {
- register struct mtab *mp;
- register char *p1, *p2;
- int mf;
-
- sync();
- mf = open("/etc/mtab", 0);
- read(mf, (char *)mtab, NMOUNT*2*NAMSIZ);
- if(argc != 2) {
- printf("arg count\n");
- return(1);
- }
- if (umount(argv[1]) < 0) {
- perror("umount");
- return(1);
- }
- p1 = argv[1];
- while(*p1++)
- ;
- p1--;
- while(*--p1 == '/')
- *p1 = '\0';
- while(p1 > argv[1] && *--p1 != '/')
- ;
- if(*p1 == '/')
- p1++;
- argv[1] = p1;
- for (mp = mtab; mp < &mtab[NMOUNT]; mp++) {
- p1 = argv[1];
- p2 = &mp->spec[0];
- while (*p1++ == *p2)
- if (*p2++ == 0) {
- for (p1 = mp->file; p1 < &mp->file[NAMSIZ*2];)
- *p1++ = 0;
- mp = &mtab[NMOUNT];
- while ((--mp)->file[0] == 0);
- mf = creat("/etc/mtab", 0644);
- write(mf, (char *)mtab, (mp-mtab+1)*2*NAMSIZ);
- return(0);
- }
- }
- printf("%s not in mount table\n", argv[1]);
- return(1);
- }
-