From fe19c180ed98ae7658b86bf43cedfe47fd86fb05 Mon Sep 17 00:00:00 2001 From: Bill Joy Date: Thu, 2 Oct 1980 01:27:26 -0800 Subject: [PATCH] date and time created 80/10/01 17:27:26 by bill SCCS-vsn: bin/mkdir/mkdir.c 4.1 --- usr/src/bin/mkdir/mkdir.c | 72 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 usr/src/bin/mkdir/mkdir.c diff --git a/usr/src/bin/mkdir/mkdir.c b/usr/src/bin/mkdir/mkdir.c new file mode 100644 index 0000000000..fc8a54888c --- /dev/null +++ b/usr/src/bin/mkdir/mkdir.c @@ -0,0 +1,72 @@ +static char *sccsid = "@(#)mkdir.c 4.1 (Berkeley) %G%"; +/* +** 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; + } +} -- 2.20.1