Annotation of 41BSD/cmd/getNAME.c, revision 1.1.1.1

1.1       root        1: static char *sccsid = "@(#)getNAME.c   4.1 (Berkeley) 10/1/80";
                      2: #include <stdio.h>
                      3: 
                      4: int tocrc;
                      5: 
                      6: main(argc, argv)
                      7:        int argc;
                      8:        char *argv[];
                      9: {
                     10: 
                     11:        argc--, argv++;
                     12:        if (!strcmp(argv[0], "-t"))
                     13:                argc--, argv++, tocrc++;
                     14:        while (argc > 0)
                     15:                getfrom(*argv++), argc--;
                     16:        exit(0);
                     17: }
                     18: 
                     19: getfrom(name)
                     20:        char *name;
                     21: {
                     22:        char headbuf[BUFSIZ];
                     23:        char linbuf[BUFSIZ];
                     24:        register char *cp;
                     25:        int i = 0;
                     26: 
                     27:        if (freopen(name, "r", stdin) == 0) {
                     28:                perror(name);
                     29:                exit(1);
                     30:        }
                     31:        for (;;) {
                     32:                if (fgets(headbuf, sizeof headbuf, stdin) == NULL)
                     33:                        return;
                     34:                if (headbuf[0] != '.')
                     35:                        continue;
                     36:                if (headbuf[1] == 'T' && headbuf[2] == 'H')
                     37:                        break;
                     38:                if (headbuf[1] == 't' && headbuf[2] == 'h')
                     39:                        break;
                     40:        }
                     41:        for (;;) {
                     42:                if (fgets(linbuf, sizeof linbuf, stdin) == NULL)
                     43:                        return;
                     44:                if (linbuf[0] != '.')
                     45:                        continue;
                     46:                if (linbuf[1] == 'S' && linbuf[2] == 'H')
                     47:                        break;
                     48:                if (linbuf[1] == 's' && linbuf[2] == 'h')
                     49:                        break;
                     50:        }
                     51:        trimln(headbuf);
                     52:        if (tocrc) {
                     53:                register char *dp = name, *ep;
                     54: 
                     55: again:
                     56:                while (*dp && *dp != '.')
                     57:                        putchar(*dp++);
                     58:                if (*dp)
                     59:                        for (ep = dp+1; *ep; ep++)
                     60:                                if (*ep == '.') {
                     61:                                        putchar(*dp++);
                     62:                                        goto again;
                     63:                                }
                     64:                putchar('(');
                     65:                if (*dp)
                     66:                        dp++;
                     67:                while (*dp)
                     68:                        putchar (*dp++);
                     69:                putchar(')');
                     70:                putchar(' ');
                     71:        }
                     72:        printf("%s\t", headbuf);
                     73:        for (;;) {
                     74:                if (fgets(linbuf, sizeof linbuf, stdin) == NULL)
                     75:                        break;
                     76:                if (linbuf[0] == '.') {
                     77:                        if (linbuf[1] == 'S' && linbuf[2] == 'H')
                     78:                                break;
                     79:                        if (linbuf[1] == 's' && linbuf[2] == 'h')
                     80:                                break;
                     81:                }
                     82:                trimln(linbuf);
                     83:                if (i != 0)
                     84:                        printf(" ");
                     85:                i++;
                     86:                printf("%s", linbuf);
                     87:        }
                     88:        printf("\n");
                     89: }
                     90: 
                     91: trimln(cp)
                     92:        register char *cp;
                     93: {
                     94: 
                     95:        while (*cp)
                     96:                cp++;
                     97:        if (*--cp == '\n')
                     98:                *cp = 0;
                     99: }

unix.superglobalmegacorp.com

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