Annotation of 43BSDReno/usr.bin/refer/lookbib/lookbib.c, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.