1: # include "refer.h"
   2: extern int prevsig;
   3: 
   4: doref(firline)
   5: char *firline;
   6: {
   7:     char buff[QLEN], dbuff[TXTLEN];
   8:     char line[LLINE];
   9:     char *p, **sr, *flds[NFLD], *r;
  10:     int nf, nr, alph, query 0, chp, digs;
  11:     int len, skip;
  12: 
  13:     /* get query */
  14:     buff[0] = dbuff[0] = 0;
  15:     len = skip = 0;
  16:     while (input(line))
  17:     {
  18:         if (prefix(".]", line))
  19:             break;
  20:         if (skip)
  21:             continue;
  22:         if (control(line[0])) {
  23:             query=1;
  24:             len = 0;
  25:         }
  26:         if (query) {
  27:             if ((len += strlen(line)) > TXTLEN) {
  28:                 fprintf(stderr,
  29:                 "in-line citation too long:\n%s",dbuff);
  30:                 skip++;
  31:             } else {
  32:                 strcat (dbuff, line);
  33:             }
  34:         } else {
  35:             if ((len += strlen(line)) > QLEN) {
  36:                 fprintf(stderr,"citation too long:\n%s",buff);
  37:                 skip++;
  38:             } else {
  39:                 strcat (buff, line);
  40:             }
  41:         }
  42:     }
  43:     if (strcmp (buff, "$LIST$\n")==0)
  44:     {
  45:         dumpold();
  46:         return;
  47:     }
  48:     for( p=buff; *p; p++)
  49:         if (isupper(*p)) *p |= 040;
  50:     alph = digs =0;
  51:     for(p=buff; *p; p++)
  52:     {
  53:         if (isalpha(chp = *p)) alph++;
  54:         else
  55:             if (isdigit(*p)) digs++;
  56:             else
  57:             {
  58:                 *p=0;
  59:                 if ( (alph+digs<3) || common(p-alph))
  60:                 {
  61:                     r = p-alph;
  62:                     while (r < p)
  63:                         *r++ = ' ';
  64:                 }
  65:                 if ( alph==0 && digs >0)
  66:                 {
  67:                     r = p-digs;
  68:                     if (digs != 4 || (atoi(r)/100 != 19))
  69:                     {
  70:                         while (r<p)
  71:                             *r++ = ' ';
  72:                     }
  73:                 }
  74:                 *p=' ';
  75:                 alph = digs = 0;
  76:             }
  77:     }
  78:     text[0]=0;
  79:     nfound = 0;
  80:     sinput = buff;
  81:     if (buff[0]) {  /* do not search if no query */
  82:         for( sr= data; sr < search; sr++)
  83:         {
  84:             Index = *sr;
  85:             huntmain (Index);
  86:             if (nfound > 0) break;
  87:         }
  88:         if (nfound == 0) {
  89:             fprintf (stderr, "%s: No such paper '%s'\n",
  90:                 Ifile,buff);
  91:             if (prevsig)
  92:                 /* terminate signal */
  93:                 putsig (0, 0, 0, firline, line);
  94:             return;
  95:         }
  96:         if (endpush)
  97:             if (nr = chkdup(tagout))
  98:             {
  99:                 if (bare<2)
 100:                     putsig (0, 0, nr, firline, line);
 101:                 return;
 102:             }
 103:     }
 104:     nf = tabs(flds, text, NFLD);
 105:     nf += tabs(flds+nf, dbuff,NFLD-nf);
 106:     refnum++;
 107:     if (sort) putkey (nf, flds, refnum, keystr);
 108:     if (bare<2)
 109:         putsig (nf, flds, refnum, firline, line);
 110:     else
 111:         flout();
 112:     putref (nf, flds);
 113: }
 114: title( buff )
 115: char *buff;
 116: {
 117:     register char *q, *t;
 118:     int nl;
 119: 
 120:     nl = 1;
 121:     for( q=buff; *q; q++)
 122:     {
 123:         if (nl && (q[0] == '.' || q[0] == '%') && q[1] == 'T')
 124:         {
 125:             q += 3;
 126:             for (t=q; *t && *t != '\n'; t++);
 127:             *t = 0;
 128:             fprintf(stderr, "%.70s\n", q);
 129:             q=0;
 130:             break;
 131:         }
 132:         nl = *q == '\n';
 133:     }
 134:     if (q)
 135:         fprintf(stderr, "<No title>\n");
 136: }
 137: 
 138: control(c)
 139: {
 140:     if (c=='.') return(1);
 141:     if (c=='%') return(1);
 142:     return(0);
 143: }

Defined functions

control defined in line 138; used 5 times
doref defined in line 4; used 1 times
title defined in line 114; used 4 times
Last modified: 1982-01-20
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 856
Valid CSS Valid XHTML 1.0 Strict