Bell 32V development
authorTom London <tbl@research.uucp>
Fri, 19 Jan 1979 05:07:23 +0000 (00:07 -0500)
committerTom London <tbl@research.uucp>
Fri, 19 Jan 1979 05:07:23 +0000 (00:07 -0500)
Work on file usr/src/cmd/mkdir.c

Co-Authored-By: John Reiser <jfr@research.uucp>
Synthesized-from: 32v

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

diff --git a/usr/src/cmd/mkdir.c b/usr/src/cmd/mkdir.c
new file mode 100644 (file)
index 0000000..0fb6f97
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+** make directory
+*/
+
+#include       <signal.h>
+#include       <stdio.h>
+
+int    Errors = 0;
+char   *strcat();
+char   *strcpy();
+
+main(argc, argv)
+char *argv[];
+{
+
+       signal(SIGHUP, SIG_IGN);
+       signal(SIGINT, SIG_IGN);
+       signal(SIGQUIT, SIG_IGN);
+       signal(SIGPIPE, SIG_IGN);
+       signal(SIGTERM, SIG_IGN);
+
+       if(argc < 2) {
+               fprintf(stderr, "mkdir: arg count\n");
+               exit(1);
+       }
+       while(--argc)
+               mkdir(*++argv);
+       exit(Errors!=0);
+}
+
+mkdir(d)
+char *d;
+{
+       char pname[128], dname[128];
+       register i, slash = 0;
+
+       pname[0] = '\0';
+       for(i = 0; d[i]; ++i)
+               if(d[i] == '/')
+                       slash = i + 1;
+       if(slash)
+               strncpy(pname, d, slash);
+       strcpy(pname+slash, ".");
+       if (access(pname, 02)) {
+               fprintf(stderr,"mkdir: cannot access %s\n", pname);
+               ++Errors;
+               return;
+       }
+       if ((mknod(d, 040777, 0)) < 0) {
+               fprintf(stderr,"mkdir: cannot make directory %s\n", d);
+               ++Errors;
+               return;
+       }
+       chown(d, getuid(), getgid());
+       strcpy(dname, d);
+       strcat(dname, "/.");
+       if((link(d, dname)) < 0) {
+               fprintf(stderr, "mkdir: cannot link %s\n", dname);
+               unlink(d);
+               ++Errors;
+               return;
+       }
+       strcat(dname, ".");
+       if((link(pname, dname)) < 0) {
+               fprintf(stderr, "mkdir: cannot link %s\n",dname);
+               dname[strlen(dname)] = '\0';
+               unlink(dname);
+               unlink(d);
+               ++Errors;
+       }
+}