Annotation of 3BSD/cmd/lnall.c, revision 1.1.1.1

1.1       root        1: #include <sys/types.h>
                      2: #include <sys/stat.h>
                      3: 
                      4: /* lnall-
                      5:  *     son of mvall, son of cpall, son of ...
                      6:  */
                      7: 
                      8: char   buf[100];
                      9: 
                     10: main(argc, argv)
                     11: char **argv;
                     12: {
                     13:        register char *c1, *c2, *cp;
                     14:        int i;
                     15: 
                     16:        if(argc < 3) {
                     17:                write(2, "arg count\n", 10);
                     18:                exit();
                     19:        }
                     20:        argc--;
                     21:        if (!dir(argv[argc]))
                     22:        {
                     23:                printf("%s: not a directory\n", argv[argc]);
                     24:                exit(1);
                     25:        }
                     26:        c1 = buf;
                     27:        c2 = argv[argc];
                     28:        while(*c1++ = *c2++);
                     29:        c1[-1] = '/';
                     30:        for(i=1; i<argc; i++)
                     31:        {
                     32:                c2 = c1;
                     33:                cp = (char *) actual(argv[i]);
                     34:                while (*c2++ = *cp++);
                     35:                if (link(argv[i],buf)) perror(argv[i]);
                     36:        }
                     37: }
                     38: 
                     39: dir(n)
                     40:        char *n;
                     41: {
                     42:      struct stat  statbuf;
                     43:        if (stat(n,&statbuf)) return(0);
                     44:        return((statbuf.st_mode & 060000) == 040000);
                     45: }
                     46: 
                     47: actual(str)
                     48:        char *str;
                     49: {
                     50:        register char *f;
                     51:        register slash;
                     52:        f = str;
                     53:        slash = 0;
                     54:        while (*f) if (*f++ == '/') slash++;
                     55:        if (!slash) return(str);
                     56:        while (*f != '/') --f;
                     57:        ++f;
                     58:        return(f);
                     59: }
                     60: 
                     61: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.