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
intr
defined in line
148; used 5 times
main
defined in line
8;
never used
Defined variables
sccsid
defined in line
2;
never used