# 2.11BSD#431 - /usr/src/libexec/getNAME/getNAME.c

##### Functions

    doname            X
    dorefname         X
    getfrom           X
    main              X
    split             X
    trimln            X

##### Variables

    intro             X
    tocrc             X

       1: /*
       2:  * Copyright (c) 1980 Regents of the University of California.
       3:  * All rights reserved.  The Berkeley software License Agreement
       4:  * specifies the terms and conditions for redistribution.
       5:  */
       6:
       7: #ifndef lint
       8: static char sccsid[] = "@(#)getNAME.c	5.2 (Berkeley) 10/21/85";
       9: #endif not lint
      10:
      11: /*
      12:  * Get name sections from manual pages.
      13:  *	-t	for building toc
      14:  *	-i	for building intro entries
      15:  *	other	apropos database
      16:  */
      17: #include <strings.h>
      18: #include <stdio.h>
      19:
      20: int tocrc;
      21: int intro;
      22:
      23: main(argc, argv)
      24:     int argc;
      25:     char *argv[];
      26: {
      27:
      28:     argc--, argv++;
      29:     if (!strcmp(argv[0], "-t"))
      30:         argc--, argv++, tocrc++;
      31:     if (!strcmp(argv[0], "-i"))
      32:         argc--, argv++, intro++;
      33:     while (argc > 0)
      34:         getfrom(*argv++), argc--;
      35:     exit(0);
      36: }
      37:
      38: getfrom(name)
      39:     char *name;
      40: {
      41:     char headbuf[BUFSIZ];
      42:     char linbuf[BUFSIZ];
      43:     register char *cp;
      44:     int i = 0;
      45:
      46:     if (freopen(name, "r", stdin) == 0) {
      47:         perror(name);
      48:         return;
      49:     }
      50:     for (;;) {
      51:         if (fgets(headbuf, sizeof headbuf, stdin) == NULL)
      52:             return;
      53:         if (headbuf[0] != '.')
      54:             continue;
      55:         if (headbuf[1] == 'T' && headbuf[2] == 'H')
      56:             break;
      57:         if (headbuf[1] == 't' && headbuf[2] == 'h')
      58:             break;
      59:     }
      60:     for (;;) {
      61:         if (fgets(linbuf, sizeof linbuf, stdin) == NULL)
      62:             return;
      63:         if (linbuf[0] != '.')
      64:             continue;
      65:         if (linbuf[1] == 'S' && linbuf[2] == 'H')
      66:             break;
      67:         if (linbuf[1] == 's' && linbuf[2] == 'h')
      68:             break;
      69:     }
      70:     trimln(headbuf);
      71:     if (tocrc)
      72:         doname(name);
      73:     if (!intro)
      74:         printf("%s\t", headbuf);
      75:     for (;;) {
      76:         if (fgets(linbuf, sizeof linbuf, stdin) == NULL)
      77:             break;
      78:         if (linbuf[0] == '.') {
      79:             if (linbuf[1] == 'S' && linbuf[2] == 'H')
      80:                 break;
      81:             if (linbuf[1] == 's' && linbuf[2] == 'h')
      82:                 break;
      83:         }
      84:         trimln(linbuf);
      85:         if (intro) {
      86:             split(linbuf, name);
      87:             continue;
      88:         }
      89:         if (i != 0)
      90:             printf(" ");
      91:         i++;
      92:         printf("%s", linbuf);
      93:     }
      94:     printf("\n");
      95: }
      96:
      97: trimln(cp)
      98:     register char *cp;
      99: {
     100:
     101:     while (*cp)
     102:         cp++;
     103:     if (*--cp == '\n')
     104:         *cp = 0;
     105: }
     106:
     107: doname(name)
     108:     char *name;
     109: {
     110:     register char *dp = name, *ep;
     111:
     112: again:
     113:     while (*dp && *dp != '.')
     114:         putchar(*dp++);
     115:     if (*dp)
     116:         for (ep = dp+1; *ep; ep++)
     117:             if (*ep == '.') {
     118:                 putchar(*dp++);
     119:                 goto again;
     120:             }
     121:     putchar('(');
     122:     if (*dp)
     123:         dp++;
     124:     while (*dp)
     125:         putchar (*dp++);
     126:     putchar(')');
     127:     putchar(' ');
     128: }
     129:
     130: split(line, name)
     131:     char *line, *name;
     132: {
     133:     register char *cp, *dp;
     134:     char *sp, *sep;
     135:
     136:     cp = index(line, '-');
     137:     if (cp == 0)
     138:         return;
     139:     sp = cp + 1;
     140:     for (--cp; *cp == ' ' || *cp == '\t' || *cp == '\\'; cp--)
     141:         ;
     142:     *++cp = '\0';
     143:     while (*sp && (*sp == ' ' || *sp == '\t'))
     144:         sp++;
     145:     for (sep = "", dp = line; dp && *dp; dp = cp, sep = "\n") {
     146:         cp = index(dp, ',');
     147:         if (cp) {
     148:             register char *tp;
     149:
     150:             for (tp = cp - 1; *tp == ' ' || *tp == '\t'; tp--)
     151:                 ;
     152:             *++tp = '\0';
     153:             for (++cp; *cp == ' ' || *cp == '\t'; cp++)
     154:                 ;
     155:         }
     156:         printf("%s%s\t", sep, dp);
     157:         dorefname(name);
     158:         printf("\t%s", sp);
     159:     }
     160: }
     161:
     162: dorefname(name)
     163:     char *name;
     164: {
     165:     register char *dp = name, *ep;
     166:
     167: again:
     168:     while (*dp && *dp != '.')
     169:         putchar(*dp++);
     170:     if (*dp)
     171:         for (ep = dp+1; *ep; ep++)
     172:             if (*ep == '.') {
     173:                 putchar(*dp++);
     174:                 goto again;
     175:             }
     176:     putchar('.');
     177:     if (*dp)
     178:         dp++;
     179:     while (*dp)
     180:         putchar (*dp++);
     181: }

#### Defined functions

doname defined in line 107; used 1 times

- in line 72

dorefname defined in line 162; used 1 times

- in line 157

getfrom defined in line 38; used 1 times

- in line 34

main defined in line 23; never used
split defined in line 130; used 1 times

- in line 86

trimln defined in line 97; used 2 times

- in line 70, 84

#### Defined variables

intro defined in line 21; used 3 times

- in line 32, 73, 85

sccsid defined in line 8; never used
tocrc defined in line 20; used 2 times

- in line 30, 71

Last modified: 1987-02-22 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1175 |