[news.software.b] Rn patch for faster news reading

zeeff@b-tech.ann-arbor.mi.us (Jon Zeeff) (02/20/89)

This is a small unofficial patch for rn to make the '=' command start 
where you left off.  You can use ^ to return to the top.  

When presented with a large number of unread articles, I like to hit 
=, pick and read a subject thread, and then hit = aqain to find 
another.  When I hit the bottom, I 'c' catchup to remove everything I 
didn't read.  The problem is that = always starts with the first 
unread article, not where you left off.  Maybe there is another way to 
do this, but I didn't see it.  

diff -c ../backup/bits.h ./bits.h
*** ../backup/bits.h	Sun Feb 19 14:18:39 1989
--- ./bits.h	Sun Feb 19 15:14:09 1989
***************
*** 42,47 ****
--- 42,48 ----
  
  EXT ART_NUM absfirst INIT(0);	/* 1st real article in current newsgroup */
  EXT ART_NUM firstart INIT(0);	/* minimum unread article number in newsgroup */
+ EXT ART_NUM req_art INIT(0);	/* last requested article number in newsgroup */
  EXT ART_NUM firstbit INIT(0);	/* minimum valid bit, usually == firstart */
  EXT ART_NUM lastart INIT(0);	/* maximum article number in newsgroup */
  
diff -c ../backup/ng.c ./ng.c
*** ../backup/ng.c	Sun Feb 19 14:14:32 1989
--- ./ng.c	Sun Feb 19 15:14:10 1989
***************
*** 181,187 ****
      
      in_ng = TRUE;			/* tell the world we are here */
      forcelast = TRUE;			/* if 0 unread, do not bomb out */
!     art=firstart;
      
      /* remember what newsgroup we were in for sake of posterity */
  
--- 181,187 ----
      
      in_ng = TRUE;			/* tell the world we are here */
      forcelast = TRUE;			/* if 0 unread, do not bomb out */
!     art=req_art=firstart;
      
      /* remember what newsgroup we were in for sake of posterity */
  
***************
*** 586,591 ****
--- 586,592 ----
  	case NN_ASK:
  	    return AS_ASK;
  	case NN_REREAD:
+ 	    req_art = art;
  	    reread = TRUE;
  #ifdef ARTSEARCH
  	    if (srchahead)
***************
*** 786,792 ****
  	if (!subj_list)
  	    fetchsubj(art,TRUE,FALSE);
  #endif
! 	for (i=firstart; i<=lastart && !int_count; i++) {
  #ifdef CACHESUBJ
  	    if (!was_read(i) &&
  	      (subj_list[OFFSET(i)] != Nullch || fetchsubj(i,FALSE,FALSE)) &&
--- 787,793 ----
  	if (!subj_list)
  	    fetchsubj(art,TRUE,FALSE);
  #endif
! 	for (i=req_art; i<=lastart && !int_count; i++) {
  #ifdef CACHESUBJ
  	    if (!was_read(i) &&
  	      (subj_list[OFFSET(i)] != Nullch || fetchsubj(i,FALSE,FALSE)) &&
***************
*** 827,833 ****
  	return AS_ASK;
      }
      case '^':
! 	art = firstart;
  #ifdef ARTSEARCH
  	srchahead = 0;
  #endif
--- 828,834 ----
  	return AS_ASK;
      }
      case '^':
! 	art = req_art = firstart;
  #ifdef ARTSEARCH
  	srchahead = 0;
  #endif

-- 
  Jon Zeeff			zeeff@b-tech.ann-arbor.mi.us
  Ann Arbor, MI			mailrus!b-tech!zeeff