Research V7 development
authorKen Thompson <ken@research.uucp>
Wed, 10 Jan 1979 20:02:38 +0000 (15:02 -0500)
committerKen Thompson <ken@research.uucp>
Wed, 10 Jan 1979 20:02:38 +0000 (15:02 -0500)
Work on file usr/src/cmd/umount.c

Co-Authored-By: Dennis Ritchie <dmr@research.uucp>
Synthesized-from: v7

usr/src/cmd/umount.c [new file with mode: 0644]

diff --git a/usr/src/cmd/umount.c b/usr/src/cmd/umount.c
new file mode 100644 (file)
index 0000000..008c2d1
--- /dev/null
@@ -0,0 +1,54 @@
+#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);
+}