BSD 3 development
[unix-history] / usr / src / cmd / refer / refer4.c
CommitLineData
42d6e430
BJ
1# include "refer..c"
2static gate = 0;
3static char buff[LLINE];
4output (s)
5 char *s;
6{
7if (gate)
8 fputs(buff,ftemp);
9else
10 gate=1;
11strcpy(buff,s);
12if (strlen(buff)>LLINE)
13 err("one buff too big (%d)!", LLINE);
14}
15append(s)
16 char *s;
17{
18char *p, *r; int lch;
19trimnl(buff);
20for (p=buff; *p; p++)
21 ;
22lch = *--p;
23switch (lch)
24 {
25 case '.': case ',':
26 *p=0;
27 r="\\*(<";
28 while (*r) *p++= *r++;
29 *p++ = lch;
30 *p=0;
31 }
32strcat(buff,s);
33switch(lch)
34 {
35 case '.': case ',':
36 for(p=buff; *p; p++)
37 ;
38 if (*--p=='\n')*p=0;
39 r = "\\*(>";
40 while (*r) *p++ = *r++;
41 *p++ = lch;
42 *p++ = '\n';
43 *p=0;
44 }
45if (strlen(buff)>LLINE)
46 err("output buff too long (%d)", LLINE);
47}
48
49flout()
50{
51if (gate)
52 fputs(buff,ftemp);
53gate=0;
54}
55
56char *
57trimnl(ln)
58 char *ln;
59{
60register char *p = ln;
61while (*p) p++;
62p--;
63if (*p == '\n') *p=0;
64return(ln);
65}