1: #ifndef lint
   2: static char sccsid[] = "@(#)lookup.c	2.5	6/10/85";
   3: #endif not lint
   4: # include "stdio.h"
   5: # include "streams.h"
   6: # include "bib.h"
   7: 
   8: char *locate();
   9: 
  10: int     fflag =   0;        /*  print out file names                    */
  11: int     Aflag =   0;        /*  print hits from All indexes 		*/
  12: int     max_klen =   6;     /*  max length of keys                      */
  13: char    *common =           /*  name of file of common words            */
  14:             COMFILE;
  15: char    INDEX[maxstr] =     /*  name of index file                      */
  16:             INDXFILE;
  17: 
  18: int     argc;
  19: char    **argv;
  20: 
  21: main(argcount,arglist)
  22: int argcount;
  23: char **arglist;
  24: {   char *refs;
  25:     char keys[maxstr];
  26:     char *p,*q;
  27:     char one_index[maxstr];
  28:     int found;
  29: 
  30:     strcpy(BMACLIB, N_BMACLIB);
  31:     strcpy(COMFILE, N_COMFILE);
  32:     strcpy(DEFSTYLE, N_DEFSTYLE);
  33: 
  34:     argc= argcount-1;
  35:     argv= arglist+1;
  36:     flags();
  37: 
  38:     /*  add SYSINDEX to search path.  all names are comma terminated */
  39:     strcat(INDEX, ",");
  40:     strcat(INDEX, SYSINDEX);
  41:     strcat(INDEX, ",");
  42: 
  43:     while (fgets(keys,maxstr,stdin)!=NULL)
  44:     {   found = 0;
  45:     for (p = one_index, q = INDEX; *q != 0 ; q++)
  46:         if (*q == ',' )
  47:         {   *p = 0;
  48:             refs = locate(keys, one_index, max_klen, common);
  49:         if( refs==NULL )
  50:         {   fprintf(stderr,
  51:             "%s removed from index list.\n", one_index);
  52:             /* delete this file name (shift remainder on top) */
  53:             strcpy(q-strlen(one_index),q+1);
  54:             q = q-strlen(one_index)-1;
  55:         }
  56:                 if (refs!=NULL && *refs!=NULL)
  57:         {
  58:             printf("%s", refs);
  59:             free(refs);
  60:             found = 1;
  61:             if (!Aflag) break;
  62:         }
  63:             p = one_index;
  64:         }
  65:         else *p++ = *q;
  66: 
  67:         if (!found)  printf("No references found.\n");
  68:     }
  69:     exit(0);
  70: }
  71: 
  72: # define    operand     (strlen(*argv+2)==0 ? (argv++,argc--,*argv) : *argv+2)
  73: 
  74: flags()
  75: {
  76:     char *p;
  77:     for (; argc>0 && *argv[0]=='-';  argc--,argv++)
  78:     {   switch ((*argv)[1])
  79:         {   case 'l':   max_klen= atoi(operand);
  80:                         break;
  81:         case 'f':   fflag++;
  82:             break;
  83:             case 'c':   common=  operand;
  84:                         break;
  85:         case 'A':   Aflag++;
  86:             break;
  87:             case 'p':   strcpy(INDEX,operand);
  88:                         break;
  89:         case 'd':
  90:         p = &argv[0][2];
  91:         if (!p) {
  92:             argv++;
  93:             p = &argv[0][0];
  94:         }
  95:         strreplace(COMFILE, BMACLIB, p);
  96:         strcpy(BMACLIB, p);
  97:         break;
  98:             default:    fprintf(stderr, "unknown flag '%s'\n", *argv);
  99:         }
 100:     }
 101: }

Defined functions

flags defined in line 74; used 1 times
  • in line 36
main defined in line 21; never used

Defined variables

Aflag defined in line 11; used 2 times
INDEX defined in line 15; used 5 times
argc defined in line 18; used 4 times
argv defined in line 19; used 12 times
common defined in line 13; used 2 times
fflag defined in line 10; used 1 times
  • in line 81
max_klen defined in line 12; used 3 times
sccsid defined in line 2; never used

Defined macros

operand defined in line 72; used 3 times
Last modified: 1986-03-12
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 741
Valid CSS Valid XHTML 1.0 Strict