static char *sccsid
= "@(#)refer2.c 4.3 (Berkeley) 7/29/85";
char buff
[QLEN
], dbuff
[3*QLEN
];
char answer
[ANSLEN
], temp
[TLEN
], line
[BUFSIZ
];
char *p
, **sr
, *flds
[NFLD
], *r
;
int stat
, nf
, nr
, query
= 0, alph
, digs
;
buff
[0] = dbuff
[0] = NULL
;
if (biblio
&& Iline
== 1 && line1
[0] == '%')
while (input(line
)) { /* get query */
if (biblio
&& line
[0] == '\n')
if (biblio
&& line
[0] == '%' && line
[1] == *convert
)
strcat(query
? dbuff
: buff
, line
);
err("query too long (%d)", strlen(buff
));
if (strlen(dbuff
) > 3 * QLEN
)
err("record at line %d too long", Iline
-1);
if (biblio
&& line
[0] == '\n' && feof(in
))
if (strcmp(buff
, "$LIST$\n")==0) {
for (p
= buff
; *p
; p
++) {
for (p
= buff
; *p
; p
++) {
if ((alph
+digs
< 3) || common(p
-alph
)) {
if (alph
== 0 && digs
> 0) {
if (digs
!= 4 || atoi(r
)/100 != 19) {
if (buff
[0]) { /* do not search if no query */
for (sr
= rdata
; sr
< search
; sr
++) {
corout(buff
, temp
, "hunt", *sr
, TLEN
);
assert(strlen(temp
) < TLEN
);
if (strlen(temp
)+strlen(answer
) > BUFSIZ
)
err("Accumulated answers too large",0);
if (strlen(answer
)>BUFSIZ
)
err("answer too long (%d)", strlen(answer
));
assert(strlen(one
) < ANSLEN
);
assert(strlen(answer
) < ANSLEN
);
switch (newline(answer
)) {
fprintf(stderr
, "No such paper: %s\n", buff
);
fprintf(stderr
, "Too many hits: %s\n", trimnl(buff
));
if (nr
= chkdup(answer
)) {
nf
+= tabs(flds
+nf
, dbuff
);
putsig(nf
,flds
,nr
,line1
,line
,0);
corout(answer
, one
, "deliv", usedir
, QLEN
);
assert(strlen(buff
) < QLEN
);
assert(strlen(one
) < ANSLEN
);
nf
+= tabs(flds
+nf
, dbuff
);
putkey(nf
, flds
, refnum
, keystr
);
putsig(nf
, flds
, refnum
, line1
, line
, 1);
if (biblio
&& line
[0] == '\n')
if (biblio
&& line
[0] == '%' && line
[1] == *convert
)
fprintf(fo
, "%s%c%s", convert
+1, sep
, line
+3);
char ob
[BUFSIZ
], *p
, *r
, *q
, *t
;
for (r
= p
= buff
; *p
; p
++) {
corout(r
, ob
, "deliv", usedir
, BUFSIZ
);
if (nl
&& (q
[0]=='.'||q
[0]=='%') && q
[1]=='T') {
for (t
= q
; *t
&& *t
!= '\n'; t
++)
fprintf(stderr
, "%.70s\n", q
);
fprintf(stderr
, "??? at %s\n",r
);