BSD 3 development
authorBill Joy <wnj@ucbvax.Berkeley.EDU>
Sun, 21 Oct 1979 11:23:03 +0000 (03:23 -0800)
committerBill Joy <wnj@ucbvax.Berkeley.EDU>
Sun, 21 Oct 1979 11:23:03 +0000 (03:23 -0800)
Work on file usr/src/cmd/lnall.c

Synthesized-from: 3bsd

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

diff --git a/usr/src/cmd/lnall.c b/usr/src/cmd/lnall.c
new file mode 100644 (file)
index 0000000..4b29c52
--- /dev/null
@@ -0,0 +1,61 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+
+/* lnall-
+ *     son of mvall, son of cpall, son of ...
+ */
+
+char   buf[100];
+
+main(argc, argv)
+char **argv;
+{
+       register char *c1, *c2, *cp;
+       int i;
+
+       if(argc < 3) {
+               write(2, "arg count\n", 10);
+               exit();
+       }
+       argc--;
+       if (!dir(argv[argc]))
+       {
+               printf("%s: not a directory\n", argv[argc]);
+               exit(1);
+       }
+       c1 = buf;
+       c2 = argv[argc];
+       while(*c1++ = *c2++);
+       c1[-1] = '/';
+       for(i=1; i<argc; i++)
+       {
+               c2 = c1;
+               cp = (char *) actual(argv[i]);
+               while (*c2++ = *cp++);
+               if (link(argv[i],buf)) perror(argv[i]);
+       }
+}
+
+dir(n)
+       char *n;
+{
+     struct stat  statbuf;
+       if (stat(n,&statbuf)) return(0);
+       return((statbuf.st_mode & 060000) == 040000);
+}
+
+actual(str)
+       char *str;
+{
+       register char *f;
+       register slash;
+       f = str;
+       slash = 0;
+       while (*f) if (*f++ == '/') slash++;
+       if (!slash) return(str);
+       while (*f != '/') --f;
+       ++f;
+       return(f);
+}
+
+