patch 41 to rn creating rn/rrn combo (1 of 3)

Stan Barber sob at bcm.tmc.edu
Sun Jan 7 22:04:28 AEST 1990


Description:
	This is an official patch for rn 4.3. It is the first official
	to originate from someone other than the author of rn, Larry
	Wall. Larry has agreed to allow me (Stan Barber) to maintain 
	patches to this version of rn until such time that a new release of
	rn is available. This one logical patch is actually composed of three
	physical patches numbered 41,42 and 43. Please install all of them if
	you intend to install any of them.

	If you missed the other parts, you can get them via the Archive Server
	by sending mail to "archive-server at bcm.tmc.edu" with the subject line
	"send public rn.42.patch" for patch #42 or "send public rn.43.patch"
	for patch #43. 

	Comments or other fixes should be sent to rrn at lib.tmc.edu.

	This patch fixes the following:
	a. Official support of NNTP. Once patched, the source will compile
	for either a standard news environment or one that uses NNTP.
	b. Supports SunOS 4.X and Ultrix such that manual changes are no
	longer needed once you have used Configure to set up the environment.
	c. Support for domain names. This patch will support real domain names
	so that internet sites don't have to be something.UUCP as well as their
	real and correct name.
	d. Improved support for changes in window sizes. If you are reading
	news with rn in a workstation window and resize the screen, rn will
	resize, too.
	e. Increased the size of some internal buffers to cope with the number
	of newsgroups in today's USENET. Also, updated the documentation and
	help files to reflect the news hierarchy today.

	NOTE: Even if you don't intented to use RRN, you will still want to
	apply this patch to take advantage of all the bug fixes.

	

Fix:
	cd to your rn source directory and patch away

	NOTE: You must be running patch 2.0 with patches up though #12 to
	insure this will patch correctly. It is known for a fact that patch 2.0
	with patches up to #7 will fail.

Index: patchlevel
Prereq: 40
*** patchlevel	Mon Feb  2 17:24:23 1987
--- ../rn/patchlevel	Mon Nov  6 00:51:21 1989
***************
*** 1
! Patch #: 40

--- 1 -----
! Patch #: 41
Index: term.c
Prereq: 4.3.1.3
*** term.c	Fri Nov 21 16:39:32 1986
--- ../rn/term.c	Tue Nov 28 01:52:01 1989
***************
*** 1,4
! /* $Header: term.c,v 4.3.1.3 85/09/10 11:05:23 lwall Exp $
   *
   * $Log:	term.c,v $
   * Revision 4.3.1.3  85/09/10  11:05:23  lwall

--- 1,4 -----
! /* $Header: term.c,v 4.3.2.3 89/11/28 01:51:58 sob Locked $
   *
   * $Log:	term.c,v $
   * Revision 4.3.2.3  89/11/28  01:51:58  sob
***************
*** 1,6
  /* $Header: term.c,v 4.3.1.3 85/09/10 11:05:23 lwall Exp $
   *
   * $Log:	term.c,v $
   * Revision 4.3.1.3  85/09/10  11:05:23  lwall
   * Improved %m in in_char().
   * 

--- 1,16 -----
  /* $Header: term.c,v 4.3.2.3 89/11/28 01:51:58 sob Locked $
   *
   * $Log:	term.c,v $
+  * Revision 4.3.2.3  89/11/28  01:51:58  sob
+  * Now handles SIGWINCH correctly.
+  * 
+  * Revision 4.3.2.2  89/11/27  01:31:34  sob
+  * Altered NNTP code per ideas suggested by Bela Lubkin
+  * <filbo at gorn.santa-cruz.ca.us>
+  * 
+  * Revision 4.3.2.1  89/11/06  01:02:12  sob
+  * Added RRN support from NNTP 1.5
+  * 
   * Revision 4.3.1.3  85/09/10  11:05:23  lwall
   * Improved %m in in_char().
   * 
***************
*** 63,68
  void pushstring();
  #endif
  
  /* terminal initialization */
  
  void

--- 73,80 -----
  void pushstring();
  #endif
  
+ void line_col_calcs();
+ 
  /* terminal initialization */
  
  void
***************
*** 121,126
      char *tgetstr();
      char *s;
      int status;
  
  #ifdef PENDING
  #ifndef FIONREAD

--- 133,141 -----
      char *tgetstr();
      char *s;
      int status;
+ #ifdef TIOCGWINSZ
+     struct winsize winsize;
+ #endif
  
  #ifdef PENDING
  #ifndef FIONREAD
***************
*** 190,195
      }
      LINES = tgetnum("li");		/* lines per page */
      COLS = tgetnum("co");		/* columns on page */
      AM = tgetflag("am");		/* terminal wraps automatically? */
      XN = tgetflag("xn");		/* then eats next newline? */
      VB = Tgetstr("vb");

--- 205,220 -----
      }
      LINES = tgetnum("li");		/* lines per page */
      COLS = tgetnum("co");		/* columns on page */
+ 
+ #ifdef TIOCGWINSZ
+     { struct winsize ws;
+ 	if (ioctl(0, TIOCGWINSZ, &ws) >= 0 && ws.ws_row > 0 && ws.ws_col > 0) {
+ 	    LINES = ws.ws_row;
+ 	    COLS = ws.ws_col;
+ 	}
+     }
+ #endif
+ 	
      AM = tgetflag("am");		/* terminal wraps automatically? */
      XN = tgetflag("xn");		/* then eats next newline? */
      VB = Tgetstr("vb");
***************
*** 204,209
  	else
  	    CR = "\r";
      }
  #else
      ??????				/* Roll your own... */
  #endif

--- 229,240 -----
  	else
  	    CR = "\r";
      }
+ #ifdef TIOCGWINSZ
+ 	if (ioctl(1, TIOCGWINSZ, &winsize)>=0) {
+ 		if (winsize.ws_row>0) LINES=winsize.ws_row;
+ 		if (winsize.ws_col>0) COLS=winsize.ws_col;
+ 	}
+ #endif
  #else
      ??????				/* Roll your own... */
  #endif
***************
*** 207,229
  #else
      ??????				/* Roll your own... */
  #endif
!     if (LINES > 0) {			/* is this a crt? */
! 	if (!initlines)			/* no -i? */
! 	    if (ospeed >= B9600)	/* whole page at >= 9600 baud */
! 		initlines = LINES;
! 	    else if (ospeed >= B4800)	/* 16 lines at 4800 */
! 		initlines = 16;
! 	    else			/* otherwise just header */
! 		initlines = 8;
!     }
!     else {				/* not a crt */
! 	LINES = 30000;			/* so don't page */
! 	CL = "\n\n";			/* put a couple of lines between */
! 	if (!initlines)			/* make initlines reasonable */
! 	    initlines = 8;
!     }
!     if (COLS <= 0)
! 	COLS = 80;
      noecho();				/* turn off echo */
      crmode();				/* enter cbreak mode */
  

--- 238,244 -----
  #else
      ??????				/* Roll your own... */
  #endif
!     line_col_calcs();
      noecho();				/* turn off echo */
      crmode();				/* enter cbreak mode */
  
***************
*** 387,392
      ch = Null(char);
      ch = ch;
  #endif
  }
  
  /* input the 2nd and succeeding characters of a multi-character command */

--- 402,408 -----
      ch = Null(char);
      ch = ch;
  #endif
+     return((char) 0);
  }
  
  /* input the 2nd and succeeding characters of a multi-character command */
***************
*** 1023,1025
      }
  }
  #endif CLEAREOL

--- 1039,1089 -----
      }
  }
  #endif CLEAREOL
+ 
+ 
+ void
+ line_col_calcs()
+ {
+      if (LINES > 0) {			/* is this a crt? */
+ 	  if ((!initlines) || (!initlines_specified))
+ 	       /* no -i or unreasonable value for initlines */
+ 	       if (ospeed >= B9600) 	/* whole page at >= 9600 baud */
+ 		    initlines = LINES;
+ 	       else if (ospeed >= B4800)/* 16 lines at 4800 */
+ 		    initlines = 16;
+ 	       else			/* otherwise just header */
+ 		    initlines = 8;
+      }
+      else {				/* not a crt */
+ 	  LINES = 30000;		/* so don't page */
+ 	  CL = "\n\n";			/* put a couple of lines between */
+ 	  if ((!initlines) || (!initlines_specified))
+ 	       /* make initlines reasonable */
+ 	       initlines = 8;
+      }
+      if (COLS <= 0)
+ 	  COLS = 80;
+ }
+ 
+ 
+ #ifdef SIGWINCH
+ int
+ winch_catcher()
+ {
+      /* Come here if window size change signal received */
+ #ifdef TIOCGWINSZ
+      struct winsize ws;
+ 
+      if (ioctl(0, TIOCGWINSZ, &ws) >= 0 && ws.ws_row > 0 && ws.ws_col > 0) {
+           LINES = ws.ws_row;
+           COLS = ws.ws_col;
+           line_col_calcs();
+      }
+ #else
+      ???????
+      /* Well, if SIGWINCH is defined, but TIOCGWINSZ isn't, there's    */
+      /* almost certainly something wrong.  Figure it out for yourself, */
+      /* because I don't know now to deal :-)                           */
+ #endif
+ }
+ #endif
Index: range.c
*** range.c	Sun Dec 17 12:48:02 1989
--- ../rn/range.c	Wed Nov  8 03:45:43 1989
***************
*** 0

