# 2.11BSD#431 - /usr/src/usr.bin/refer/refer1.c

##### Functions

    cleanup           X
    intr              X
    main              X
    signals           X

       1: #ifndef lint
       2: static char *sccsid = "@(#)refer1.c	4.3 (Berkeley) 4/23/86";
       3: #endif
       4:
       5: #include <signal.h>
       6: #include "refer..c"
       7:
       8: main(argc,argv)     /* process command-line arguments */
       9: char *argv[];
      10: {
      11:     char line[BUFSIZ], *s;
      12:     int nodeflt = 0;
      13:
      14:     signals();
      15:     while (argv[1][0] == '-') {
      16:         switch(argv[1][1]) {
      17:         case 'e':
      18:             endpush++;
      19:             break;
      20:         case 's':
      21:             sort++;
      22:             endpush = 1;
      23:             if (argv[1][2])
      24:                 keystr = argv[1]+2;
      25:             break;
      26:         case 'l':
      27:             labels++;
      28:             s = argv[1]+2;
      29:             nmlen = atoi(s);
      30:             while (*s)
      31:                 if (*s++ == ',')
      32:                     break;
      33:             dtlen = atoi(s);
      34:             break;
      35:         case 'k':
      36:             keywant = (argv[1][2] ? argv[1][2] : 'L');
      37:             labels++;
      38:             break;
      39:         case 'n':
      40:             nodeflt = 1;
      41:             break;
      42:         case 'p':
      43:             argc--;
      44:             argv++;
      45:             *search++ = argv[1];
      46:             if (search-rdata > NSERCH)
      47:                 err("too many -p options (%d)", NSERCH);
      48:             break;
      49:         case 'a':
      50:             authrev = atoi(argv[1]+2);
      51:             if (authrev<=0)
      52:                 authrev = 1000;
      53:             break;
      54:         case 'b':
      55:             bare = (argv[1][2] == '1') ? 1 : 2;
      56:             break;
      57:         case 'c':
      58:             smallcaps = argv[1]+2;
      59:             break;
      60:         case 'f':
      61:             refnum = atoi(argv[1]+2) - 1;
      62:             break;
      63:         case 'B':
      64:             biblio++;
      65:             bare = 2;
      66:             if (argv[1][2])
      67:                 convert = argv[1]+2;
      68:             break;
      69:         case 'S':
      70:             science++;
      71:             labels = 1;
      72:             break;
      73:         case 'P':
      74:             postpunct++;
      75:             break;
      76:         }
      77:         argc--;
      78:         argv++;
      79:     }
      80:     if (getenv("REFER") != NULL)
      81:         *search++ = getenv("REFER");
      82:     else if (nodeflt == 0)
      83:         *search++ = "/usr/dict/papers/Ind";
      84:     if (!labels) {
      85:         sprintf(ofile, "/tmp/rj%db", getpid());
      86:         ftemp = fopen(ofile, "w");
      87:         if (ftemp == NULL) {
      88:             fprintf(stderr, "Can't open scratch file\n");
      89:             exit(1);
      90:         }
      91:     }
      92:     if (endpush) {
      93:         sprintf(tfile, "/tmp/rj%da", getpid());
      94:         fo = fopen(tfile, "w");
      95:         if (fo == NULL) {
      96:             fo = ftemp;
      97:             fprintf(stderr, "Can't open scratch file");
      98:         }
      99:         sep = 002; /* separate records without confusing sort..*/
     100:     } else
     101:         fo = ftemp;
     102:     do {
     103:         if (argc > 1) {
     104:             fclose(in);
     105:             Iline = 0;
     106:             in = fopen(Ifile = argv[1], "r");
     107:             argc--;
     108:             argv++;
     109:             if (in == NULL) {
     110:                 err("Can't read %s", Ifile);
     111:                 continue;
     112:             }
     113:         }
     114:         while (input(line)) {
     115:             Iline++;
     116:             if (biblio && *line == '\n')
     117:                 doref(line);
     118:             else if (biblio && Iline == 1 && *line == '%')
     119:                 doref(line);
     120:             else if (!prefix(".[", line))
     121:                 output(line);
     122:             else
     123:                 doref(line);
     124:         }
     125:     } while (argc > 1);
     126:
     127:     if (endpush && fo != NULL)
     128:         dumpold();
     129:     output("");
     130:     if (!labels)
     131:         recopy(ofile);
     132:     clfgrep();
     133:     cleanup();
     134:     exit(0);
     135: }
     136:
     137: extern int intr();
     138:
     139: signals()
     140: {
     141:     if (signal(SIGINT, SIG_IGN) != SIG_IGN)
     142:         signal(SIGINT, intr);
     143:     signal(SIGHUP, intr);
     144:     signal(SIGPIPE, intr);
     145:     signal(SIGTERM, intr);
     146: }
     147:
     148: intr()
     149: {
     150:     signal(SIGINT, SIG_IGN);
     151:     cleanup();
     152:     exit(1);
     153: }
     154:
     155: cleanup()
     156: {
     157:     if (tfile[0])
     158:         unlink(tfile);
     159:     if (gfile[0])
     160:         unlink(gfile);
     161:     if (ofile[0])
     162:         unlink(ofile);
     163:     if (hidenam[0])
     164:         unlink(hidenam);
     165: }

#### Defined functions

cleanup defined in line 155; used 2 times

- in line 133, 151

intr defined in line 148; used 5 times

- in line 137-145(5)

main defined in line 8; never used
signals defined in line 139; used 1 times

- in line 14

#### Defined variables

sccsid defined in line 2; never used

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