|
|
1.1 root 1: #include "parms.h"
2: #include "structs.h"
3:
4: #ifdef RCSIDENT
5: static char rcsid[] = "$Header: lprnote.c,v 1.7.0.3 85/03/19 19:39:05 notes Rel $";
6: #endif RCSIDENT
7:
8: /*
9: * lprnote(io, lprfile, toc, notenum, note, justtitle)
10: *
11: * prints the specified note to lprfile, and makes an entry in
12: * toc file. Paging is taken care of and the page/line stuff is
13: * correctly set at the conclusion.
14: *
15: * lprresp(io, lprfile, toc, respnum, rsprec, roffset)
16: *
17: * Same as the lprnote routine. Works for responses though.
18: *
19: * pagebreak(lprfile)
20: *
21: * forces a page break.
22: *
23: * Ray Essick May 13, 1982
24: */
25:
26: #define NOTENEED 7
27: #define RESPNEED 7
28:
29: extern int length, /* length of page */
30: left, /* left on the page */
31: page; /* the pae we are on */
32:
33: lprnote (io, lprfile, toc, notenum, note, justtitle)
34: struct io_f *io;
35: FILE * lprfile, *toc;
36: struct note_f *note;
37: {
38: struct resp_f rsprec;
39: int roffset,
40: rblock;
41: char line[CMDLEN];
42: int i;
43: char ztime[DATELEN];
44:
45: if (left < NOTENEED) /* room for header and some text? */
46: pagebreak (lprfile); /* make it that way */
47:
48: if (strcmp (note -> n_auth.asystem, Authsystem) &&
49: strcmp ("Anonymous", note -> n_auth.aname))
50: {
51: #ifdef USERHOST
52: sprintf (line, "%s@%s", note -> n_auth.aname, note -> n_auth.asystem);
53: #else
54: sprintf (line, "%s!%s", note -> n_auth.asystem, note -> n_auth.aname);
55: #endif USERHOST
56: }
57: else
58: sprintf (line, "%s", note -> n_auth.aname);
59: sprdate (¬e -> n_date, ztime); /* format date */
60:
61: fprintf (toc, "%3d%s ", notenum, note -> n_stat & DIRMES ? "(*)" : " ");
62: fprintf (toc, "%-*s", TITLEN, note -> ntitle);
63: fprintf (toc, "%-*s %-*s", SYSSZ + NAMESZ + 2, line, DATELEN, ztime);
64: if (!justtitle) /* no page for titles only */
65: fprintf (toc, " %d", page);
66: putc ('\n', toc); /* end the line */
67:
68: /*
69: * only proceed if we are dumping text. Otherwise we stop with
70: * just the table of contents entry
71: */
72:
73: if (justtitle) /* no text output */
74: return;
75:
76: fprintf (lprfile, "\n==== ==== ==== ==== ==== ==== ====\n");
77: fprintf (lprfile, "Note %-3d %s ", notenum,
78: note -> n_stat & DIRMES ? "(*)" : " ");
79: fprintf (lprfile, "%-*s", TITLEN, note -> ntitle); /* title */
80:
81: if (note -> n_nresp)
82: fprintf (lprfile, " %d response%c", note -> n_nresp,
83: note -> n_nresp > 1 ? 's' : ' ');
84: putc ('\n', lprfile);
85:
86: fprintf (lprfile, "%-*s", SYSSZ + NAMESZ + 1, line);
87:
88: fprintf (lprfile, " %s\n\n", ztime);
89:
90: left -= 5; /* count off the header lines */
91:
92: left -= pageout (io, ¬e -> n_addr, lprfile); /* dump text */
93:
94: while (left < 0)
95: {
96: page++;
97: left += length;
98: }
99:
100:
101: for (i = 1; i <= note -> n_nresp; i++) /* dump responses */
102: {
103: if (lrsp (io, notenum, i, &rsprec, &roffset, &rblock) == -1)
104: break; /* bad chain */
105: lprresp (io, lprfile, toc, notenum, i, &rsprec, roffset);
106: }
107: }
108:
109: /*
110: *
111: * dump a response to a "pr" stream.
112: */
113:
114: lprresp (io, lprfile, toc, notenum, respnum, rsprec, phys)
115: struct io_f *io;
116: FILE * lprfile,
117: *toc;
118: struct resp_f *rsprec;
119: {
120: char ztime[DATELEN];
121: char line[CMDLEN];
122:
123: if (left < RESPNEED) /* room on page? */
124: pagebreak (lprfile);
125:
126: if (strcmp (rsprec -> r_auth[phys].asystem, Authsystem) &&
127: strcmp ("Anonymous", rsprec -> r_auth[phys].aname))
128: {
129: #ifdef USERHOST
130: sprintf (line, "%s@%s", rsprec -> r_auth[phys].aname,
131: rsprec -> r_auth[phys].asystem);
132: #else
133: sprintf (line, "%s!%s", rsprec -> r_auth[phys].asystem,
134: rsprec -> r_auth[phys].aname);
135: #endif USERHOST
136: }
137: else
138: sprintf (line, "%s", rsprec -> r_auth[phys].aname);
139: sprdate (&rsprec -> r_when[phys], ztime);
140: fprintf (lprfile, "\n==== ==== ====\n");
141: fprintf (lprfile, "Response %-4d to Note %-4d\n\t%-*s %-*s\n\n",
142: respnum, notenum, SYSSZ + NAMESZ + 2, line, DATELEN, ztime);
143:
144: left -= 5; /* count the header */
145:
146: left -= pageout (io, &rsprec -> r_addr[phys], lprfile);
147:
148: while (left < 0)
149: {
150: page++;
151: left += length;
152: }
153: }
154:
155: /*
156: * force a page break
157: */
158:
159: pagebreak (zfile)
160: FILE * zfile;
161: {
162: putc ('\f', zfile); /* form feed */
163: page++;
164: left = length;
165: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.