[net.sources.bugs] rn bug #28

lwall@sdcrdcf.UUCP (Larry Wall) (12/01/84)

System: rn version 4.1
Bug #: 28
Priority: LOW
Subject: rn doesn't find new articles as quickly as it should on 4.2

Description:
	Rn tries to discard the current buffer from the active file whenever
	it wants to find the size of a newsgroup, but the discard isn't
	successful most of the time on 4.2 because stdio buffers grew, and
	fseeking forward 1024 bytes doesn't usually get out of the current
	buffer.

Repeat-By:
	If you find that you have to exit a newsgroup and re-enter to get
	rn to see a new article, you have the problem.  In particular, you
	ought to be seeing your own followups without having to exit the
	newsgroup.

Fix:	From rn, say "| patch -d DIR", where DIR is your rn source directory.
	Outside of rn, say "cd DIR; patch <thisarticle".  If you don't have
	the patch program, apply the following by hand, or get patch.

Index: ngdata.c
Prereq: 4.1.1.2
***************
*** 1,4
! /* $Header: ngdata.c,v 4.1.1.2 84/10/12 15:23:46 lwall Exp $
   *
   * $Log:	ngdata.c,v $
   * Revision 4.1.1.2  84/10/12  15:23:46  lwall

--- 1,4 -----
! /* $Header: ngdata.c,v 4.1.1.3 84/11/30 15:11:47 lwall Exp $
   *
   * $Log:	ngdata.c,v $
   * Revision 4.1.1.3  84/11/30  15:11:47  lwall
***************
*** 1,6
  /* $Header: ngdata.c,v 4.1.1.2 84/10/12 15:23:46 lwall Exp $
   *
   * $Log:	ngdata.c,v $
   * Revision 4.1.1.2  84/10/12  15:23:46  lwall
   * s/atoi/atol/ where necessary.
   * 

--- 1,10 -----
  /* $Header: ngdata.c,v 4.1.1.3 84/11/30 15:11:47 lwall Exp $
   *
   * $Log:	ngdata.c,v $
+  * Revision 4.1.1.3  84/11/30  15:11:47  lwall
+  * getngsize wasn't dumping buffer on 4.2 because the buffer size grew
+  * beyond 1024.
+  * 
   * Revision 4.1.1.2  84/10/12  15:23:46  lwall
   * s/atoi/atol/ where necessary.
   * 
***************
*** 68,74
      nam = rcline[num];
      len = rcnums[num] - 1;
      softtries++;
!     fseek(actfp,1024L,1);	/* hopefully this forces a reread */
  #ifdef DEBUGGING
      if (debug & DEB_SOFT_POINTERS)
  	printf("Softptr = %ld\n",(long)softptr[num]);

--- 72,78 -----
      nam = rcline[num];
      len = rcnums[num] - 1;
      softtries++;
!     fseek(actfp,100000L,1);	/* hopefully this forces a reread */
  #ifdef DEBUGGING
      if (debug & DEB_SOFT_POINTERS)
  	printf("Softptr = %ld\n",(long)softptr[num]);