--- 1,56 -----
+ #ifndef lint
+ static char * rcsid ="$Header: range.c,v 1.1 89/11/08 03:45:39 sob Locked $";
+ #endif
+ /*
+ ***************************************************************************
+ This work in its current form is Copyright 1989 Stan Barber
+ This software may be distributed freely as long as no profit is made from
+ such distribution and this notice is reproducted in whole.
+ ***************************************************************************
+ This software is provided on an "as is" basis with no guarantee of 
+ usefulness or correctness of operation for any purpose, intended or
+ otherwise. The author is in no way liable for this software's performance
+ or any damage it may cause to any data of any kind anywhere.
+ ***************************************************************************
+ */
+ /*
+  * $Log:	range.c,v $
+  * Revision 1.1  89/11/08  03:45:39  sob
+  * Initial revision
+  * 
+  *
+  */
+ 
+ #include <stdio.h>
+ extern char *rindex();
+ char * progname;
+ 
+ main(argc,argv)
+ char *argv[];
+ int argc;
+ {
+     int x,y,i;
+ 
+ 
+     if ((progname = rindex(argv[0],'/'))== NULL)
+ 	    progname = argv[0];
+     else progname++;
+     
+ 
+     if (argc != 3) usage();
+     x = atoi(argv[1]);
+     y = atoi(argv[2]);
+     if (y < x) usage();
+     y++;
+ 
+     for (i=x;i < y;i++)
+ 	printf("%d ",i);
+     printf("\n");
+ 
+     exit(0);
+ }
+ 
+ usage(){
+     fprintf(stderr,"Usage: %s startnumber endnumber\n",progname);
+     exit(-1);
+ }
Index: bits.c
Prereq: 4.3.1.4
*** bits.c	Fri Nov 21 16:48:15 1986
--- ../rn/bits.c	Tue Nov 28 01:52:17 1989
***************
*** 1,4
! /* $Header: bits.c,v 4.3.1.4 86/10/31 15:23:53 lwall Exp $
   *
   * $Log:	bits.c,v $
   * Revision 4.3.1.4  86/10/31  15:23:53  lwall

--- 1,4 -----
! /* $Header: bits.c,v 4.3.2.3 89/11/28 01:52:02 sob Locked $
   *
   * $Log:	bits.c,v $
   * Revision 4.3.2.3  89/11/28  01:52:02  sob
***************
*** 1,6
  /* $Header: bits.c,v 4.3.1.4 86/10/31 15:23:53 lwall Exp $
   *
   * $Log:	bits.c,v $
   * Revision 4.3.1.4  86/10/31  15:23:53  lwall
   * Separated firstart into two variables so KILL on new articles won't
   * accidentally mark articles read.

--- 1,13 -----
  /* $Header: bits.c,v 4.3.2.3 89/11/28 01:52:02 sob Locked $
   *
   * $Log:	bits.c,v $
+  * Revision 4.3.2.3  89/11/28  01:52:02  sob
+  * Removed some lint.
+  * 
+  * Revision 4.3.2.2  89/11/27  01:30:04  sob
+  * Altered NNTP code per ideas suggested by Bela Lubkin
+  * <filbo at gorn.santa-cruz.ca.us>
+  * 
   * Revision 4.3.1.4  86/10/31  15:23:53  lwall
   * Separated firstart into two variables so KILL on new articles won't
   * accidentally mark articles read.
***************
*** 400,405
  	 * Xrefs correctly--each article need only match itself to be valid.
  	 */ 
  	if (inews_site == Nullch || strNE(tmpbuf,inews_site)) {
  	    char *t;
  
  	    if (inews_site != Nullch)

--- 407,413 -----
  	 * Xrefs correctly--each article need only match itself to be valid.
  	 */ 
  	if (inews_site == Nullch || strNE(tmpbuf,inews_site)) {
+ #ifndef NORELAY
  	    char *t;
  #endif
  	    if (inews_site != Nullch)
***************
*** 401,407
  	 */ 
  	if (inews_site == Nullch || strNE(tmpbuf,inews_site)) {
  	    char *t;
! 
  	    if (inews_site != Nullch)
  		free(inews_site);
  #ifndef NORELAY

--- 409,415 -----
  	if (inews_site == Nullch || strNE(tmpbuf,inews_site)) {
  #ifndef NORELAY
  	    char *t;
! #endif
  	    if (inews_site != Nullch)
  		free(inews_site);
  #ifndef NORELAY
***************
*** 416,422
             * to the use of the Relay-Version site name.
             */
            rver_buf = fetchlines(artnum,PATH_LINE);
!           if ((t = instr(rver_buf,"!")) == Nullch)
  #endif NORELAY
  		inews_site = savestr(nullstr);
  	    else {

--- 424,430 -----
             * to the use of the Relay-Version site name.
             */
            rver_buf = fetchlines(artnum,PATH_LINE);
!           if (instr(rver_buf,"!") == Nullch)
  #endif NORELAY
  		inews_site = savestr(nullstr);
  	    else {

Index: art.c
Prereq: 4.3.1.5
*** art.c	Mon Feb  2 17:24:25 1987
--- ../rn/art.c	Tue Nov  7 23:21:12 1989
***************
*** 1,4
! /* $Header: art.c,v 4.3.1.5 85/09/10 11:07:18 lwall Exp $
   *
   * $Log:	art.c,v $
   * Revision 4.3.1.5  85/09/10  11:07:18  lwall

--- 1,4 -----
! /* $Header: art.c,v 4.3.2.1 89/11/07 23:20:57 sob Locked $
   *
   * $Log:	art.c,v $
   * Revision 4.3.2.1  89/11/07  23:20:57  sob
***************
*** 1,6
  /* $Header: art.c,v 4.3.1.5 85/09/10 11:07:18 lwall Exp $
   *
   * $Log:	art.c,v $
   * Revision 4.3.1.5  85/09/10  11:07:18  lwall
   * %m not restored on some returns.
   * 

--- 1,9 -----
  /* $Header: art.c,v 4.3.2.1 89/11/07 23:20:57 sob Locked $
   *
   * $Log:	art.c,v $
+  * Revision 4.3.2.1  89/11/07  23:20:57  sob
+  * Bug fixes for NNTP
+  * 
   * Revision 4.3.1.5  85/09/10  11:07:18  lwall
   * %m not restored on some returns.
   * 
***************
*** 104,110
      if (fstat(artfp->_file,&filestat))
  			    /* get article file stats */
  	return DA_CLEAN;
!     if (filestat.st_mode & S_IFMT != S_IFREG)
  	return DA_NORM;
      artsize = filestat.st_size;
  			    /* from that get article size */

--- 107,113 -----
      if (fstat(artfp->_file,&filestat))
  			    /* get article file stats */
  	return DA_CLEAN;
!     if ((filestat.st_mode & S_IFMT) != S_IFREG)
  	return DA_NORM;
      artsize = filestat.st_size;
  			    /* from that get article size */
Index: kitlists.c
Prereq: 4.3
*** kitlists.c	Fri Nov 21 15:42:53 1986
--- ../rn/kitlists.c	Wed Nov  8 03:19:49 1989
***************
*** 1,4
! /* $Header: kitlists.c,v 4.3 85/05/01 11:42:08 lwall Exp $
   *
   * $Log:	kitlists.c,v $
   * Revision 4.3  85/05/01  11:42:08  lwall

--- 1,4 -----
! /* $Header: kitlists.c,v 4.3.2.1 89/11/08 03:19:35 sob Locked $
   *
   * $Log:	kitlists.c,v $
   * Revision 4.3.2.1  89/11/08  03:19:35  sob
***************
*** 1,6
  /* $Header: kitlists.c,v 4.3 85/05/01 11:42:08 lwall Exp $
   *
   * $Log:	kitlists.c,v $
   * Revision 4.3  85/05/01  11:42:08  lwall
   * Baseline for release with 4.3bsd.
   * 

--- 1,9 -----
  /* $Header: kitlists.c,v 4.3.2.1 89/11/08 03:19:35 sob Locked $
   *
   * $Log:	kitlists.c,v $
+  * Revision 4.3.2.1  89/11/08  03:19:35  sob
+  * Removed some dependencies.
+  * 
   * Revision 4.3  85/05/01  11:42:08  lwall
   * Baseline for release with 4.3bsd.
   * 
***************
*** 31,37
  ", argc > 1 ? argv[1] : "MANIFEST.new");
      inp = popen(buf,"r");
  
!     while (fgets(buf,1024,inp) != Nullch) {
  	s = index(buf,' ');
  	*s++ = '\0';
  	for (i=1;

--- 34,40 -----
  ", argc > 1 ? argv[1] : "MANIFEST.new");
      inp = popen(buf,"r");
  
!     while (fgets(buf,1024,inp) != (char *)NULL) {
  	s = index(buf,' ');
  	*s++ = '\0';
  	for (i=1;

Index: makedepend.SH
Prereq: 4.3.1.2
*** makedepend.SH	Fri Nov 21 16:23:27 1986
--- ../rn/makedepend.SH	Sun Dec 17 02:53:08 1989
***************
*** 1,5
  case $CONFIG in
!     '') . config.sh ;;
  esac
  echo "Extracting makedepend (with variable substitutions)"
  $spitshell >makedepend <<!GROK!THIS!

--- 1,5 -----
  case $CONFIG in
!     '') . ./config.sh ;;
  esac
  echo "Extracting makedepend (with variable substitutions)"
  $spitshell >makedepend <<!GROK!THIS!
***************
*** 4,10
  echo "Extracting makedepend (with variable substitutions)"
  $spitshell >makedepend <<!GROK!THIS!
  $startsh
! # $Header: makedepend.SH,v 4.3.1.2 85/05/13 15:53:42 lwall Exp $
  #
  # $Log:	makedepend.SH,v $
  # Revision 4.3.1.2  85/05/13  15:53:42  lwall

--- 4,10 -----
  echo "Extracting makedepend (with variable substitutions)"
  $spitshell >makedepend <<!GROK!THIS!
  $startsh
! # $Header: makedepend.SH,v 4.3.2.1 89/12/17 02:52:46 sob Exp $
  #
  # $Log:	makedepend.SH,v $
  # Revision 4.3.2.1  89/12/17  02:52:46  sob
***************
*** 7,12
  # $Header: makedepend.SH,v 4.3.1.2 85/05/13 15:53:42 lwall Exp $
  #
  # $Log:	makedepend.SH,v $
  # Revision 4.3.1.2  85/05/13  15:53:42  lwall
  # Made cpp look in /usr/local/include too.
  # 

--- 7,15 -----
  # $Header: makedepend.SH,v 4.3.2.1 89/12/17 02:52:46 sob Exp $
  #
  # $Log:	makedepend.SH,v $
+ # Revision 4.3.2.1  89/12/17  02:52:46  sob
+ # Will only read config.sh from local directory.
+ # 
  # Revision 4.3.1.2  85/05/13  15:53:42  lwall
  # Made cpp look in /usr/local/include too.
  # 

Index: mbox.saver.SH
*** mbox.saver.SH	Fri Nov 21 16:25:03 1986
--- ../rn/mbox.saver.SH	Tue Nov 28 00:06:38 1989
***************
*** 4,10
  echo "Extracting mbox.saver (with variable substitutions)"
  $spitshell >mbox.saver <<!GROK!THIS!
  $startsh
! # $Header: mbox.saver.SH,v 4.3.1.2 85/05/20 15:55:37 lwall Exp $
  # 
  # $Log:	mbox.saver.SH,v $
  # Revision 4.3.1.2  85/05/20  15:55:37  lwall

--- 4,10 -----
  echo "Extracting mbox.saver (with variable substitutions)"
  $spitshell >mbox.saver <<!GROK!THIS!
  $startsh
! # $Header: mbox.saver.SH,v 4.3.2.1 89/11/28 00:05:47 sob Locked $
  # 
  # $Log:	mbox.saver.SH,v $
  # Revision 4.3.2.1  89/11/28  00:05:47  sob
***************
*** 7,12
  # $Header: mbox.saver.SH,v 4.3.1.2 85/05/20 15:55:37 lwall Exp $
  # 
  # $Log:	mbox.saver.SH,v $
  # Revision 4.3.1.2  85/05/20  15:55:37  lwall
  # Turned $5 into \$5.
  # 

--- 7,15 -----
  # $Header: mbox.saver.SH,v 4.3.2.1 89/11/28 00:05:47 sob Locked $
  # 
  # $Log:	mbox.saver.SH,v $
+ # Revision 4.3.2.1  89/11/28  00:05:47  sob
+ # Branch for RN/RRN combo patches
+ # 
  # Revision 4.3.1.2  85/05/20  15:55:37  lwall
  # Turned $5 into \$5.
  # 
Index: newsetup.SH
Prereq: 4.3.1.2
*** newsetup.SH	Fri Nov 21 16:45:19 1986
--- ../rn/newsetup.SH	Tue Nov 28 01:16:17 1989
***************
*** 1,5
  case $CONFIG in
!     '') . config.sh ;;
  esac
  echo "Extracting newsetup (with variable substitutions)"
  $spitshell >newsetup <<!GROK!THIS!

--- 1,5 -----
  case $CONFIG in
!     '') . ./config.sh ;;
  esac
  echo "Extracting newsetup (with variable substitutions)"
  $spitshell >newsetup <<!GROK!THIS!
***************
*** 4,10
  echo "Extracting newsetup (with variable substitutions)"
  $spitshell >newsetup <<!GROK!THIS!
  $startsh
! # $Header: newsetup.SH,v 4.3.1.2 86/09/05 15:41:04 lwall Exp $
  # 
  # $Log:	newsetup.SH,v $
  # Revision 4.3.1.2  86/09/05  15:41:04  lwall

--- 4,10 -----
  echo "Extracting newsetup (with variable substitutions)"
  $spitshell >newsetup <<!GROK!THIS!
  $startsh
! # $Header: newsetup.SH,v 4.3.2.5 89/11/28 01:15:32 sob Locked $
  # 
  # $Log:	newsetup.SH,v $
  # Revision 4.3.2.5  89/11/28  01:15:32  sob
***************
*** 7,12
  # $Header: newsetup.SH,v 4.3.1.2 86/09/05 15:41:04 lwall Exp $
  # 
  # $Log:	newsetup.SH,v $
  # Revision 4.3.1.2  86/09/05  15:41:04  lwall
  # Changes for newsgroup renaming.
  # 

--- 7,25 -----
  # $Header: newsetup.SH,v 4.3.2.5 89/11/28 01:15:32 sob Locked $
  # 
  # $Log:	newsetup.SH,v $
+ # Revision 4.3.2.5  89/11/28  01:15:32  sob
+ # Fixed a bug that caused the active file to be removed on non-NNTP-based
+ # systems.
+ # 
+ # Revision 4.3.2.4  89/11/28  00:31:20  sob
+ # Changed news.announce.newuser to news.announce.newusers.
+ # 
+ # Revision 4.3.2.3  89/11/08  01:13:15  sob
+ # Finished modifications to make work with RN and RRN
+ # 
+ # Revision 4.3.2.2  89/11/07  23:25:50  sob
+ # Added support such that RN and RRN can be made from the same sources.
+ # 
  # Revision 4.3.1.2  86/09/05  15:41:04  lwall
  # Changes for newsgroup renaming.
  # 
***************
*** 32,38
  state="$statepref"
  cntry="$cntrypref"
  cont="$contpref"
! active="${active-/usr/lib/news/active}"
  
  dotdir="\${DOTDIR-\${HOME-\$LOGDIR}}"
  $rm -f \$dotdir/.oldnewsrc

--- 45,52 -----
  state="$statepref"
  cntry="$cntrypref"
  cont="$contpref"
! #NORMALactive="${active-/usr/lib/news/active}"
! #NNTPactive="/tmp/active.\$\$"
  
  dotdir="\${DOTDIR-\${HOME-\$LOGDIR}}"
  $rm -f \$dotdir/.oldnewsrc
***************
*** 38,46
  $rm -f \$dotdir/.oldnewsrc
  $echo "Creating .newsrc in \$dotdir to be used by news programs."
  
! case \$active in
! ~*) active=\`$filexp \$active\` ;;
! esac
  
  : NOTE: SED WILL NOT TAKE MORE THAN 10 WFILES, SO BEWARE
  

--- 52,61 -----
  $rm -f \$dotdir/.oldnewsrc
  $echo "Creating .newsrc in \$dotdir to be used by news programs."
  
! #NNTP$rnlib/getactive \$active
! #NORMALcase \$active in
! #NORMAL~*) active=\`$filexp \$active\` ;;
! #NORMALesac
  
  : NOTE: SED WILL NOT TAKE MORE THAN 10 WFILES, SO BEWARE
  
***************
*** 47,52
  $sort <\$active | $sed >/tmp/n.tmp\$\$	\\
  	-e 's/^\([^ ]*\) .*\$/\1:/'	\\
  	-e '/^control:/{'		\\
  	-e "  w /tmp/n.test\$\$"	\\
  	-e '  d'			\\
  	-e '}'				\\

--- 62,68 -----
  $sort <\$active | $sed >/tmp/n.tmp\$\$	\\
  	-e 's/^\([^ ]*\) .*\$/\1:/'	\\
  	-e '/^control:/{'		\\
+  	-e "  s/:/!/"	\\
  	-e "  w /tmp/n.test\$\$"	\\
  	-e '  d'			\\
  	-e '}'				\\
***************
*** 51,56
  	-e '  d'			\\
  	-e '}'				\\
  	-e '/^junk:/{'			\\
  	-e "  w /tmp/n.test\$\$"	\\
  	-e '  d'			\\
  	-e '}'				\\

--- 67,73 -----
  	-e '  d'			\\
  	-e '}'				\\
  	-e '/^junk:/{'			\\
+  	-e "  s/:/!/"	\\
  	-e "  w /tmp/n.test\$\$"	\\
  	-e '  d'			\\
  	-e '}'				\\
***************
*** 55,60
  	-e '  d'			\\
  	-e '}'				\\
  	-e '/test:/{'			\\
  	-e "  w /tmp/n.test\$\$"	\\
  	-e '  d'			\\
  	-e '}'				\\

--- 72,78 -----
  	-e '  d'			\\
  	-e '}'				\\
  	-e '/test:/{'			\\
+  	-e "  s/:/!/"	\\
  	-e "  w /tmp/n.test\$\$"	\\
  	-e '  d'			\\
  	-e '}'				\\
***************
*** 58,71
  	-e "  w /tmp/n.test\$\$"	\\
  	-e '  d'			\\
  	-e '}'				\\
- 	-e "/^net\./{"			\\
- 	-e "  w /tmp/n.net\$\$"		\\
- 	-e '  d'			\\
- 	-e '}'				\\
- 	-e "/^mod\./{"			\\
- 	-e "  w /tmp/n.mod\$\$"		\\
- 	-e '  d'			\\
- 	-e '}'				\\
  	-e "/^\$locorg\./{"		\\
  	-e "  w /tmp/n.\$locorg\$\$"	\\
  	-e '  d'			\\

--- 76,81 -----
  	-e "  w /tmp/n.test\$\$"	\\
  	-e '  d'			\\
  	-e '}'				\\
  	-e "/^\$locorg\./{"		\\
  	-e "  w /tmp/n.\$locorg\$\$"	\\
  	-e '  d'			\\
***************
*** 78,83
  	-e "  w /tmp/n.\$city\$\$"	\\
  	-e '  d'			\\
  	-e '}'				\\
  	-e "/^\$state\./{" 		\\
  	-e "  w /tmp/n.\$state\$\$"	\\
  	-e '  d'			\\

--- 88,97 -----
  	-e "  w /tmp/n.\$city\$\$"	\\
  	-e '  d'			\\
  	-e '}'				\\
+ 	-e "/^\$cntry\./{" 		\\
+ 	-e "  w /tmp/n.\$cntry\$\$"	\\
+ 	-e '  d'			\\
+ 	-e '}'				\\
  	-e "/^\$state\./{" 		\\
  	-e "  w /tmp/n.\$state\$\$"	\\
  	-e '  d'			\\
***************
*** 81,90
  	-e "/^\$state\./{" 		\\
  	-e "  w /tmp/n.\$state\$\$"	\\
  	-e '  d'			\\
- 	-e '}'				\\
- 	-e "/^fa\./{"			\\
- 	-e "  w /tmp/n.fa\$\$"		\\
- 	-e '  d'			\\
  	-e '}'
  
  $sed </tmp/n.tmp\$\$ >/tmp/n.local\$\$	\\

--- 95,100 -----
  	-e "/^\$state\./{" 		\\
  	-e "  w /tmp/n.\$state\$\$"	\\
  	-e '  d'			\\
  	-e '}'
  
  $sed </tmp/n.tmp\$\$ >/tmp/n.local\$\$	\\
***************
*** 88,97
  	-e '}'
  
  $sed </tmp/n.tmp\$\$ >/tmp/n.local\$\$	\\
- 	-e "/^\$cntry\./{" 		\\
- 	-e "  w /tmp/n.\$cntry\$\$"	\\
- 	-e '  d'			\\
- 	-e '}'				\\
  	-e "/^\$cont\./{" 		\\
  	-e "  w /tmp/n.\$cont\$\$"	\\
  	-e '  d'			\\

--- 98,103 -----
  	-e '}'
  
  $sed </tmp/n.tmp\$\$ >/tmp/n.local\$\$	\\
  	-e "/^\$cont\./{" 		\\
  	-e "  w /tmp/n.\$cont\$\$"	\\
  	-e '  d'			\\
***************
*** 95,101
  	-e "/^\$cont\./{" 		\\
  	-e "  w /tmp/n.\$cont\$\$"	\\
  	-e '  d'			\\
! 	-e '}'				\\
  	-e "/^to\./{"			\\
  	-e "  w /tmp/n.to\$\$"		\\
  	-e '  d'			\\

--- 101,109 -----
  	-e "/^\$cont\./{" 		\\
  	-e "  w /tmp/n.\$cont\$\$"	\\
  	-e '  d'			\\
! 	-e '}'
! 
! $sed </tmp/n.tmp\$\$ >/tmp/n.local\$\$	\\
  	-e "/^to\./{"			\\
  	-e "  s/:/!/"	\\
  	-e "  w /tmp/n.to\$\$"		\\
***************
*** 97,102
  	-e '  d'			\\
  	-e '}'				\\
  	-e "/^to\./{"			\\
  	-e "  w /tmp/n.to\$\$"		\\
  	-e '  d'			\\
  	-e '}'				\\

--- 105,111 -----
  
  $sed </tmp/n.tmp\$\$ >/tmp/n.local\$\$	\\
  	-e "/^to\./{"			\\
+ 	-e "  s/:/!/"	\\
  	-e "  w /tmp/n.to\$\$"		\\
  	-e '  d'			\\
  	-e '}'				\\
***************
*** 144,150
      /tmp/n.\$state\$\$ \\
      /tmp/n.\$cntry\$\$ \\
      /tmp/n.\$cont\$\$ \\
-     /tmp/n.mod\$\$ \\
      /tmp/n.news\$\$ \\
      /tmp/n.comp\$\$ \\
      /tmp/n.sci\$\$ \\

--- 153,158 -----
      /tmp/n.\$state\$\$ \\
      /tmp/n.\$cntry\$\$ \\
      /tmp/n.\$cont\$\$ \\
      /tmp/n.news\$\$ \\
      /tmp/n.comp\$\$ \\
      /tmp/n.sci\$\$ \\
***************
*** 152,159
      /tmp/n.soc\$\$ \\
      /tmp/n.misc\$\$ \\
      /tmp/n.talk\$\$ \\
-     /tmp/n.net\$\$ \\
-     /tmp/n.fa\$\$ \\
      /tmp/n.test\$\$ \\
  | $uniq >\$dotdir/.newsrc
  

--- 160,165 -----
      /tmp/n.soc\$\$ \\
      /tmp/n.misc\$\$ \\
      /tmp/n.talk\$\$ \\
      /tmp/n.test\$\$ \\
  | $uniq >\$dotdir/.newsrc
  
***************
*** 166,172
  	/tmp/n.\$state\$\$ \\
  	/tmp/n.\$cntry\$\$ \\
  	/tmp/n.\$cont\$\$ \\
- 	/tmp/n.mod\$\$ \\
  	/tmp/n.news\$\$ \\
  	/tmp/n.comp\$\$ \\
  	/tmp/n.sci\$\$ \\

--- 172,177 -----
  	/tmp/n.\$state\$\$ \\
  	/tmp/n.\$cntry\$\$ \\
  	/tmp/n.\$cont\$\$ \\
  	/tmp/n.news\$\$ \\
  	/tmp/n.comp\$\$ \\
  	/tmp/n.sci\$\$ \\
***************
*** 173,180
  	/tmp/n.soc\$\$ \\
  	/tmp/n.rec\$\$ \\
  	/tmp/n.talk\$\$ \\
- 	/tmp/n.net\$\$ \\
- 	/tmp/n.fa\$\$ \\
  	/tmp/n.misc\$\$ \\
  	/tmp/n.test\$\$
  

--- 178,183 -----
  	/tmp/n.soc\$\$ \\
  	/tmp/n.rec\$\$ \\
  	/tmp/n.talk\$\$ \\
  	/tmp/n.misc\$\$ \\
  	/tmp/n.test\$\$ 
  #NNTP$rm -f \$active
***************
*** 176,182
  	/tmp/n.net\$\$ \\
  	/tmp/n.fa\$\$ \\
  	/tmp/n.misc\$\$ \\
! 	/tmp/n.test\$\$
  
  $cat <<'EOH'
  Done.

--- 179,186 -----
  	/tmp/n.rec\$\$ \\
  	/tmp/n.talk\$\$ \\
  	/tmp/n.misc\$\$ \\
! 	/tmp/n.test\$\$ 
! #NNTP$rm -f \$active
  
  $cat <<'EOH'
  Done.
***************
*** 182,188
  Done.
  
  If you have never used the news system before, you may find the articles
! in mod.announce.newuser to be helpful.  There is also a manual entry for rn.
  
  To get rid of newsgroups you aren't interested in, use the 'u' command.
  Type h for help at any time while running rn.

--- 186,192 -----
  Done.
  
  If you have never used the news system before, you may find the articles
! in news.announce.newusers to be helpful.  There is also a manual entry for rn.
  
  To get rid of newsgroups you aren't interested in, use the 'u' command.
  Type h for help at any time while running rn.
***************
*** 188,192
  Type h for help at any time while running rn.
  EOH
  !GROK!THIS!
  $eunicefix newsetup
  chmod 755 newsetup

--- 192,201 -----
  Type h for help at any time while running rn.
  EOH
  !GROK!THIS!
+ case "$isrrn" in
+ define)  sed < newsetup -e '/^#NNTP/s/^#NNTP//' -e '/^#NORMAL/d' > newsetup.new ;;
+ *) sed < newsetup -e '/^#NNTP/d' -e '/^#NORMAL/s/^#NORMAL//' > newsetup.new ;;
+ esac
+ mv newsetup.new newsetup
  $eunicefix newsetup
  chmod 755 newsetup

Index: newsgroups.SH
*** newsgroups.SH	Fri Nov 21 15:42:50 1986
--- ../rn/newsgroups.SH	Wed Nov  8 01:13:38 1989
***************
*** 1,5
  case $CONFIG in
!     '') . config.sh ;;
  esac
  echo "Extracting newsgroups (with variable substitutions)"
  $spitshell >newsgroups <<!GROK!THIS!

--- 1,5 -----
  case $CONFIG in
!     '') . ./config.sh ;;
  esac
  echo "Extracting newsgroups (with variable substitutions)"
  $spitshell >newsgroups <<!GROK!THIS!
***************
*** 4,10
  echo "Extracting newsgroups (with variable substitutions)"
  $spitshell >newsgroups <<!GROK!THIS!
  $startsh
! # $Header: newsgroups.SH,v 4.3 85/05/01 11:43:27 lwall Exp $
  # 
  # $Log:	newsgroups.SH,v $
  # Revision 4.3  85/05/01  11:43:27  lwall

--- 4,10 -----
  echo "Extracting newsgroups (with variable substitutions)"
  $spitshell >newsgroups <<!GROK!THIS!
  $startsh
! # $Header: newsgroups.SH,v 4.3.2.4 89/11/08 01:13:35 sob Locked $
  # 
  # $Log:	newsgroups.SH,v $
  # Revision 4.3.2.4  89/11/08  01:13:35  sob
***************
*** 7,12
  # $Header: newsgroups.SH,v 4.3 85/05/01 11:43:27 lwall Exp $
  # 
  # $Log:	newsgroups.SH,v $
  # Revision 4.3  85/05/01  11:43:27  lwall
  # Baseline for release with 4.3bsd.
  # 

--- 7,25 -----
  # $Header: newsgroups.SH,v 4.3.2.4 89/11/08 01:13:35 sob Locked $
  # 
  # $Log:	newsgroups.SH,v $
+ # Revision 4.3.2.4  89/11/08  01:13:35  sob
+ # Finished modifications to make work with RN and RRN
+ # 
+ # Revision 4.3.2.3  89/11/07  22:58:04  sob
+ # Added final changes to allow rn and rrn to be built from same sources.
+ # 
+ # Revision 4.3.2.2  89/11/07  22:52:22  sob
+ # Added prelimiary support to allow both rrn and rn to be built from same
+ # sources.
+ # 
+ # Revision 4.3.2.1  89/11/06  01:04:39  sob
+ # Added RRN support from NNTP 1.5
+ # 
  # Revision 4.3  85/05/01  11:43:27  lwall
  # Baseline for release with 4.3bsd.
  # 
***************
*** 20,26
  : You might want to change pager to a "make column" program if you have one.
  : On the other hand, if your kernel does paging, cat would probably do.
  pager="${pager-/usr/ucb/more}"
! active="${active-/usr/lib/news/active}"
  
  : End of system dependencies, hopefully
  

--- 33,39 -----
  : You might want to change pager to a "make column" program if you have one.
  : On the other hand, if your kernel does paging, cat would probably do.
  pager="${pager-/usr/ucb/more}"
! #NORMALactive="${active-/usr/lib/news/active}"
  
  #NORMALcase \$active in
  #NORMAL~*) active=\`$filexp \$active\` ;;
***************
*** 22,27
  pager="${pager-/usr/ucb/more}"
  active="${active-/usr/lib/news/active}"
  
  : End of system dependencies, hopefully
  
  case \$active in

--- 35,46 -----
  pager="${pager-/usr/ucb/more}"
  #NORMALactive="${active-/usr/lib/news/active}"
  
+ #NORMALcase \$active in
+ #NORMAL~*) active=\`$filexp \$active\` ;;
+ #NORMALesac
+ 
+ #NNTPactive="/tmp/active.\$\$"
+ 
  : End of system dependencies, hopefully
  
  #NNTP$rnlib/getactive \$active
***************
*** 24,32
  
  : End of system dependencies, hopefully
  
! case \$active in
! ~*) active=\`$filexp \$active\` ;;
! esac
  
  if $test \$# -ge 2 ; then
      pager=$cat

--- 43,49 -----
  
  : End of system dependencies, hopefully
  
! #NNTP$rnlib/getactive \$active
  
  if $test \$# -ge 2 ; then
      pager=$cat
***************
*** 60,64
  	-e 'd' | \\
  $sort | \$pager
  !GROK!THIS!
  $eunicefix newsgroups
  chmod 755 newsgroups

--- 77,86 -----
  	-e 'd' | \\
  $sort | \$pager
  !GROK!THIS!
+ case "$isrrn" in
+ define)  sed < newsgroups -e '/^#NNTP/s/^#NNTP//' -e '/^#NORMAL/d' > newsgroups.new ;;
+ *) sed < newsgroups -e '/^#NNTP/d' -e '/^#NORMAL/s/^#NORMAL//' > newsgroups.new ;;
+ esac
+ mv newsgroups.new newsgroups
  $eunicefix newsgroups
  chmod 755 newsgroups

Index: newsnews.SH
*** newsnews.SH	Fri Nov 21 15:42:52 1986
--- ../rn/newsnews.SH	Sun Nov 26 18:29:26 1989
***************
*** 23,28
  her own message whenever something new happens to rn, and then the file
  will again be displayed, just once for each person.
  
! Larry Wall	sdcrdcf!lwall
  !GROK!THIS!
  $eunicefix newsnews

--- 23,28 -----
  her own message whenever something new happens to rn, and then the file
  will again be displayed, just once for each person.
  
! Larry Wall	lwall at jpl-devvax.jpl.nasa.gov
  !GROK!THIS!
  $eunicefix newsnews

Index: norm.saver.SH
*** norm.saver.SH	Fri Nov 21 16:25:04 1986
--- ../rn/norm.saver.SH	Tue Nov 28 00:08:32 1989
***************
*** 4,10
  echo "Extracting norm.saver (with variable substitutions)"
  $spitshell >norm.saver <<!GROK!THIS!
  $startsh
! # $Header: norm.saver.SH,v 4.3.1.2 85/05/20 15:56:24 lwall Exp $
  # 
  # $Log:	norm.saver.SH,v $
  # Revision 4.3.1.2  85/05/20  15:56:24  lwall

--- 4,10 -----
  echo "Extracting norm.saver (with variable substitutions)"
  $spitshell >norm.saver <<!GROK!THIS!
  $startsh
! # $Header: norm.saver.SH,v 4.3.2.1 89/11/28 00:08:01 sob Locked $
  # 
  # $Log:	norm.saver.SH,v $
  # Revision 4.3.2.1  89/11/28  00:08:01  sob
***************
*** 7,12
  # $Header: norm.saver.SH,v 4.3.1.2 85/05/20 15:56:24 lwall Exp $
  # 
  # $Log:	norm.saver.SH,v $
  # Revision 4.3.1.2  85/05/20  15:56:24  lwall
  # Turned $5 into \$5.
  # 

--- 7,15 -----
  # $Header: norm.saver.SH,v 4.3.2.1 89/11/28 00:08:01 sob Locked $
  # 
  # $Log:	norm.saver.SH,v $
+ # Revision 4.3.2.1  89/11/28  00:08:01  sob
+ # Branch for RN/RRN combo.
+ # 
  # Revision 4.3.1.2  85/05/20  15:56:24  lwall
  # Turned $5 into \$5.
  # 

Index: respond.c
Prereq: 4.3.1.5
*** respond.c	Fri Nov 21 16:39:16 1986
--- ../rn/respond.c	Sun Nov 26 18:25:46 1989
***************
*** 1,4
! /* $Header: respond.c,v 4.3.1.5 85/09/10 11:05:00 lwall Exp $
   *
   * $Log:	respond.c,v $
   * Revision 4.3.1.5  85/09/10  11:05:00  lwall

--- 1,4 -----
! /* $Header: respond.c,v 4.3.2.2 89/11/26 18:25:10 sob Locked $
   *
   * $Log:	respond.c,v $
   * Revision 4.3.2.2  89/11/26  18:25:10  sob
***************
*** 1,6
  /* $Header: respond.c,v 4.3.1.5 85/09/10 11:05:00 lwall Exp $
   *
   * $Log:	respond.c,v $
   * Revision 4.3.1.5  85/09/10  11:05:00  lwall
   * Improved %m in in_char().
   * 

--- 1,13 -----
  /* $Header: respond.c,v 4.3.2.2 89/11/26 18:25:10 sob Locked $
   *
   * $Log:	respond.c,v $
+  * Revision 4.3.2.2  89/11/26  18:25:10  sob
+  * Enlarged the size of the header buffer to accomodate long references lines.
+  * Fix provided by Joe Buck.
+  * 
+  * Revision 4.3.2.1  89/11/06  01:00:26  sob
+  * Added RRN support from NNTP 1.5
+  * 
   * Revision 4.3.1.5  85/09/10  11:05:00  lwall
   * Improved %m in in_char().
   * 
***************
*** 237,242
  	crmode();
      }
  s_bomb:
      if (chdir(spool) || chdir(ngdir)) {
  	printf(nocd,ngdir) FLUSH;
  	sig_catcher(0);

--- 244,252 -----
  	crmode();
      }
  s_bomb:
+ #ifdef SERVER
+     if (chdir(spool)) {
+ #else not SERVER
      if (chdir(spool) || chdir(ngdir)) {
  #endif SERVER
  	printf(nocd,ngdir) FLUSH;
***************
*** 238,243
      }
  s_bomb:
      if (chdir(spool) || chdir(ngdir)) {
  	printf(nocd,ngdir) FLUSH;
  	sig_catcher(0);
      }

--- 248,254 -----
      if (chdir(spool)) {
  #else not SERVER
      if (chdir(spool) || chdir(ngdir)) {
+ #endif SERVER
  	printf(nocd,ngdir) FLUSH;
  	sig_catcher(0);
      }
***************
*** 354,359
  followup()
  {
      bool incl_body = (*buf == 'F');
  
      artopen(art);
      tmpfp = fopen(headname,"w");

--- 365,371 -----
  followup()
  {
      bool incl_body = (*buf == 'F');
+     char hbuf[4*LBUFLEN];	/* four times the old size */
  
      artopen(art);
      tmpfp = fopen(headname,"w");
***************
*** 361,368
  	printf(cantcreate,headname) FLUSH;
  	return;
      }
!     interp(buf, (sizeof buf), getval("NEWSHEADER",NEWSHEADER));
!     fprintf(tmpfp,"%s",buf);
      if (incl_body && artfp != Nullfp) {
  #ifdef VERBOSE
  	if (verbose)

--- 373,380 -----
  	printf(cantcreate,headname) FLUSH;
  	return;
      }
!     interp(hbuf, (sizeof hbuf), getval("NEWSHEADER",NEWSHEADER));
!     fprintf(tmpfp,"%s",hbuf);
      if (incl_body && artfp != Nullfp) {
  #ifdef VERBOSE
  	if (verbose)
***************
*** 417,422
  #ifdef TERSE
  	fputs("\n(+cbreak)\n",stdout) FLUSH;
  #endif
      if (chdir(spool) || chdir(ngdir)) {
  	printf(nocd,ngdir) FLUSH;
  	sig_catcher(0);

--- 429,437 -----
  #ifdef TERSE
  	fputs("\n(+cbreak)\n",stdout) FLUSH;
  #endif
+ #ifdef SERVER
+     if (chdir(spool)) {
+ #else not SERVER
      if (chdir(spool) || chdir(ngdir)) {
  #endif SERVER
  	printf(nocd,ngdir) FLUSH;
***************
*** 418,423
  	fputs("\n(+cbreak)\n",stdout) FLUSH;
  #endif
      if (chdir(spool) || chdir(ngdir)) {
  	printf(nocd,ngdir) FLUSH;
  	sig_catcher(0);
      }

--- 433,439 -----
      if (chdir(spool)) {
  #else not SERVER
      if (chdir(spool) || chdir(ngdir)) {
+ #endif SERVER
  	printf(nocd,ngdir) FLUSH;
  	sig_catcher(0);
      }

Index: rn.1
Prereq: 4.3.1.5
*** rn.1	Fri Nov 21 16:39:24 1986
--- ../rn/rn.1	Sun Dec 17 02:18:24 1989
***************
*** 1,4
! ''' $Header: rn.1,v 4.3.1.5 85/09/10 11:05:55 lwall Exp $
  ''' 
  ''' $Log:	rn.1,v $
  ''' Revision 4.3.1.5  85/09/10  11:05:55  lwall

--- 1,4 -----
! ''' $Header: rn.1,v 4.3.1.7 89/11/28 00:28:10 sob Locked $
  ''' 
  ''' $Log:	rn.1,v $
  ''' Revision 4.3.1.7  89/11/28  00:28:10  sob
***************
*** 1,6
  ''' $Header: rn.1,v 4.3.1.5 85/09/10 11:05:55 lwall Exp $
  ''' 
  ''' $Log:	rn.1,v $
  ''' Revision 4.3.1.5  85/09/10  11:05:55  lwall
  ''' Improved %m in in_char().
  ''' 

--- 1,12 -----
  ''' $Header: rn.1,v 4.3.2.2 89/11/28 00:28:10 sob Locked $
  ''' 
  ''' $Log:	rn.1,v $
+ ''' Revision 4.3.2.2  89/11/28  00:28:10  sob
+ ''' Changed some usages of "say" and "saying" to "type" and "typing"
+ ''' 
+ ''' Revision 4.3.2.1  89/11/26  19:00:39  sob
+ ''' Added modifications to reflect reality.
+ ''' 
  ''' Revision 4.3.1.5  85/09/10  11:05:55  lwall
  ''' Improved %m in in_char().
  ''' 
***************
*** 61,66
  .ds R' '
  'br\}
  .TH RN 1 LOCAL
  .SH NAME
  rn - new read news program
  .SH SYNOPSIS

--- 67,73 -----
  .ds R' '
  'br\}
  .TH RN 1 LOCAL
+ .UC 6
  .SH NAME
  rn - new read news program
  .SH SYNOPSIS
***************
*** 173,179
  file.
  On the newsgroup selection level, the prompt looks like this:
  .Sp
! ******** 17 unread articles in net.blurfl\*(--read now? [ynq]
  .Sp
  and the following commands may be given at this level:
  .Ip y,SP 8

--- 180,186 -----
  file.
  On the newsgroup selection level, the prompt looks like this:
  .Sp
! ******** 17 unread articles in talk.blurfl\*(--read now? [ynq]
  .Sp
  and the following commands may be given at this level:
  .Ip y,SP 8
***************
*** 216,223
  of characters to match.
  (\*(L"all\*(R" may be used as a synonym for \*(L"*\*(R".)
  Unlike normal filename globbing, newsgroup searching is not anchored to
! the front and back of the filename, i.e. \*(L"/jok\*(R" will find
! net.jokes.
  You may use ^ or $ to anchor the front or back of the search:
  \*(L"/^test$\*(R" will find newsgroup test and nothing else
  If you want to include newsgroups with 0 unread articles, append /r.

--- 223,230 -----
  of characters to match.
  (\*(L"all\*(R" may be used as a synonym for \*(L"*\*(R".)
  Unlike normal filename globbing, newsgroup searching is not anchored to
! the front and back of the filename, i.e. \*(L"/ski\*(R" will find
! rec.skiing.
  You may use ^ or $ to anchor the front or back of the search:
  \*(L"/^test$\*(R" will find newsgroup test and nothing else
  If you want to include newsgroups with 0 unread articles, append /r.
***************
*** 245,251
  .fi
  .Sp
  (A bogus newsgroup is one that is not in the list of active newsgroups
! in the active file, which on most systems is /usr/lib/news/active.)
  .Ip "m name" 8
  Move the named newsgroup somewhere else in the
  .IR .newsrc .

--- 252,259 -----
  .fi
  .Sp
  (A bogus newsgroup is one that is not in the list of active newsgroups
! in the active file, which on most systems is /usr/lib/news/active unless
! you use NNTP.)
  .Ip "m name" 8
  Move the named newsgroup somewhere else in the
  .IR .newsrc .
***************
*** 292,298
  Escape to a subshell.
  One exclamation mark (!) leaves you in your own news directory.
  A double exclamation mark (!!) leaves you in the spool
! directory for news, which on most systems is /usr/spool/news.
  The environment variable SHELL will be used if defined.
  If
  .I command

--- 300,306 -----
  Escape to a subshell.
  One exclamation mark (!) leaves you in your own news directory.
  A double exclamation mark (!!) leaves you in the spool
! directory for news, which on most systems is /usr/spool/news that don't use NNTP.
  The environment variable SHELL will be used if defined.
  If
  .I command
***************
*** 462,468
  .Sp
  For example, to save all articles in a given newsgroup to the line printer
  and mark them read, use \*(L"/^/\||\|lpr:j\*(R".
! If you say \*(L"/^/K\||\|lpr:j\*(R", this will happen every time you enter the
  newsgroup.
  .Ip ?pattern 8
  Scan backward for article containing

--- 470,476 -----
  .Sp
  For example, to save all articles in a given newsgroup to the line printer
  and mark them read, use \*(L"/^/\||\|lpr:j\*(R".
! If you type \*(L"/^/K\||\|lpr:j\*(R", this will happen every time you enter the
  newsgroup.
  .Ip ?pattern 8
  Scan backward for article containing
***************
*** 571,577
  SAVEDIR will be used to generate the actual directory.
  If nothing is specified, then obviously both variables will be used.
  Since the current directory for rn while doing a save command is your
! private news directory, saying \*(L"s ./filename\*(R" will force the file
  to your news directory.
  Save commands are also run through % interpretation, so that you can
  say \*(L"s %O/filename\*(R" to save to the directory you were in when you ran

--- 579,585 -----
  SAVEDIR will be used to generate the actual directory.
  If nothing is specified, then obviously both variables will be used.
  Since the current directory for rn while doing a save command is your
! private news directory, typing \*(L"s ./filename\*(R" will force the file
  to your news directory.
  Save commands are also run through % interpretation, so that you can
  enter \*(L"s %O/filename\*(R" to save to the directory you were in when you ran
***************
*** 574,580
  private news directory, saying \*(L"s ./filename\*(R" will force the file
  to your news directory.
  Save commands are also run through % interpretation, so that you can
! say \*(L"s %O/filename\*(R" to save to the directory you were in when you ran
  .IR rn ,
  and \*(L"s %t\*(R" to save to a filename consisting of the Internet address
  of the sender.

--- 582,588 -----
  private news directory, typing \*(L"s ./filename\*(R" will force the file
  to your news directory.
  Save commands are also run through % interpretation, so that you can
! enter \*(L"s %O/filename\*(R" to save to the directory you were in when you ran
  .IR rn ,
  and \*(L"s %t\*(R" to save to a filename consisting of the Internet address
  of the sender.
***************
*** 740,746
  These options may be set on the command line, via the RNINIT
  environment variable, via a file pointed to by the RNINIT variable, or
  from within rn via the & command.
! Options may generally be unset by saying \*(L"+switch\*(R".
  Options include:
  .TP 5
  .B \-c

--- 748,754 -----
  These options may be set on the command line, via the RNINIT
  environment variable, via a file pointed to by the RNINIT variable, or
  from within rn via the & command.
! Options may generally be unset by typing \*(L"+switch\*(R".
  Options include:
  .TP 5
  .B \-c
***************
*** 1172,1178
  .Ip %p 8
  Your private news directory, normally ~/News.
  .Ip %P 8
! Public news spool directory, normally /usr/spool/news.
  .Ip %r 8
  Last reference on references line of current article (parent article id).
  .Ip %R 8

--- 1180,1186 -----
  .Ip %p 8
  Your private news directory, normally ~/News.
  .Ip %P 8
! Public news spool directory, normally /usr/spool/news on systems that don't use NNTP.
  .Ip %r 8
  Last reference on references line of current article (parent article id).
  .Ip %R 8
***************
*** 1283,1289
  .br
  References: %R
  .br
! Reply-To: %L@%H.UUCP (%N)
  .br
  Distribution: %D
  .br

--- 1291,1297 -----
  .br
  References: %R
  .br
! Reply-To: %L@%H (%N)
  .br
  Distribution: %D
  .br
***************
*** 1416,1422
  .Sp
  Newsgroups: %(%F=^$?%C:%F)
  .br
! Subject: %(%S=^$?%"\n\nSubject: ":Re: %S)
  .br
  Summary:
  .br

--- 1424,1430 -----
  .Sp
  Newsgroups: %(%F=^$?%C:%F)
  .br
! Subject: %(%S=^$?%"\en\enSubject: ":Re: %S)
  .br
  Summary:
  .br
***************
*** 1426,1432
  .br
  )Sender: 
  .br
! Reply-To: %L@%H.UUCP (%N)
  .br
  Followup-To: 
  .br

--- 1434,1440 -----
  .br
  )Sender: 
  .br
! Reply-To: %L@%H (%N)
  .br
  Followup-To: 
  .br
***************
*** 1430,1436
  .br
  Followup-To: 
  .br
! Distribution: %(%i=^$?%"\nDistribution: ":%D)
  .br
  Organization: %o
  .br

--- 1438,1444 -----
  .br
  Followup-To: 
  .br
! Distribution: %(%i=^$?%"\enDistribution: ":%D)
  .br
  Organization: %o
  .br
***************
*** 1630,1636
  .I rn
  that it should gobble up one character after the F.
  .SH AUTHOR
! Larry Wall <lwall at sdcrdcf.UUCP>
  .br
  Regular expression routines are borrowed from emacs, by James Gosling.
  .SH FILES

--- 1638,1644 -----
  .I rn
  that it should gobble up one character after the F.
  .SH AUTHOR
! Larry Wall <lwall at jpl-devvax.jpl.nasa.gov>
  .br
  Regular expression routines are borrowed from emacs, by James Gosling.
  .SH FILES
***************
*** 1646,1652
  .Ip "%./.rnlast" 1.25i
  info from last run of rn
  .Ip "%./.rnsoft" 1.25i
! soft pointers into /usr/lib/active to speed startup, synchronous with
  .I .newsrc
  .Ip "%./.rnhead" 1.25i
  temporary header file to pass to a mailer or news poster

--- 1654,1660 -----
  .Ip "%./.rnlast" 1.25i
  info from last run of rn
  .Ip "%./.rnsoft" 1.25i
! soft pointers into /usr/lib/news/active to speed startup, synchronous with
  .I .newsrc
  .Ip "%./.rnhead" 1.25i
  temporary header file to pass to a mailer or news poster
***************
*** 1655,1661
  .Ip "%p" 1.25i
  your news save directory, usually ~/News
  .Ip "%x/active" 1.25i
! the list of active newsgroups, usually /usr/lib/news/active
  .Ip "%P" 1.25i
  the public news spool directory, usually /usr/spool/news
  .Ip "%X/INIT" 1.25i

--- 1663,1669 -----
  .Ip "%p" 1.25i
  your news save directory, usually ~/News
  .Ip "%x/active" 1.25i
! the list of active newsgroups, usually /usr/lib/news/active on systems that don't use NNTP
  .Ip "%P" 1.25i
  the public news spool directory, usually /usr/spool/news on systems that don't use NNTP
  .Ip "%X/INIT" 1.25i
***************
*** 1657,1663
  .Ip "%x/active" 1.25i
  the list of active newsgroups, usually /usr/lib/news/active
  .Ip "%P" 1.25i
! the public news spool directory, usually /usr/spool/news
  .Ip "%X/INIT" 1.25i
  system-wide default switches
  .SH SEE ALSO

--- 1665,1671 -----
  .Ip "%x/active" 1.25i
  the list of active newsgroups, usually /usr/lib/news/active on systems that don't use NNTP
  .Ip "%P" 1.25i
! the public news spool directory, usually /usr/spool/news on systems that don't use NNTP
  .Ip "%X/INIT" 1.25i
  system-wide default switches
  .SH SEE ALSO

Index: rn.c
Prereq: 4.3.1.4
*** rn.c	Fri Nov 21 16:39:27 1986
--- ../rn/rn.c	Tue Nov 28 01:51:28 1989
***************
*** 1,6
  /*  rn -- new readnews program
   *
!  *  From: lwall at sdcrdcf.UUCP (Larry Wall)
   *  Organization: System Development Corporation, Santa Monica
   *
   *  begun:   01/14/83

--- 1,6 -----
  /*  rn -- new readnews program
   *
!  *  Original Author: lwall at sdcrdcf.UUCP (Larry Wall)
   *  Organization: System Development Corporation, Santa Monica
   *
   *  begun:   01/14/83
***************
*** 6,12
   *  begun:   01/14/83
   *	1.0: 04/08/83
   *      2.0: 09/01/83
!  */
  
  static char rnid[] = "@(#)$Header: rn.c,v 4.3.1.4 85/09/10 11:05:13 lwall Exp $";
  

--- 6,13 -----
   *  begun:   01/14/83
   *	1.0: 04/08/83
   *      2.0: 09/01/83
!  *      RRN/RN: 11/01/89
! */
  
  static char rnid[] = "@(#)$Header: rn.c,v 4.3.2.2 89/11/28 01:51:25 sob Locked $";
  
***************
*** 8,14
   *      2.0: 09/01/83
   */
  
! static char rnid[] = "@(#)$Header: rn.c,v 4.3.1.4 85/09/10 11:05:13 lwall Exp $";
  
  /* $Log:	rn.c,v $
   * Revision 4.3.1.4  85/09/10  11:05:13  lwall

--- 9,15 -----
   *      RRN/RN: 11/01/89
  */
  
! static char rnid[] = "@(#)$Header: rn.c,v 4.3.2.2 89/11/28 01:51:25 sob Locked $";
  
  /* $Log:	rn.c,v $
   * Revision 4.3.2.2  89/11/28  01:51:25  sob
***************
*** 11,16
  static char rnid[] = "@(#)$Header: rn.c,v 4.3.1.4 85/09/10 11:05:13 lwall Exp $";
  
  /* $Log:	rn.c,v $
   * Revision 4.3.1.4  85/09/10  11:05:13  lwall
   * Improved %m in in_char().
   * 

--- 12,24 -----
  static char rnid[] = "@(#)$Header: rn.c,v 4.3.2.2 89/11/28 01:51:25 sob Locked $";
  
  /* $Log:	rn.c,v $
+  * Revision 4.3.2.2  89/11/28  01:51:25  sob
+  * Removed redundant #include directive.
+  * 
+  * Revision 4.3.2.1  89/11/08  02:27:38  sob
+  * Release of RN 4.3 with RRN that can be compiled from the same
+  * sources as either version of the program.
+  * 
   * Revision 4.3.1.4  85/09/10  11:05:13  lwall
   * Improved %m in in_char().
   * 
***************
*** 47,53
  #include "sw.h"
  #include "addng.h"
  #include "ng.h"
- #include "INTERN.h"
  
  void
  rn_init()

--- 55,60 -----
  #include "sw.h"
  #include "addng.h"
  #include "ng.h"
  
  void
  rn_init()

Index: util.c
Prereq: 4.3.1.2
*** util.c	Fri Nov 21 16:24:16 1986
--- ../rn/util.c	Sun Dec 17 01:55:41 1989
***************
*** 1,4
! /* $Header: util.c,v 4.3.1.2 85/05/15 14:44:27 lwall Exp $
   *
   * $Log:	util.c,v $
   * Revision 4.3.1.2  85/05/15  14:44:27  lwall

--- 1,4 -----
! /* $Header: util.c,v 4.3.2.4 89/12/14 23:58:54 sob Exp $
   *
   * $Log:	util.c,v $
   * Revision 4.3.2.4  89/12/14  23:58:54  sob
***************
*** 1,6
  /* $Header: util.c,v 4.3.1.2 85/05/15 14:44:27 lwall Exp $
   *
   * $Log:	util.c,v $
   * Revision 4.3.1.2  85/05/15  14:44:27  lwall
   * Last arg of execl changed from 0 to Nullch [(char*)0].
   * 

--- 1,18 -----
  /* $Header: util.c,v 4.3.2.4 89/12/14 23:58:54 sob Exp $
   *
   * $Log:	util.c,v $
+  * Revision 4.3.2.4  89/12/14  23:58:54  sob
+  * Fixed small bug reported by fletcher at cs.utexas.edu in getwd().
+  * 
+  * Revision 4.3.2.3  89/11/08  04:47:11  sob
+  * Added VOIDSIG handling for SunOS 4.X
+  * 
+  * Revision 4.3.2.2  89/11/07  23:19:35  sob
+  * Bug fixes for SIGSTP problems
+  * 
+  * Revision 4.3.2.1  89/11/06  01:03:21  sob
+  * Added RRN support from NNTP 1.5
+  * 
   * Revision 4.3.1.2  85/05/15  14:44:27  lwall
   * Last arg of execl changed from 0 to Nullch [(char*)0].
   * 
***************
*** 32,37
  char *s, *shl;
  {
      int status, pid, w;
      register int (*istat)(), (*qstat)();
      int (*signal())();
      char *shell;

--- 44,52 -----
  char *s, *shl;
  {
      int status, pid, w;
+ #ifdef VOIDSIG
+     int mask;
+ #else
      register int (*istat)(), (*qstat)();
      int (*signal())();
  #endif
***************
*** 34,39
      int status, pid, w;
      register int (*istat)(), (*qstat)();
      int (*signal())();
      char *shell;
  
  #ifdef SIGTSTP

--- 49,55 -----
  #else
      register int (*istat)(), (*qstat)();
      int (*signal())();
+ #endif
      char *shell;
  
  #ifdef SIGTSTP
***************
*** 38,44
  
  #ifdef SIGTSTP
      sigset(SIGTSTP,SIG_DFL);
!     sigset(SIGCONT,SIG_DFL);
  #endif
      if (shl != Nullch)
  	shell = shl;

--- 54,61 -----
  
  #ifdef SIGTSTP
      sigset(SIGTSTP,SIG_DFL);
!     sigset(SIGTTOU,SIG_DFL);
!     sigset(SIGTTIN,SIG_DFL);
  #endif
      if (shl != Nullch)
  	shell = shl;
***************
*** 45,50
      else if ((shell = getenv("SHELL")) == Nullch || !*shell)
  	shell = PREFSHELL;
      if ((pid = vfork()) == 0) {
  	if (*s)
  	    execl(shell, shell, "-c", s, Nullch);
  	else

--- 62,76 -----
      else if ((shell = getenv("SHELL")) == Nullch || !*shell)
  	shell = PREFSHELL;
      if ((pid = vfork()) == 0) {
+ #ifdef SERVER
+         int i;
+ 
+ 	/* This is necessary to keep bourne shell from puking */
+ 
+         for (i = 3; i < 10; ++i)
+                 (void) close(i);
+ #endif SERVER
+ 
  	if (*s)
  	    execl(shell, shell, "-c", s, Nullch);
  	else
***************
*** 51,56
  	    execl(shell, shell, Nullch, Nullch, Nullch);
  	_exit(127);
      }
  #ifndef lint
      istat = signal(SIGINT, SIG_IGN);
      qstat = signal(SIGQUIT, SIG_IGN);

--- 77,87 -----
  	    execl(shell, shell, Nullch, Nullch, Nullch);
  	_exit(127);
      }
+ #ifdef VOIDSIG
+     mask = sigblock(0);
+     signal(SIGINT, SIG_IGN);
+     signal(SIGQUIT, SIG_IGN);
+ #else
  #ifndef lint
      istat = signal(SIGINT, SIG_IGN);
      qstat = signal(SIGQUIT, SIG_IGN);
***************
*** 58,63
      istat = Null(int (*)());
      qstat = Null(int (*)());
  #endif lint
      waiting = TRUE;
      while ((w = wait(&status)) != pid && w != -1)
  	;

--- 89,95 -----
      istat = Null(int (*)());
      qstat = Null(int (*)());
  #endif lint
+ #endif
      waiting = TRUE;
      while ((w = wait(&status)) != pid && w != -1)
  	;
***************
*** 64,69
      if (w == -1)
  	status = -1;
      waiting = FALSE;
      signal(SIGINT, istat);
      signal(SIGQUIT, qstat);
  #ifdef SIGTSTP

--- 96,106 -----
      if (w == -1)
  	status = -1;
      waiting = FALSE;
+ #ifdef VOIDSIG
+     signal(SIGINT, SIG_DFL);
+     signal(SIGQUIT, SIG_DFL);
+     sigsetmask(mask);
+ #else
      signal(SIGINT, istat);
      signal(SIGQUIT, qstat);
  #endif
***************
*** 66,71
      waiting = FALSE;
      signal(SIGINT, istat);
      signal(SIGQUIT, qstat);
  #ifdef SIGTSTP
      sigset(SIGTSTP,stop_catcher);
      sigset(SIGCONT,cont_catcher);

--- 103,109 -----
  #else
      signal(SIGINT, istat);
      signal(SIGQUIT, qstat);
+ #endif
  #ifdef SIGTSTP
      sigset(SIGTSTP,stop_catcher);
      sigset(SIGTTOU,stop_catcher);
***************
*** 68,74
      signal(SIGQUIT, qstat);
  #ifdef SIGTSTP
      sigset(SIGTSTP,stop_catcher);
!     sigset(SIGCONT,cont_catcher);
  #endif
      return status;
  }

--- 106,113 -----
  #endif
  #ifdef SIGTSTP
      sigset(SIGTSTP,stop_catcher);
!     sigset(SIGTTOU,stop_catcher);
!     sigset(SIGTTIN,stop_catcher);
  #endif
      return status;
  }
***************
*** 320,326
      FILE *popen();
      FILE *pipefp = popen("/bin/pwd","r");
  
!     if (pipefd == Nullfp) {
  	printf("Can't run /bin/pwd\n") FLUSH;
  	finalize(1);
      }

--- 359,365 -----
      FILE *popen();
      FILE *pipefp = popen("/bin/pwd","r");
  
!     if (pipefp == Nullfp) {
  	printf("Can't run /bin/pwd\n") FLUSH;
  	finalize(1);
      }
    
	
Index: Rnmail.SH
Prereq: 4.3.1.4
*** Rnmail.SH	Fri Nov 21 16:28:11 1986
--- ../rn/Rnmail.SH	Mon Nov  6 00:31:06 1989
***************
*** 4,10
  echo "Extracting Rnmail (with variable substitutions)"
  $spitshell >Rnmail <<!GROK!THIS!
  $startsh
! # $Header: Rnmail.SH,v 4.3.1.4 85/08/01 14:23:05 lwall Exp $
  # 
  # $Log:	Rnmail.SH,v $
  # Revision 4.3.1.4  85/08/01  14:23:05  lwall

--- 4,10 -----
  echo "Extracting Rnmail (with variable substitutions)"
  $spitshell >Rnmail <<!GROK!THIS!
  $startsh
! # $Header: Rnmail.SH,v 4.3.2.1 89/11/06 00:30:54 sob Locked $
  # 
  # $Log:	Rnmail.SH,v $
  # Revision 4.3.2.1  89/11/06  00:30:54  sob
***************
*** 7,12
  # $Header: Rnmail.SH,v 4.3.1.4 85/08/01 14:23:05 lwall Exp $
  # 
  # $Log:	Rnmail.SH,v $
  # Revision 4.3.1.4  85/08/01  14:23:05  lwall
  # Added MAILRECORD.  Temp file is no longer in /tmp.  'e editor' added.
  # 

--- 7,15 -----
  # $Header: Rnmail.SH,v 4.3.2.1 89/11/06 00:30:54 sob Locked $
  # 
  # $Log:	Rnmail.SH,v $
+ # Revision 4.3.2.1  89/11/06  00:30:54  sob
+ # Added RRN support from NNTP 1.5
+ # 
  # Revision 4.3.1.4  85/08/01  14:23:05  lwall
  # Added MAILRECORD.  Temp file is no longer in /tmp.  'e editor' added.
  # 
***************
*** 36,42
  
  # your site name
  case $portable in
! define) sitename=\`$hostcmd\` ;;
  undef) sitename="$sitename" ;;
  esac
  # your organization name

--- 39,54 -----
  
  # your site name
  case $portable in
! define)
! 	sitename=\`$hostcmd\`
! 	case \$sitename in
! 		*.*)
! 			;;
! 		*)
! 			sitename=\${sitename}.$domain
! 			;;
! 	esac
! 	;;
  undef) sitename="$sitename" ;;
  esac
  # your organization name

Index: addng.c
Prereq: 4.3.1.2
*** addng.c	Fri Nov 21 16:50:06 1986
--- ../rn/addng.c	Wed Nov  8 02:33:36 1989
***************
*** 1,4
! /* $Header: addng.c,v 4.3.1.2 85/05/29 09:06:24 lwall Exp $
   *
   * $Log:	addng.c,v $
   * Revision 4.3.1.2  85/05/29  09:06:24  lwall

--- 1,4 -----
! /* $Header: addng.c,v 4.3.2.3 89/11/08 02:33:28 sob Locked $
   *
   * $Log:	addng.c,v $
   * Revision 4.3.2.3  89/11/08  02:33:28  sob
***************
*** 1,6
  /* $Header: addng.c,v 4.3.1.2 85/05/29 09:06:24 lwall Exp $
   *
   * $Log:	addng.c,v $
   * Revision 4.3.1.2  85/05/29  09:06:24  lwall
   * New newsgroups without spool directories incorrectly classified as "ancient".
   * 

--- 1,15 -----
  /* $Header: addng.c,v 4.3.2.3 89/11/08 02:33:28 sob Locked $
   *
   * $Log:	addng.c,v $
+  * Revision 4.3.2.3  89/11/08  02:33:28  sob
+  * Added include for server.h
+  * 
+  * Revision 4.3.2.2  89/11/08  01:23:49  sob
+  * Added GROUP check when SERVER defined.
+  * 
+  * Revision 4.3.2.1  89/11/06  00:34:11  sob
+  * Added RRN support from NNTP 1.5
+  * 
   * Revision 4.3.1.2  85/05/29  09:06:24  lwall
   * New newsgroups without spool directories incorrectly classified as "ancient".
   * 
***************
*** 21,26
  #include "intrp.h"
  #include "only.h"
  #include "rcstuff.h"
  #include "INTERN.h"
  #include "addng.h"
  

--- 30,38 -----
  #include "intrp.h"
  #include "only.h"
  #include "rcstuff.h"
+ #ifdef SERVER
+ #include "server.h"
+ #endif
  #include "INTERN.h"
  #include "addng.h"
  
***************
*** 109,114
      char tst[128];
      long time();
   
      sprintf(tst, ngsize ? "%s/%s/1" : "%s/%s" ,spool,getngdir(ngnam));
      if (stat(tst,&filestat) < 0)
  	return (ngsize ? 0L : time(Null(long *)));

--- 121,138 -----
      char tst[128];
      long time();
   
+ #ifdef SERVER
+     int x,tot,min,max;
+     if (ngsize < 2) {
+           sprintf(tst,"GROUP %s",ngnam);
+           put_server(tst);
+           (void) get_server(tst, sizeof(tst));
+           if (*tst != CHAR_OK) return(0); /* not a real group */
+           (void) sscanf(tst,"%d%d%d%d",&x,&tot,&min,&max);
+           if (tot == 1 && min == 1 && max == 1) return(time(Null(long *)));
+      } else return(0);
+ #else not SERVER
+ 
      sprintf(tst, ngsize ? "%s/%s/1" : "%s/%s" ,spool,getngdir(ngnam));
      if (stat(tst,&filestat) < 0)
  	return (ngsize ? 0L : time(Null(long *)));
***************
*** 115,120
  	/* not there, assume something good */
      else
  	return filestat.st_mtime;
  }
  
  bool

--- 139,146 -----
  	/* not there, assume something good */
      else
  	return filestat.st_mtime;
+ 
+ #endif
  }
  
  bool

Index: Wishlist
*** Wishlist	Fri Nov 21 15:43:05 1986
--- ../rn/Wishlist	Sat Dec  9 01:53:37 1989
***************
*** 6,12
  	Undigestification.
  	Personal archive perusal.
  	Mail handling.
- 	Remotely stored news.
  Parent command (waiting for ARTFILE interface and recursive newsgroups).
  Merge Pnews and postnews.
  Vnews duplicate suppression algorithm for sites that can't do Xref patch.

--- 6,11 -----
  	Undigestification.
  	Personal archive perusal.
  	Mail handling.
  Parent command (waiting for ARTFILE interface and recursive newsgroups).
  Merge Pnews and postnews.
  Vnews duplicate suppression algorithm for sites that can't do Xref patch.
Index: README
*** README	Fri Nov 21 15:41:56 1986
--- ../rn/README	Sun Nov 26 18:15:22 1989
***************
*** 50,64
  5)  Read the manual entry before running rn.  It's quite different from
      readnews.
  
! 6)  Install the Xref patch to header.h, header.c, and inews.c.  These patches
!     are found in header.h.?.pat, header.c.?.pat, and inews.c.?.pat, where ? is
!     either 1 for news 2.10.1 (or earlier) or 2 for 2.10.2.  Last I heard,
!     2.10.3 was going to have the Xref patch built in.  The purpose
!     of the Xref patch is to put an Xref: line in the header of articles
!     posted to more than one newsgroup.  Rn uses this line to keep from showing
!     such postings more than once.  Other than that rn will work without
!     this patch, so if you just want to try out rn you can delay putting in
!     the patch.
  
      When you put in the patch and recompile inews, don't forget to define
      DOXREFS in the makefile for inews.  Do NOT define LINKART unless you

--- 50,58 -----
  5)  Read the manual entry before running rn.  It's quite different from
      readnews.
  
! 6)  If you are trying to make it work with NNTP, be sure you have 
!     installed the NNTP inews and the file that contains the name of the
!     NNTP server. RRN expects that the NNTP is at least version 1.5.
  
  7)  Try rn, and play with some of the switches.  You may want to make -/
      default on your system.  This is done in common.h.  You may want to modify
***************
*** 60,94
      this patch, so if you just want to try out rn you can delay putting in
      the patch.
  
-     When you put in the patch and recompile inews, don't forget to define
-     DOXREFS in the makefile for inews.  Do NOT define LINKART unless you
-     are a Eunice site and really want to do that.  In fact, if you are not
-     a Eunice site you needn't install the LINKART part of the patch.
- 
-     NOTE: the Makefile that comes with some of the older news systems does not
-     have all the dependencies quite right.  In particular, ifuncs.c may
-     not recompile when you change header.h.  If this happens when you install
-     the Xref patch, inews will start dumping core.  Make sure both inews.o
-     and ifuncs.o depend on header.h in the Makefile.
- 
-     Eunice users: the inews.c patch contains both the Xref patch and a LINKART
-     patch to put a form of "symbolic link" between articles posted to
-     multiple newsgroups.  What it does is to put the article into the first
-     newsgroup on the Newsgroups line, and in subsequent newsgroups it just
-     puts a little file containing the name of the article in the first
-     newsgroup.  Rn (when compiled with the LINKART option) is clever about
-     these pseudo-articles, and ends up opening the right one.  YOU WILL NOT
-     be able to use readnews or vnews on your system without modification,
-     though.  If you do this, be sure to define both DOXREFS and LINKART in
-     the makefile for inews.c.  If you are using the option in inews that
-     copies instead of linking, you will want to rip that out.
- 
-     NOTE: if you transmit articles to other systems using xfernews with the
-     U flag, Xref's can leak out of your system, as can Date-Received's.  This
-     may make neighboring sites unhappy unless they also have the Xref patch
-     installed.  For now, either don't use the U flag, or fix the inews/xfernews
-     interaction.
- 
  7)  Try rn, and play with some of the switches.  You may want to make -/
      default on your system.  This is done in common.h.  You may want to modify
      which header lines are displayed by default--this is done in head.h.

--- 54,59 -----
      installed the NNTP inews and the file that contains the name of the
      NNTP server. RRN expects that the NNTP is at least version 1.5.
  
  7)  Try rn, and play with some of the switches.  You may want to make -/
      default on your system.  This is done in common.h.  You may want to modify
      which header lines are displayed by default--this is done in head.h.
***************
*** 97,103
      without recompiling rn, put switches into file INIT in the rn library.
  
  8)  IMPORTANT!  Help save the world!  Communicate any problems and
!     suggested patches to me, lwall at sdcrdcf.UUCP (Larry Wall), so we can
      keep the world in sync.  If you have a problem, there's someone else
      out there who either has had or will have the same problem.
  

--- 62,68 -----
      without recompiling rn, put switches into file INIT in the rn library.
  
  8)  IMPORTANT!  Help save the world!  Communicate any problems and
!     suggested patches to my faithful servant, sob at bcm.tmc.edu, so we can
      keep the world in sync.  If you have a problem, there's someone else
      out there who either has had or will have the same problem.
  
***************
*** 105,111
      Context diffs are the best, then normal diffs.  Don't send ed scripts--
      I've probably changed my copy since the version you have.
  
!     Watch for rn patches in net.sources.bugs.  Patches will generally be
      applyable (is that a word?) by the patch program.  If you are just
      now bringing up news and aren't sure how many patches there are, write
      to me and I'll send any you don't have.

--- 70,76 -----
      Context diffs are the best, then normal diffs.  Don't send ed scripts--
      I've probably changed my copy since the version you have.
  
!     Watch for rn patches in news.software.b.  Patches will generally be
      applyable (is that a word?) by the patch program.  If you are just
      now bringing up news and aren't sure how many patches there are, write
      to sob at bcm.tmc.edu and he'll send any you don't have.
***************
*** 108,113
      Watch for rn patches in net.sources.bugs.  Patches will generally be
      applyable (is that a word?) by the patch program.  If you are just
      now bringing up news and aren't sure how many patches there are, write
!     to me and I'll send any you don't have.
  
  9)  If you are going to hack on rn, please read the HACKERSGUIDE first.

--- 73,78 -----
      Watch for rn patches in news.software.b.  Patches will generally be
      applyable (is that a word?) by the patch program.  If you are just
      now bringing up news and aren't sure how many patches there are, write
!     to sob at bcm.tmc.edu and he'll send any you don't have.
  
  9)  If you are going to hack on rn, please read the HACKERSGUIDE first.


--
Stan           internet: sob at bcm.tmc.edu         Director, Networking 
Olan           uucp: {rutgers,mailrus}!bcm!sob   and Systems Support
Barber         Opinions expressed are only mine. Baylor College of Medicine



More information about the Comp.sources.bugs mailing list