static char bflab
[NFLAB
];
static char *labtab
[NLABC
];
static char *lbp
= bflab
;
putsig (nf
, flds
, nref
, nstline
, endline
)
char *flds
[], *nstline
, *endline
;
/* choose signal style */
char t
[100], t1
[100], t2
[100], format
[10], *sd
;
sprintf(t
, "%s%c", labtab
[nref
], labc
[nref
]);
sprintf(t
, "%s", fpar(nf
, flds
, t1
, keywant
, 1, 0));
sprintf(format
, nmlen
>0 ? "%%.%ds%%s" : "%%s%%s", nmlen
);
/* format is %s%s for default labels or %.3s%s eg if wanted */
sd
= fpar(nf
, flds
, t2
, 'D', 1, 0);
sprintf(t
, format
, fpar(nf
, flds
, t1
, 'A', 1, 0), sd
);
addch( t
, keylet(t
, nref
));
sprintf(t
, "%c%d%c", FLAG
, nref
, FLAG
);
another
= prefix (".[", sd
=lookat());
if (another
&& (strcmp(".[\n", sd
) != SAME
))
fprintf(stderr
, "File %s, line %d- punctuation ignored from: %s", Ifile
, Iline
, sd
);
fprintf(stderr
, "sig is now %s leng %d\n",sig
,strlen(sig
));
strcpy (stline
, nstline
);
if (stline
[2] || endline
[2])
sprintf(t1
, "%s%s\%s\n", stline
, sig
, endline
);
fclose(fhide
); fhide
= fopen(hidenam
, "r");
while ((ch
= getc(fhide
)) != EOF
)
sprintf(hidenam
, "/tmp/rj%dc", getpid());
fprintf(stderr
, "hiding in %s\n", hidenam
);
fhide
= fopen(hidenam
, "w");
if (fhide
==NULL
) err("Can't get scratch file %s", hidenam
);
if (nf
>0) fprintf(fo
,".ds [F %s%c",t
,sep
);
fprintf(stderr
, "sig is now %s\n",sig
);
fpar (nf
, flds
, out
, c
, seq
, prepend
)
if (flds
[i
][1]==c
&& ++fnd
>= seq
)
if (c
=='T' || c
== 'J') /* for titles use first word otherwise last */
if (prefix("A ", p
)) p
+=2;
if (prefix("An ", p
)) p
+=3;
if (prefix("The ", p
)) p
+= 4;
for(s
=p
= flds
[i
]+2; *p
; p
++);
while (p
>s
&& *p
!= ' ') p
--;
/* special wart for authors */
if (c
=='A' && (p
[-1] == ',' || p
[1] =='('))
while (p
>s
&& *p
!= ' ') p
--;
initadd(out
, flds
[i
]+2, p
);
putkey(nf
, flds
, nref
, keystr
)
fprintf(fo
, "%s%c%c", labtab
[nref
], labc
[nref
], sep
);
if (*keystr
=='+') count
=999;
sf
= fpar(nf
, flds
, t1
, ctype
, i
, 1);
fprintf(fo
, "%s%c", sf
, '-');
fprintf(fo
, "%c%d%c%c", FLAG
, nref
, FLAG
, sep
);
if (strcmp(labtab
[i
], t
) == 0)
strcpy(labtab
[nref
]=lbp
, t
);
err("bflab overflow (%d)", NFLAB
);
err ("nref in labc overflow (%d)", NLABC
);
fprintf(stderr
, "lbp up to %d of 2000\n", lbp
-bflab
);
return (labc
[nref
] = x
+1);
while (*t
&& *t
!= ',' && *t
!= ' ')
while (n
-- && (c
= *t
++)>0)
static char *articles
[] = {"the ", "an ", "a ", 0};
/* skips over initial "a ", "an ", or "the " in s */
for (r1
= *p
; ((*r1
^ *r2
) & ~040 ) == 0; r1
++)