[news.software.b] Patch 11 breaks expire

imtsft@imt3b2.UUCP (IMT) (10/20/87)

Come on folks! How about testing the patches to usenet software BEFORE they
go out. Patch 11 broke expire on systems that do not have dbm and use the
history file (as is the normal case) for expiring articles. Expire builds
a NARTFILE during the expiration process and then attempts to read the
ARTFILE to rebuild the history subfiles. This ONLY works when an ARTFILE
exists. The result is that a message indicating a non existing file
(/usr/lib/news/history) is produced and your current history (history.d/*)
is gone (all zero length files). Prior to Patch 11, the NARTFILE was
renamed to ARTFILE before the rebuild. Patch 11 took it out.
This puts it back in.


*** expire.c.old	Tue Oct 20 01:20:46 1987
--- expire.c	Tue Oct 20 01:23:08 1987
***************
*** 767,772
  	if (dorebuild || !nohistory) {
  #ifdef DBM
  		(void) rename(ARTFILE, OARTFILE);
  		(void) rename(NARTFILE, ARTFILE);
  		if (dorebuild)
  			rebuilddbm( );

--- 767,773 -----
  	if (dorebuild || !nohistory) {
  #ifdef DBM
  		(void) rename(ARTFILE, OARTFILE);
+ #endif /* !DBM */
  		(void) rename(NARTFILE, ARTFILE);
  #ifdef DBM
  		if (dorebuild)
***************
*** 768,773
  #ifdef DBM
  		(void) rename(ARTFILE, OARTFILE);
  		(void) rename(NARTFILE, ARTFILE);
  		if (dorebuild)
  			rebuilddbm( );
  		else {

--- 769,775 -----
  		(void) rename(ARTFILE, OARTFILE);
  #endif /* !DBM */
  		(void) rename(NARTFILE, ARTFILE);
+ #ifdef DBM
  		if (dorebuild)
  			rebuilddbm( );
  		else {

--- end of diffs

------------------------------------------------------------------------------
name	: IMT (Group Administrator)
email	: ...(ccicpg|peregrine)!imt3b2!imtsft
------------------------------------------------------------------------------
-- 
---
Paul Czarnik
---
 

sverre@fesk.UUCP (Sverre Froyen) (10/21/87)

in article <3070@imt3b2.UUCP>, imtsft@imt3b2.UUCP (IMT) says:
> Come on folks! How about testing the patches to usenet software BEFORE they
> go out. Patch 11 broke expire on systems that do not have dbm and use the
> history file (as is the normal case) for expiring articles. Expire builds
> a NARTFILE during the expiration process and then attempts to read the
> ARTFILE to rebuild the history subfiles. This ONLY works when an ARTFILE
> exists. The result is that a message indicating a non existing file
> (/usr/lib/news/history) is produced and your current history (history.d/*)
> is gone (all zero length files). Prior to Patch 11, the NARTFILE was
> renamed to ARTFILE before the rebuild. Patch 11 took it out.
> This puts it back in.....

I think that you will find it is still broken: expire -r will likely
fail. Patch 10 introduced changes appearently in an effort to use
the file `history' as a scratch file rather than `nhistory' (ARTFILE
and NARTFILE above). The patch below completes this change.

*** save/expire.c	Mon Oct 19 08:49:07 1987
--- expire.c	Wed Oct 21 09:45:43 1987
***************
*** 361,366
  	} else {
  #ifdef DBM
  		ohfd = xfopen(ARTFILE, "r");
  #else
  		ohfd = nexthistfile((FILE *)NULL);
  #endif /* DBM */

--- 361,367 -----
  	} else {
  #ifdef DBM
  		ohfd = xfopen(ARTFILE, "r");
+ 		nhfd = xfopen(NARTFILE, "w");
  #else
  		ohfd = nexthistfile((FILE *)NULL);
  		nhfd = xfopen(ARTFILE, "w");
***************
*** 363,368
  		ohfd = xfopen(ARTFILE, "r");
  #else
  		ohfd = nexthistfile((FILE *)NULL);
  #endif /* DBM */
  		nhfd = xfopen(NARTFILE, "w");
  	}

--- 364,370 -----
  		nhfd = xfopen(NARTFILE, "w");
  #else
  		ohfd = nexthistfile((FILE *)NULL);
+ 		nhfd = xfopen(ARTFILE, "w");
  #endif /* DBM */
  	}
  
***************
*** 364,370
  #else
  		ohfd = nexthistfile((FILE *)NULL);
  #endif /* DBM */
- 		nhfd = xfopen(NARTFILE, "w");
  	}
  
  	dolock();

--- 366,371 -----
  		ohfd = nexthistfile((FILE *)NULL);
  		nhfd = xfopen(ARTFILE, "w");
  #endif /* DBM */
  	}
  
  	dolock();
-- 
Sverre Froyen
UUCP:   boulder!fesk!sverre, sunpeaks!seri!fesk!sverre
ARPA:   froyen@nmfecc.arpa
BITNET: froyen@csugold.bitnet

rsk@s.cc.purdue.edu (Rich Kulawiec) (10/22/87)

In article <3070@imt3b2.UUCP> imtsft@imt3b2.UUCP (IMT) writes:
>Come on folks! How about testing the patches to usenet software BEFORE they
>go out. Patch 11 broke ... 

I assure you that Rick Adams tests things as thoroughly as possible before
sending them out, but I remind you that he is human and is capable of error.
Rather than blindly assuming that patches are not tested (which you have
done implicitly by asking this question) why not drop Rick a line and ask
him?  You could also ask him if he's aware of this particular problem,
and suggest a fix to him.

Rick is under a lot of pressure from all of us out here when it comes to
releasing changes/fixes to the news software.  I think it would be better
to work with him to solve problems such as this than to launch unjustified
criticisms in his direction.  Personallly, I think the work he's done on
the news software has been of excellent quality.
-- 
Rich Kulawiec, rsk@s.cc.purdue.edu, s.cc.purdue.edu!rsk
PUCC News Person