date and time created 80/10/01 17:27:26 by bill
authorBill Joy <bill@ucbvax.Berkeley.EDU>
Thu, 2 Oct 1980 09:27:26 +0000 (01:27 -0800)
committerBill Joy <bill@ucbvax.Berkeley.EDU>
Thu, 2 Oct 1980 09:27:26 +0000 (01:27 -0800)
SCCS-vsn: bin/mkdir/mkdir.c 4.1

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

diff --git a/usr/src/bin/mkdir/mkdir.c b/usr/src/bin/mkdir/mkdir.c
new file mode 100644 (file)
index 0000000..fc8a548
--- /dev/null
@@ -0,0 +1,72 @@
+static char *sccsid = "@(#)mkdir.c     4.1 (Berkeley) %G%";
+/*
+** 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;
+       }
+}