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]);