|
|
1.1 ! root 1: #ifndef lint ! 2: static char *sccsid = "@(#)lookbib.c 4.4 (Berkeley) 2/15/84"; ! 3: #endif ! 4: ! 5: #include <stdio.h> ! 6: #include <ctype.h> ! 7: ! 8: main(argc, argv) /* look in biblio for record matching keywords */ ! 9: int argc; ! 10: char **argv; ! 11: { ! 12: FILE *fp, *hfp, *fopen(), *popen(); ! 13: char s[BUFSIZ], hunt[64], *sprintf(); ! 14: int instructions = 1; ! 15: ! 16: if (strcmp(argv[1],"-n") == 0) ! 17: { ! 18: argv++; ! 19: argc--; ! 20: instructions = 0; ! 21: } ! 22: if (argc == 1 || argc > 2) ! 23: { ! 24: fputs("Usage: lookbib database\n", ! 25: stderr); ! 26: fputs("\tfinds citations specified on standard input\n", ! 27: stderr); ! 28: exit(1); ! 29: } ! 30: if (!isatty(fileno(stdin))) ! 31: fp = stdin; ! 32: else if ((fp = fopen("/dev/tty", "r")) == NULL) ! 33: { ! 34: perror("lookbib: /dev/tty"); ! 35: exit(1); ! 36: } ! 37: sprintf(s, "%s.ia", argv[1]); ! 38: if (access(s, 0) == -1) { ! 39: sprintf (s, "%s", argv[1]); ! 40: if (access(s, 0) == -1) { ! 41: perror(s); ! 42: fprintf(stderr, "\tNeither index file %s.ia ", s); ! 43: fprintf(stderr, "nor reference file %s found\n", s); ! 44: exit(1); ! 45: } ! 46: } ! 47: sprintf(hunt, "/usr/lib/refer/hunt %s", argv[1]); ! 48: ! 49: if (instructions && isatty(fileno(fp))) ! 50: { ! 51: fprintf(stderr, "Instructions? "); ! 52: fgets(s, BUFSIZ, fp); ! 53: if (*s == 'y') ! 54: instruct(); ! 55: } ! 56: again: ! 57: fprintf(stderr, "> "); ! 58: if (fgets(s, BUFSIZ, fp)) ! 59: { ! 60: if (*s == '\n') ! 61: goto again; ! 62: if ((hfp = popen(hunt, "w")) == NULL) ! 63: { ! 64: perror("lookbib: /usr/lib/refer/hunt"); ! 65: exit(1); ! 66: } ! 67: map_lower(s); ! 68: fputs(s, hfp); ! 69: pclose(hfp); ! 70: goto again; ! 71: } ! 72: fclose(fp); ! 73: fprintf(stderr, "EOT\n"); ! 74: exit(0); ! 75: } ! 76: ! 77: map_lower(s) /* map string s to lower case */ ! 78: char *s; ! 79: { ! 80: for ( ; *s; ++s) ! 81: if (isupper(*s)) ! 82: *s = tolower(*s); ! 83: } ! 84: ! 85: instruct() ! 86: { ! 87: fputs("\nType keywords (such as author and date) after the > prompt.\n", ! 88: stderr); ! 89: fputs("References with those keywords are printed if they exist;\n", ! 90: stderr); ! 91: fputs("\tif nothing matches you are given another prompt.\n", ! 92: stderr); ! 93: fputs("To quit lookbib, press CTRL-d after the > prompt.\n\n", ! 94: stderr); ! 95: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.