From: Tom London Date: Fri, 19 Jan 1979 05:07:23 +0000 (-0500) Subject: Bell 32V development X-Git-Tag: Bell-32V~358 X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/commitdiff_plain/8f970d8a378b7603322fa4479c58face9b9ecc46 Bell 32V development Work on file usr/src/cmd/mkdir.c Co-Authored-By: John Reiser Synthesized-from: 32v --- diff --git a/usr/src/cmd/mkdir.c b/usr/src/cmd/mkdir.c new file mode 100644 index 0000000000..0fb6f97fa2 --- /dev/null +++ b/usr/src/cmd/mkdir.c @@ -0,0 +1,71 @@ +/* +** make directory +*/ + +#include +#include + +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; + } +}