|
|
1.1 ! root 1: #ifndef lint ! 2: static char *sccsid = "@(#)refer1.c 4.1 (Berkeley) 5/6/83"; ! 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 (endpush) { ! 85: sprintf(tfile, "/tmp/rj%da", getpid()); ! 86: fo = fopen(tfile, "w"); ! 87: if (fo == NULL) { ! 88: fo = ftemp; ! 89: fprintf(stderr, "Can't open scratch file"); ! 90: } ! 91: sep = 002; /* separate records without confusing sort..*/ ! 92: } ! 93: if (sort && !labels) { ! 94: sprintf(ofile, "/tmp/rj%db", getpid()); ! 95: ftemp = fopen(ofile, "w"); ! 96: if (ftemp == NULL) { ! 97: fprintf(stderr, "Can't open scratch file\n"); ! 98: exit(1); ! 99: } ! 100: } ! 101: do { ! 102: if (argc > 1) { ! 103: fclose(in); ! 104: Iline = 0; ! 105: in = fopen(Ifile = argv[1], "r"); ! 106: argc--; ! 107: argv++; ! 108: if (in == NULL) { ! 109: err("Can't read %s", (void) Ifile); ! 110: continue; ! 111: } ! 112: } ! 113: while (input(line)) { ! 114: Iline++; ! 115: if (biblio && *line == '\n') ! 116: doref(line); ! 117: else if (biblio && Iline == 1 && *line == '%') ! 118: doref(line); ! 119: else if (!prefix(".[", line)) ! 120: output(line); ! 121: else ! 122: doref(line); ! 123: } ! 124: } while (argc > 1); ! 125: ! 126: if (endpush && fo != NULL) ! 127: dumpold(); ! 128: output(""); ! 129: if (sort && !labels) ! 130: recopy(ofile); ! 131: clfgrep(); ! 132: cleanup(); ! 133: exit(0); ! 134: } ! 135: ! 136: extern int intr(); ! 137: ! 138: signals() ! 139: { ! 140: if (signal(SIGINT, SIG_IGN) != SIG_IGN) ! 141: signal(SIGINT, intr); ! 142: signal(SIGHUP, intr); ! 143: signal(SIGPIPE, intr); ! 144: signal(SIGTERM, intr); ! 145: } ! 146: ! 147: intr() ! 148: { ! 149: signal(SIGINT, SIG_IGN); ! 150: cleanup(); ! 151: exit(1); ! 152: } ! 153: ! 154: cleanup() ! 155: { ! 156: if (tfile[0]) ! 157: unlink(tfile); ! 158: if (gfile[0]) ! 159: unlink(gfile); ! 160: if (ofile[0]) ! 161: unlink(ofile); ! 162: if (hidenam[0]) ! 163: unlink(hidenam); ! 164: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.