Annotation of researchv10no/cmd/prefer/pref/lookup.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * plook - use keywords to look up a complete reference
                      3:  */
                      4: 
                      5: 
                      6: # include <stdio.h>
                      7: # include "streams.h"
                      8: # include "bib.h"
                      9: 
                     10: char *locate(), *fgets();
                     11: 
                     12: char   *plib = PLIB;           /* prefer library */
                     13: char    INDEX[maxstr];         /* name of index file */
                     14: char   *DINPUT = BIBFILE;      /* default reference database */
                     15: 
                     16: int     argc;
                     17: char    **argv;
                     18: 
                     19: #define USAGE  "plook [-p database ] [keys...]\n"
                     20: 
                     21: 
                     22: main(argcount,arglist)
                     23: int argcount;
                     24: char **arglist;
                     25: {
                     26:        char *refs;             /* references returned here */
                     27:        char keys[maxstr];      /* keys from command line or stdin */
                     28: 
                     29: 
                     30:        argc= argcount-1;
                     31:        argv= arglist+1;
                     32: 
                     33: 
                     34:        /* make path names: common file, index; get option flags */
                     35: 
                     36:        strcpy(INDEX,DINPUT);
                     37:        flags();
                     38:        strcat(INDEX,".i");
                     39: 
                     40: 
                     41:        /* get keys from command line and locate references */
                     42: 
                     43:        *keys = '\0';
                     44:        for (; argc>0 ; argc--, argv++) {
                     45:                strcat(keys,*argv);
                     46:                strcat(keys," ");
                     47:        }
                     48:        if(*keys != '\0') {
                     49:                refs = locate(keys, INDEX);
                     50:                if(refs != NULL) {
                     51:                        if(*refs != NULL) {
                     52:                                puts(refs);
                     53:                                exit(0);
                     54:                        }
                     55:                        else exit(1);
                     56:                }
                     57:                else exit(1);
                     58:        }
                     59: 
                     60: 
                     61:        /* if no command line keys, take from stdin until EOF */
                     62: 
                     63:        while(fgets(keys, sizeof(keys), stdin)) {
                     64:                refs = locate(keys, INDEX);
                     65:                if(refs != NULL) {
                     66:                        if(*refs != NULL)
                     67:                                puts(refs);
                     68:                        else {
                     69:                                putchar('\n');
                     70:                        }
                     71:                }
                     72:                else
                     73:                        exit(1);
                     74:        }
                     75:        exit(0);
                     76: }
                     77: 
                     78: # define    operand     (strlen(*argv+2)==0 ? (argv++,argc--,*argv) : *argv+2)
                     79: 
                     80: 
                     81: /*
                     82:  *  get option flags
                     83:  *
                     84:  * -p  pathname of database file (default BIBFILE)
                     85:  */
                     86: 
                     87: flags()
                     88: {
                     89: 
                     90:        for (; argc>0 && *argv[0]=='-';  argc--,argv++) {
                     91:                switch ((*argv)[1]) {
                     92:                case 'l':
                     93:                case 'c':
                     94:                        fprintf(stderr,USAGE);
                     95:                        break;
                     96:                case 'p':
                     97:                        strcpy(INDEX,operand);
                     98:                        break;
                     99:                default:
                    100:                        fprintf(stderr,USAGE);
                    101:                        exit(1);
                    102:                }
                    103:        }
                    104: }

unix.superglobalmegacorp.com

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