BSD 4_3 development
[unix-history] / usr / contrib / rn / inews.c.2.pat
CommitLineData
9c4b96b4
C
1*** inews.old.c Tue Apr 30 14:34:19 1985
2--- inews.c Tue Apr 30 14:34:33 1985
3***************
4*** 416,421
5 /*
6 * Link ARTICLE into dir for ngname and update active file.
7 */
8 localize(ngname)
9 char *ngname;
10 {
11
12--- 416,424 -----
13 /*
14 * Link ARTICLE into dir for ngname and update active file.
15 */
16+ #ifdef DOXREFS
17+ long
18+ #endif
19 localize(ngname)
20 char *ngname;
21 {
22***************
23*** 453,458
24 mknewsg(cp, ngname);
25
26 sprintf(bfr, "%s/%ld", cp, ngsize+1);
27 #ifdef VMS
28 if ((f2 = creat(bfr, 0666)) >=0 ) {
29 f1 = open(article, 0);
30
31--- 456,466 -----
32 mknewsg(cp, ngname);
33
34 sprintf(bfr, "%s/%ld", cp, ngsize+1);
35+ #ifdef LINKART
36+ if (mylink(ARTICLE, bfr) == 0) break;
37+ /* on first file inits ARTICLE, on subsequent */
38+ /* files "links" to first article */
39+ #else !LINKART
40 #ifdef VMS
41 if ((f2 = creat(bfr, 0666)) >=0 ) {
42 f1 = open(article, 0);
43***************
44*** 468,473
45 if (link(ARTICLE, bfr) == 0)
46 break;
47 #endif !VMS
48 e = errno; /* keep log from clobbering it */
49 logerr("Cannot install article as %s", bfr);
50 if (e != EEXIST) {
51
52--- 476,482 -----
53 if (link(ARTICLE, bfr) == 0)
54 break;
55 #endif !VMS
56+ #endif !LINKART
57 e = errno; /* keep log from clobbering it */
58 logerr("Cannot install article as %s", bfr);
59 if (e != EEXIST) {
60***************
61*** 494,499
62 strcpy(firstbufname, bfr);
63 sprintf(bfr, "%s/%ld ", ngname, ngsize+1);
64 addhist(bfr);
65 return TRUE;
66 }
67
68
69--- 503,509 -----
70 strcpy(firstbufname, bfr);
71 sprintf(bfr, "%s/%ld ", ngname, ngsize+1);
72 addhist(bfr);
73+ #ifndef DOXREFS
74 return TRUE;
75 #else DOXREFS
76 return ngsize+1;
77***************
78*** 495,500
79 sprintf(bfr, "%s/%ld ", ngname, ngsize+1);
80 addhist(bfr);
81 return TRUE;
82 }
83
84 /*
85
86--- 505,513 -----
87 addhist(bfr);
88 #ifndef DOXREFS
89 return TRUE;
90+ #else DOXREFS
91+ return ngsize+1;
92+ #endif DOXREFS
93 }
94
95 /*
96***************
97*** 507,512
98 char c;
99 struct srec srec; /* struct for sys file lookup */
100 int is_invalid = FALSE;
101
102 /* Fill up the rest of header. */
103 if (mode != PROC) {
104
105--- 520,529 -----
106 char c;
107 struct srec srec; /* struct for sys file lookup */
108 int is_invalid = FALSE;
109+ #ifdef DOXREFS
110+ register char *nextxref = header.xref;
111+ int numxrefs = 0;
112+ #endif DOXREFS
113
114 /* Fill up the rest of header. */
115 if (mode != PROC) {
116***************
117*** 527,532
118 if (!is_ctl && mode != CREATENG)
119 is_invalid = ngfcheck(mode == PROC);
120
121 /* Write article to temp file. */
122 tfp = xfopen(mktemp(ARTICLE), "w");
123 if ( (c=getc(infp)) == ' ' || c == '\t' ) {
124
125--- 544,556 -----
126 if (!is_ctl && mode != CREATENG)
127 is_invalid = ngfcheck(mode == PROC);
128
129+ #ifdef LINKART
130+ *ARTICLE = '\0'; /* tell mylink() to snarf the name */
131+ #else !LINKART
132+ #ifdef DOXREFS
133+ /* Open temp file for article, but link before writing */
134+ tfp = xfopen(mktemp(ARTICLE), "w");
135+ #else DOXREFS
136 /* Write article to temp file. */
137 tfp = xfopen(mktemp(ARTICLE), "w");
138 if ( (c=getc(infp)) == ' ' || c == '\t' ) {
139***************
140*** 545,550
141 putc('\n',tfp);
142 fclose(tfp);
143 fclose(infp);
144
145 if (is_invalid) {
146 logerr("No valid newsgroups found, moved to junk");
147
148--- 569,576 -----
149 putc('\n',tfp);
150 fclose(tfp);
151 fclose(infp);
152+ #endif DOXREFS
153+ #endif LINKART
154
155 if (is_invalid) {
156 logerr("No valid newsgroups found, moved to junk");
157***************
158*** 550,555
159 logerr("No valid newsgroups found, moved to junk");
160 if (localize("junk"))
161 savehist(histline);
162 xxit(1);
163 }
164
165
166--- 576,582 -----
167 logerr("No valid newsgroups found, moved to junk");
168 if (localize("junk"))
169 savehist(histline);
170+ #ifndef DOXREFS
171 xxit(1);
172 #endif
173 }
174***************
175*** 551,556
176 if (localize("junk"))
177 savehist(histline);
178 xxit(1);
179 }
180
181 if (time((time_t)0) > (cgtdate(header.subdate) + DFLTEXP) ){
182
183--- 578,584 -----
184 savehist(histline);
185 #ifndef DOXREFS
186 xxit(1);
187+ #endif
188 }
189 #ifdef DOXREFS
190 else
191***************
192*** 552,558
193 savehist(histline);
194 xxit(1);
195 }
196!
197 if (time((time_t)0) > (cgtdate(header.subdate) + DFLTEXP) ){
198 logerr("Article too old, moved to junk");
199 if (localize("junk"))
200
201--- 580,588 -----
202 xxit(1);
203 #endif
204 }
205! #ifdef DOXREFS
206! else
207! #endif
208 if (time((time_t)0) > (cgtdate(header.subdate) + DFLTEXP) ){
209 logerr("Article too old, moved to junk");
210 if (localize("junk"))
211***************
212*** 557,562
213 logerr("Article too old, moved to junk");
214 if (localize("junk"))
215 savehist(histline);
216 xxit(1);
217 }
218
219
220--- 587,593 -----
221 logerr("Article too old, moved to junk");
222 if (localize("junk"))
223 savehist(histline);
224+ #ifndef DOXREFS
225 xxit(1);
226 #endif
227 }
228***************
229*** 558,563
230 if (localize("junk"))
231 savehist(histline);
232 xxit(1);
233 }
234
235 if (is_ctl) {
236
237--- 589,595 -----
238 savehist(histline);
239 #ifndef DOXREFS
240 xxit(1);
241+ #endif
242 }
243 #ifdef DOXREFS
244 else
245***************
246*** 559,565
247 savehist(histline);
248 xxit(1);
249 }
250!
251 if (is_ctl) {
252 control(&header);
253 localize("control");
254
255--- 591,599 -----
256 xxit(1);
257 #endif
258 }
259! #ifdef DOXREFS
260! else
261! #endif
262 if (is_ctl) {
263 #ifndef DOXREFS
264 control(&header);
265***************
266*** 561,566
267 }
268
269 if (is_ctl) {
270 control(&header);
271 localize("control");
272 } else {
273
274--- 595,601 -----
275 else
276 #endif
277 if (is_ctl) {
278+ #ifndef DOXREFS
279 control(&header);
280 #endif
281 localize("control");
282***************
283*** 562,567
284
285 if (is_ctl) {
286 control(&header);
287 localize("control");
288 } else {
289 if (s_find(&srec, FULLSYSNAME) == FALSE)
290
291--- 597,603 -----
292 if (is_ctl) {
293 #ifndef DOXREFS
294 control(&header);
295+ #endif
296 localize("control");
297 } else {
298 if (s_find(&srec, FULLSYSNAME) == FALSE)
299***************
300*** 566,571
301 } else {
302 if (s_find(&srec, FULLSYSNAME) == FALSE)
303 xerror("Cannot find my name '%s' in %s", FULLSYSNAME, SUBFILE);
304 for (ptr = nbuf; *ptr;) {
305 if (ngmatch(ptr, srec.s_nbuf) || index(ptr,'.') == NULL)
306 localize(ptr);
307
308--- 602,611 -----
309 } else {
310 if (s_find(&srec, FULLSYSNAME) == FALSE)
311 xerror("Cannot find my name '%s' in %s", FULLSYSNAME, SUBFILE);
312+ #ifdef DOXREFS
313+ sprintf(nextxref,"%s ",FULLSYSNAME);
314+ nextxref += strlen(nextxref);
315+ #endif
316 for (ptr = nbuf; *ptr;) {
317 #ifndef DOXREFS
318 if (ngmatch(ptr, srec.s_nbuf) || index(ptr,'.') == NULL)
319***************
320*** 567,572
321 if (s_find(&srec, FULLSYSNAME) == FALSE)
322 xerror("Cannot find my name '%s' in %s", FULLSYSNAME, SUBFILE);
323 for (ptr = nbuf; *ptr;) {
324 if (ngmatch(ptr, srec.s_nbuf) || index(ptr,'.') == NULL)
325 localize(ptr);
326 while (*ptr++)
327
328--- 607,613 -----
329 nextxref += strlen(nextxref);
330 #endif
331 for (ptr = nbuf; *ptr;) {
332+ #ifndef DOXREFS
333 if (ngmatch(ptr, srec.s_nbuf) || index(ptr,'.') == NULL)
334 localize(ptr);
335 #else DOXREFS
336***************
337*** 569,574
338 for (ptr = nbuf; *ptr;) {
339 if (ngmatch(ptr, srec.s_nbuf) || index(ptr,'.') == NULL)
340 localize(ptr);
341 while (*ptr++)
342 ;
343 }
344
345--- 610,624 -----
346 #ifndef DOXREFS
347 if (ngmatch(ptr, srec.s_nbuf) || index(ptr,'.') == NULL)
348 localize(ptr);
349+ #else DOXREFS
350+ if (ngmatch(ptr, srec.s_nbuf) ||
351+ index(ptr,'.') == NULL) {
352+ sprintf(nextxref,"%s:%ld ",ptr,localize(ptr));
353+ numxrefs++;
354+ while (*nextxref)
355+ nextxref++;
356+ }
357+ #endif DOXREFS
358 while (*ptr++)
359 ;
360 }
361***************
362*** 577,582
363 localize("junk");
364 }
365 }
366
367 broadcast();
368 savehist(histline);
369
370--- 627,638 -----
371 localize("junk");
372 }
373 }
374+ #ifdef DOXREFS
375+ if (numxrefs >= 2)
376+ *(nextxref-1) = '\0'; /* wipe out the last space */
377+ else
378+ header.xref[0] = '\0'; /* wipe out the whole thing */
379+ #endif
380
381 #ifdef LINKART
382 tfp = xfopen(ARTICLE,"w"); /* open 1st article localized */
383***************
384*** 578,583
385 }
386 }
387
388 broadcast();
389 savehist(histline);
390 xxit(0);
391
392--- 634,669 -----
393 header.xref[0] = '\0'; /* wipe out the whole thing */
394 #endif
395
396+ #ifdef LINKART
397+ tfp = xfopen(ARTICLE,"w"); /* open 1st article localized */
398+ #endif
399+
400+ #if defined(LINKART) || defined(DOXREFS)
401+ /* Now that xref is constructed, write article to temp file. */
402+ /* (We ought to detect no room at this point and clean up.) */
403+ if ( (c=getc(infp)) == ' ' || c == '\t' ) {
404+ header.intnumlines++;
405+ sprintf(header.numlines,"%d",header.intnumlines);
406+ }
407+ lhwrite(&header, tfp);
408+ /* Kludge to get around article truncation problem */
409+ if (c == ' ' || c == '\t' )
410+ putc('\n', tfp);
411+ putc(c,tfp);
412+ while (fgets(bfr, BUFLEN, infp) != NULL)
413+ fputs(bfr, tfp);
414+
415+ if (bfr[strlen(bfr)-1] != '\n')
416+ putc('\n',tfp);
417+ fclose(tfp);
418+ fclose(infp);
419+ #endif LINKART || DOXREFS
420+
421+ #ifdef DOXREFS
422+ if (is_ctl) /* moved here cuz checkgroups uses ARTICLE! */
423+ control(&header);
424+ #endif
425+
426 broadcast();
427 savehist(histline);
428 xxit(0);
429***************
430*** 853,855
431 }
432 return(NULL);
433 }
434
435--- 939,963 -----
436 }
437 return(NULL);
438 }
439+
440+ #ifdef LINKART
441+ mylink(tmpart,linkfrom)
442+ char *tmpart, *linkfrom;
443+ {
444+ struct stat statbuf;
445+
446+ if (stat(linkfrom,&statbuf)==0)
447+ return -1;
448+ if (!*tmpart) /* first article? */
449+ strcpy(tmpart,linkfrom); /* just remember name */
450+ else {
451+ FILE *linkfp = fopen(linkfrom,"w");
452+
453+ if (!linkfp)
454+ return -1;
455+ fprintf(linkfp,"%s\n",tmpart); /* do "symbolic link" */
456+ fclose(linkfp);
457+ }
458+ return 0;
459+ }
460+ #endif LINKART