[net.sources] 2.7-2.8.c

ARPAVAX:usenet (06/22/82)

Only in 2.7: README
Common subdirectories: 2.7/doc and 2.8/doc
Common subdirectories: 2.7/man and 2.8/man
Common subdirectories: 2.7/misc and 2.8/misc
Only in 2.7: new.2.7
Common subdirectories: 2.7/src and 2.8/src
Only in 2.7/src: Makefile
diff -c -r 2.7/src/Makefile.usg 2.8/src/Makefile.usg
*** 2.7/src/Makefile.usg	Tue Jun  1 08:25:37 1982
--- 2.8/src/Makefile.usg	Mon Jun 21 14:02:58 1982
***************
*** 1,4
! # @(#) Makefile.usg	2.4	6/1/82
  
  # definitions
  SPOOLDIR = /usr/spool/news

--- 1,4 -----
! # @(#) Makefile.usg	2.5	6/21/82
  
  # definitions
  SPOOLDIR = /usr/spool/news
***************
*** 12,18
  SOURCES = funcs.c getdate.c inews.c ifuncs.c iextern.c readnews.c rfuncs.c\
  	rextern.c readr.c process.c control.c ftime.c header.c
  OBJECTS = funcs.o getdate.o ftime.o header.o
! IOBJECTS = inews.o ifuncs.o iextern.o control.o $(OBJECTS)
  ROBJECTS = readnews.o rfuncs.o rextern.o readr.o process.o $(OBJECTS)
  EXPOBJS=  expire.o header.o funcs.o getdate.o rextern.o ftime.o
  OTHERS = uurec recnews expire sendnews

--- 12,18 -----
  SOURCES = funcs.c getdate.c inews.c ifuncs.c iextern.c readnews.c rfuncs.c\
  	rextern.c readr.c process.c control.c ftime.c header.c
  OBJECTS = funcs.o getdate.o ftime.o header.o
! IOBJECTS = inews.o ifuncs.o iextern.o control.o fullname.o $(OBJECTS)
  ROBJECTS = readnews.o rfuncs.o rextern.o readr.o process.o $(OBJECTS)
  EXPOBJS=  expire.o header.o funcs.o getdate.o rextern.o ftime.o
  OTHERS = uurec recnews expire sendnews
diff -c -r 2.7/src/Makefile.v7 2.8/src/Makefile.v7
*** 2.7/src/Makefile.v7	Tue Jun  1 08:25:36 1982
--- 2.8/src/Makefile.v7	Mon Jun 21 14:02:58 1982
***************
*** 1,4
! # @(#) Makefile.v7	2.4	6/1/82
  
  # definitions
  SPOOLDIR = /usr/spool/news

--- 1,4 -----
! # @(#) Makefile.v7	2.5	6/21/82
  
  # definitions
  SPOOLDIR = /usr/spool/news
***************
*** 12,18
  SOURCES = funcs.c getdate.c inews.c ifuncs.c iextern.c readnews.c rfuncs.c\
  	rextern.c readr.c process.c uname.c control.c header.c
  OBJECTS = funcs.o getdate.o uname.o header.o
! IOBJECTS = inews.o ifuncs.o iextern.o control.o $(OBJECTS)
  ROBJECTS = readnews.o rfuncs.o rextern.o readr.o process.o $(OBJECTS)
  EXPOBJS=  expire.o uname.o header.o funcs.o getdate.o rextern.o
  OTHERS = uurec recnews sendnews expire

--- 12,18 -----
  SOURCES = funcs.c getdate.c inews.c ifuncs.c iextern.c readnews.c rfuncs.c\
  	rextern.c readr.c process.c uname.c control.c header.c
  OBJECTS = funcs.o getdate.o uname.o header.o
! IOBJECTS = inews.o ifuncs.o iextern.o control.o fullname.o $(OBJECTS)
  ROBJECTS = readnews.o rfuncs.o rextern.o readr.o process.o $(OBJECTS)
  EXPOBJS=  expire.o uname.o header.o funcs.o getdate.o rextern.o
  OTHERS = uurec recnews sendnews expire
diff -c -r 2.7/src/checknews.c 2.8/src/checknews.c
*** 2.7/src/checknews.c	Tue Jun  1 08:25:12 1982
--- 2.8/src/checknews.c	Mon Jun 21 14:02:59 1982
***************
*** 2,8
   * checknews - news checking program
   */
  
! static char *SccsId = "@(#) checknews.c	2.8	6/1/82";
  
  #include <stdio.h>
  #include <sys/types.h>

--- 2,8 -----
   * checknews - news checking program
   */
  
! static char *SccsId = "@(#) checknews.c	2.9	6/21/82";
  
  #include <stdio.h>
  #include <sys/types.h>
***************
*** 150,156
  #else
  	getuser();
  #endif
! 	sprintf(newsrc, "%s/%s", userhome, NEWSRC);
  	if ((rcfp = fopen(newsrc, "r")) != NULL) {
  		while (fgets(rcbuf, LBUFLEN, rcfp) != NULL) {
  			if (!(space = isspace(*rcbuf)))

--- 150,160 -----
  #else
  	getuser();
  #endif
! 	ptr = getenv("NEWSRC");
! 	if (ptr == NULL)
! 		sprintf(newsrc, "%s/%s", userhome, NEWSRC);
! 	else
! 		strcpy(newsrc, ptr);
  	if ((rcfp = fopen(newsrc, "r")) != NULL) {
  		while (fgets(rcbuf, LBUFLEN, rcfp) != NULL) {
  			if (!(space = isspace(*rcbuf)))
diff -c -r 2.7/src/control.c 2.8/src/control.c
*** 2.7/src/control.c	Sat Jun  5 19:43:40 1982
--- 2.8/src/control.c	Mon Jun 21 14:03:09 1982
***************
*** 5,11
   * See defs.h "news_version" for the real version of netnews.
   */
  
! static char *SccsId = "@(#) control.c	2.8	6/5/82 (this is NOT the netnews version!)";
  
  #include "iparams.h"
  

--- 5,11 -----
   * See defs.h "news_version" for the real version of netnews.
   */
  
! static char *SccsId = "@(#) control.c	2.9	6/21/82 (this is NOT the netnews version!)";
  
  #include "iparams.h"
  
***************
*** 656,661
  {
  	/* Be sure we DO allow alphabetics, !, :, ., -, @. *. */
  	char *nasty = "\"'\\`^|;& <>/~";
  
  	if (sendto[0] <= ' ') {
  		log("nasty mail name %s from %s", sendto, header.path);

--- 656,662 -----
  {
  	/* Be sure we DO allow alphabetics, !, :, ., -, @. *. */
  	char *nasty = "\"'\\`^|;& <>/~";
+ 	register char *p;
  
  	if (sendto[0] <= ' ') {
  		log("nasty mail name %s from %s", sendto, header.path);
***************
*** 661,666
  		log("nasty mail name %s from %s", sendto, header.path);
  		xxit(1);
  	}
  	while (*nasty) {
  		if (index(sendto, *nasty++)) {
  			log("nasty mail name %s from %s", sendto, header.path);

--- 662,673 -----
  		log("nasty mail name %s from %s", sendto, header.path);
  		xxit(1);
  	}
+ 	for (p=sendto; *p; p++) {
+ 		if (*p == ' ') {
+ 			*p = 0;
+ 			break;
+ 		}
+ 	}
  	while (*nasty) {
  		if (index(sendto, *nasty++)) {
  			log("nasty mail name %s from %s", sendto, header.path);
***************
*** 696,702
  	} else if (strcmp(msg, "sendme") == 0) {
  		return;	/* no restrictions */
  	} else if (strcmp(msg, "newgroup") == 0) {
! 		return;	/* no restrictions */
  	} else if (strcmp(msg, "rmgroup") == 0) {
  		suser();
  		checkpass("mTnyckAVEMXWk");

--- 703,709 -----
  	} else if (strcmp(msg, "sendme") == 0) {
  		return;	/* no restrictions */
  	} else if (strcmp(msg, "newgroup") == 0) {
! 		suser();
  	} else if (strcmp(msg, "rmgroup") == 0) {
  		suser();
  		checkpass("mTnyckAVEMXWk");
***************
*** 704,709
  		suser();
  	} else if (strcmp(msg, "senduuname") == 0) {
  		suser();
  	} else if (strcmp(msg, "cancel") == 0) {
  		return;	/* no restrictions at this level */
  	} else {

--- 711,718 -----
  		suser();
  	} else if (strcmp(msg, "senduuname") == 0) {
  		suser();
+ 	} else if (strcmp(msg, "version") == 0) {
+ 		return;	/* no restrictions */
  	} else if (strcmp(msg, "cancel") == 0) {
  		return;	/* no restrictions at this level */
  	} else {
diff -c -r 2.7/src/defs.h 2.8/src/defs.h
*** 2.7/src/defs.h	Mon Jun  7 19:14:09 1982
--- 2.8/src/defs.h	Mon Jun 21 14:03:09 1982
***************
*** 10,16
   * to be news_version below.
   */
  
! static char *news_version = "@(#) defs.h	2.7	6/7/82";
  
  #define DAYS	(60L*60L*24L)
  #define WEEKS	(7*DAYS)

--- 10,16 -----
   * to be news_version below.
   */
  
! static char *news_version = "@(#) defs.h	2.8	6/21/82";
  
  #define DAYS	(60L*60L*24L)
  #define WEEKS	(7*DAYS)
***************
*** 30,35
  /* #define UUNAME "euuname"	/* omit for uuname, put in LIBDIR	*/
  /* #define MANUALLY		/* Don't execute rmgroups, just notify.	*/
  /* #define BERKNAME "ARPAVAX"	/* name of local host on Berknet	*/
  
  /* Things you might want to change */
  #define	ROOTID	0	/* uid of person allowed to cancel anything	*/

--- 30,36 -----
  /* #define UUNAME "euuname"	/* omit for uuname, put in LIBDIR	*/
  /* #define MANUALLY		/* Don't execute rmgroups, just notify.	*/
  /* #define BERKNAME "ARPAVAX"	/* name of local host on Berknet	*/
+ /* #define LOCALNAME 		/* There is no full name database. 	*/
  
  /* Things you might want to change */
  #define	ROOTID	0	/* uid of person allowed to cancel anything	*/
diff -c -r 2.7/src/expire.c 2.8/src/expire.c
*** 2.7/src/expire.c	Tue Jun  1 08:25:38 1982
--- 2.8/src/expire.c	Mon Jun 21 14:03:10 1982
***************
*** 3,9
   *		 have expired.
   */
  
! static char *SccsId = "@(#) expire.c	2.9	6/1/82";
  
  #include "params.h"
  

--- 3,9 -----
   *		 have expired.
   */
  
! static char *SccsId = "@(#) expire.c	2.10	6/21/82";
  
  #include "params.h"
  
***************
*** 166,171
  	char *p;
  	int last = 0;
  	char newname[BUFLEN];
  
  	while (*artlist == ' ' || *artlist == '\n' || *artlist == ',')
  		artlist++;

--- 166,172 -----
  	char *p;
  	int last = 0;
  	char newname[BUFLEN];
+ 	char newgroup[BUFLEN];
  
  	while (*artlist == ' ' || *artlist == '\n' || *artlist == ',')
  		artlist++;
***************
*** 192,198
  		if (verbose > 1)
  			printf("link %s to %s\n", newname, filename);
  		if (link(artlist, newname) == -1) {
! 			if (mkdir(groupdir) == 0)
  				link(artlist, newname);
  		}
  	}

--- 193,202 -----
  		if (verbose > 1)
  			printf("link %s to %s\n", newname, filename);
  		if (link(artlist, newname) == -1) {
! 			strcpy(newgroup, artlist);
! 			p = index(newgroup, '/');
! 			*p = 0;
! 			if (mkdir(newgroup) == 0)
  				link(artlist, newname);
  		}
  	}
diff -c -r 2.7/src/help 2.8/src/help
*** 2.7/src/help	Tue Mar 30 18:47:34 1982
--- 2.8/src/help	Mon Jun 21 14:03:11 1982
***************
*** 4,9
  y		Yes.  Prints current article and goes on to next.
  n		No.  Goes on to next article without printing current one.
  q		Quit.  Update .newsrc if -l or -x not used.
  c		Cancel article.
  r		Reply.  Reply to article's author via mail.
  f [title]	Submit a follow up article.

--- 4,10 -----
  y		Yes.  Prints current article and goes on to next.
  n		No.  Goes on to next article without printing current one.
  q		Quit.  Update .newsrc if -l or -x not used.
+ u		Unsubscribe.  You won't be shown this newsgroup anymore.
  c		Cancel article.
  r		Reply.  Reply to article's author via mail.
  f [title]	Submit a follow up article.
***************
*** 18,23
  +[n]		Skip n articles.
  -		Go back to last article.
  x		Exit.  Don't update .newsrc.
  X system	Send article to system.
  
  c, f, r, e, h, and s can be followed by -'s to refer to the previous article

--- 19,25 -----
  +[n]		Skip n articles.
  -		Go back to last article.
  x		Exit.  Don't update .newsrc.
+ v		Version.  Print current news version number.
  X system	Send article to system.
  
  c, f, r, e, h, and s can be followed by -'s to refer to the previous article
diff -c -r 2.7/src/ifuncs.c 2.8/src/ifuncs.c
*** 2.7/src/ifuncs.c	Tue Jun  8 08:35:08 1982
--- 2.8/src/ifuncs.c	Mon Jun 21 14:03:12 1982
***************
*** 2,8
   * ifuncs - functions used by inews.
   */
  
! static char *SccsId = "@(#) ifuncs.c	2.10	6/8/82";
  
  #include "iparams.h"
  

--- 2,8 -----
   * ifuncs - functions used by inews.
   */
  
! static char *SccsId = "@(#) ifuncs.c	2.11	6/21/82";
  
  #include "iparams.h"
  
***************
*** 285,290
  	unlink(ARTICLE);
  	while (lockcount > 0)
  		unlock();
  	exit(status);
  }
  

--- 285,291 -----
  	unlink(ARTICLE);
  	while (lockcount > 0)
  		unlock();
+ 	idunlock();
  	exit(status);
  }
  
***************
*** 431,505
  }
  
  /*
-  * Figure out who is sending the message and sign it.
-  * We attempt to look up the user in the gecos field of /etc/passwd.
-  * The Berkeley conventions (name first, & expands to login name) are
-  * assumed.  If a site stores weird stuff in gecos, like some account
-  * number, too bad - local mods may be in order.
-  */
- char *
- gensender(un)
- char *un;
- {
- 	static char outbuf[100];
- 	char inbuf[100];
- 	struct passwd *pw;
- 
- 	pw = getpwnam(un);
- 	if (pw == NULL)
- 		return un;
- 	buildfname(pw->pw_gecos, un, inbuf);
- 	if (inbuf[0] == 0)
- 		return un;
- 	sprintf(outbuf, "%s (%s)", un, inbuf);
- 	return outbuf;
- }
- 
- /*
- **  BUILDFNAME -- build full name from gecos style entry.
- **	(routine lifted from sendmail)
- **
- **	This routine interprets the strange entry that would appear
- **	in the GECOS field of the password file.
- **
- **	Parameters:
- **		p -- name to build.
- **		login -- the login name of this user (for &).
- **		buf -- place to put the result.
- **
- **	Returns:
- **		none.
- **
- **	Side Effects:
- **		none.
- */
- 
- buildfname(p, login, buf)
- 	register char *p;
- 	char *login;
- 	char *buf;
- {
- 	register char *bp = buf;
- 
- 	if (*p == '*')
- 		p++;
- 	while (*p != '\0' && *p != ',' && *p != ';' && *p != ':')
- 	{
- 		if (*p == '&')
- 		{
- 			strcpy(bp, login);
- 			*bp = toupper(*bp);
- 			while (*bp != '\0')
- 				bp++;
- 			p++;
- 		}
- 		else
- 			*bp++ = *p++;
- 	}
- 	*bp = '\0';
- }
- 
- /*
   * Check if header.nbuf contains only valid newsgroup names;
   * exit with error if not valid.
   *

--- 432,437 -----
  }
  
  /*
   * Check if header.nbuf contains only valid newsgroup names;
   * exit with error if not valid.
   *
***************
*** 545,548
  			xerror(bfr);
  		}
  	}
  }

--- 477,514 -----
  			xerror(bfr);
  		}
  	}
+ }
+ 
+ char *
+ gensender(logname)
+ char *logname;
+ {
+ 	char *fn;
+ 	static char buf[100];
+ 	char buf2[100];
+ 	char *fullname(), *getenv();
+ 	char *p;
+ 	int fd;
+ 
+ 	fn = getenv("NAME");
+ 
+ 	if (fn == NULL) {
+ 		sprintf(buf, "%s/%s", getenv("HOME"), ".name");
+ 		fd = open(buf, 0);
+ 		if (fd >= 0) {
+ 			read(fd, buf2, sizeof buf2);
+ 			close(fd);
+ 			if (buf2[0] >= 'A')
+ 				fn = buf2;
+ 			for (p=fn; *p; p++)
+ 				if (*p < ' ')
+ 					*p = 0;
+ 		}
+ 	}
+ 
+ 	if (fn == NULL)
+ 		fn = fullname(logname);
+ 
+ 	sprintf(buf, "%s (%s)", logname, fn);
+ 	return buf;
  }
diff -c -r 2.7/src/inews.c 2.8/src/inews.c
*** 2.7/src/inews.c	Tue Jun  1 08:25:21 1982
--- 2.8/src/inews.c	Mon Jun 21 14:03:13 1982
***************
*** 2,8
   * inews - insert, receive, and transmit news articles.
   */
  
! static char *SccsId = "@(#) inews.c	2.9	6/1/82";
  
  #include "iparams.h"
  

--- 2,8 -----
   * inews - insert, receive, and transmit news articles.
   */
  
! static char *SccsId = "@(#) inews.c	2.10	6/21/82";
  
  #include "iparams.h"
  
***************
*** 198,204
  	 * ALL of the command line has now been processed. (!)
  	 */
  
! 	if (!Dflag) {
  		if (recording(header.nbuf)) {
  			if (!tty)
  				fwait(fsubr(newssave, stdin, NULL));

--- 198,204 -----
  	 * ALL of the command line has now been processed. (!)
  	 */
  
! 	if (!Dflag && mode != PROC) {
  		if (recording(header.nbuf)) {
  			if (!tty)
  				fwait(fsubr(newssave, stdin, NULL));
***************
*** 208,214
  
  	if (!tty && mode != PROC) {
  		i = fork();
! 		if (i == 0)
  			exit(0);
  	}
  

--- 208,214 -----
  
  	if (!tty && mode != PROC) {
  		i = fork();
! 		if (i != 0)
  			exit(0);
  	}
  
***************
*** 257,263
  		ngsquash(nbuf, srec.s_nbuf);
  #ifdef RESTRICT
  		if (!*nbuf) {
! 			sprintf(bfr, "Article %s not subscribed to",header.ident);
  			xerror(bfr);
  		}
  #endif

--- 257,263 -----
  		ngsquash(nbuf, srec.s_nbuf);
  #ifdef RESTRICT
  		if (!*nbuf) {
! 			sprintf(bfr, "Article %s group %s not subscribed to",header.ident,header.nbuf);
  			xerror(bfr);
  		}
  #endif
diff -c -r 2.7/src/postnews.usg 2.8/src/postnews.usg
*** 2.7/src/postnews.usg	Tue Jun  1 08:25:34 1982
--- 2.8/src/postnews.usg	Mon Jun 21 14:03:14 1982
***************
*** 1,4
! : '@(#) postnews.usg	2.4	6/1/82'
  if test $# -gt 1 ; then
  	echo "$0: Too many args"
  	exit 1

--- 1,4 -----
! : '@(#) postnews.usg	2.5	6/21/82'
  if test $# -gt 1 ; then
  	echo "$0: Too many args"
  	exit 1
***************
*** 24,30
  		t=/tmp/pn$$
  		trap "sleep 1; rm -f $t; exit" 0 1 2
  		$EDITOR $t
! 		inews -t "$title" -n $ng <$t &
  	fi
  	;;
  1)

--- 24,38 -----
  		t=/tmp/pn$$
  		trap "sleep 1; rm -f $t; exit" 0 1 2
  		$EDITOR $t
! 		if inews -t "$title" -n $ng <$t
! 		then
! 			:
! 		else
! 			if cat $t >>$HOME/dead.news
! 			then
! 				echo Article saved in $HOME/dead.news
! 			fi
! 		fi
  	fi
  	;;
  1)
diff -c -r 2.7/src/postnews.v7 2.8/src/postnews.v7
*** 2.7/src/postnews.v7	Tue Jun  1 08:25:16 1982
--- 2.8/src/postnews.v7	Mon Jun 21 14:03:14 1982
***************
*** 1,4
! : '@(#) postnews.v7	2.4	6/1/82'
  if test $# -gt 1 ; then
  	echo "$0: Too many args"
  	exit 1

--- 1,4 -----
! : '@(#) postnews.v7	2.5	6/21/82'
  if test $# -gt 1 ; then
  	echo "$0: Too many args"
  	exit 1
***************
*** 16,22
  fi
  case $# in
  0)
! 	if test x$EDITOR = x 
  	then
  		echo "Type news, end with control D"
  		inews -t "$title" -n $ng

--- 16,22 -----
  fi
  case $# in
  0)
! 	if test x$EDITOR = x
  	then
  		echo "Type news, end with control D"
  		inews -t "$title" -n $ng
***************
*** 24,30
  		t=/tmp/pn$$
  		trap "sleep 1; rm -f $t; exit" 0 1 2
  		$EDITOR $t
! 		inews -t "$title" -n $ng <$t
  	fi
  	;;
  1)

--- 24,38 -----
  		t=/tmp/pn$$
  		trap "sleep 1; rm -f $t; exit" 0 1 2
  		$EDITOR $t
! 		if inews -t "$title" -n $ng <$t
! 		then
! 			:
! 		else
! 			if cat $t >>$HOME/dead.news
! 			then
! 				echo Article saved in $HOME/dead.news
! 			fi
! 		fi
  	fi
  	;;
  1)
Only in 2.7/src: readnews.1
diff -c -r 2.7/src/readnews.c 2.8/src/readnews.c
*** 2.7/src/readnews.c	Tue Jun  1 08:25:24 1982
--- 2.8/src/readnews.c	Mon Jun 21 14:03:15 1982
***************
*** 2,8
   * readnews - read news articles.
   */
  
! static char *SccsId = "@(#) readnews.c	2.5	6/1/82";
  
  #include "rparams.h"
  

--- 2,8 -----
   * readnews - read news articles.
   */
  
! static char *SccsId = "@(#) readnews.c	2.6	6/21/82";
  
  #include "rparams.h"
  
***************
*** 114,120
  	getuser();
  #endif
  	myrc = getenv("NEWSRC");
! 	if (myrc == NULL)
  		myrc = NEWSRC;
  	sprintf(newsrc, "%s/%s", userhome, myrc);
  	if ((rcfp = fopen(newsrc, "r")) != NULL) {

--- 114,120 -----
  	getuser();
  #endif
  	myrc = getenv("NEWSRC");
! 	if (myrc == NULL) {
  		myrc = NEWSRC;
  		sprintf(newsrc, "%s/%s", userhome, myrc);
  	}
***************
*** 116,122
  	myrc = getenv("NEWSRC");
  	if (myrc == NULL)
  		myrc = NEWSRC;
! 	sprintf(newsrc, "%s/%s", userhome, myrc);
  	if ((rcfp = fopen(newsrc, "r")) != NULL) {
  		rcreadok = FALSE;
  		while (fgets(rcbuf, LBUFLEN, rcfp) != NULL) {

--- 116,126 -----
  	myrc = getenv("NEWSRC");
  	if (myrc == NULL) {
  		myrc = NEWSRC;
! 		sprintf(newsrc, "%s/%s", userhome, myrc);
! 	}
! 	else {
! 		strcpy(newsrc, myrc);
! 	}
  	if ((rcfp = fopen(newsrc, "r")) != NULL) {
  		rcreadok = FALSE;
  		while (fgets(rcbuf, LBUFLEN, rcfp) != NULL) {
diff -c -r 2.7/src/readr.c 2.8/src/readr.c
*** 2.7/src/readr.c	Tue Jun  8 08:35:14 1982
--- 2.8/src/readr.c	Mon Jun 21 14:03:16 1982
***************
*** 2,8
   * readr - /bin/mail and msgs interface and associated functions.
   */
  
! static char *SccsId = "@(#) readr.c	2.10	6/8/82";
  
  #include "rparams.h"
  

--- 2,8 -----
   * readr - /bin/mail and msgs interface and associated functions.
   */
  
! static char *SccsId = "@(#) readr.c	2.11	6/21/82";
  
  #include "rparams.h"
  
***************
*** 421,427
  				break;
  			} else if (i)
  				fprintf(ofp, "Not contributor: cancelling locally only.\n");
! 			if (!cancel(ofp, hptr, i)) {
  				clear(bit);
  				saveart;
  				nextbit();

--- 421,427 -----
  				break;
  			} else if (i)
  				fprintf(ofp, "Not contributor: cancelling locally only.\n");
! 			if (!cancel(ofp, hptr, i) && hptr == &h) {
  				clear(bit);
  				saveart;
  				nextbit();
***************
*** 426,431
  				saveart;
  				nextbit();
  				obit = -1;
  				if (!cflag)
  					putc('\n', ofp);
  			}

--- 426,432 -----
  				saveart;
  				nextbit();
  				obit = -1;
+ 				fp = NULL;
  				if (!cflag)
  					putc('\n', ofp);
  			}
***************
*** 446,451
  				bptr++;
  			}
  			tfilename = hptr->path;
  			if (*bptr != '\0') goto badropt;
  			{
  				register char *pathptr, *ptr;

--- 447,458 -----
  				bptr++;
  			}
  			tfilename = hptr->path;
+ 			ptr1 = index(tfilename, '(');
+ 			if (ptr1) {
+ 				while (ptr1[-1] == ' ')
+ 					ptr1--;
+ 				*ptr1 = 0;
+ 			}
  			if (*bptr != '\0') goto badropt;
  			{
  				register char *pathptr, *ptr;
diff -c -r 2.7/src/rfuncs.c 2.8/src/rfuncs.c
*** 2.7/src/rfuncs.c	Tue Jun  1 08:25:30 1982
--- 2.8/src/rfuncs.c	Mon Jun 21 14:03:17 1982
***************
*** 2,8
   * rfuncs - functions for readnews.
   */
  
! static char *SccsId = "@(#) rfuncs.c	2.6	6/1/82";
  
  #include "rparams.h"
  

--- 2,8 -----
   * rfuncs - functions for readnews.
   */
  
! static char *SccsId = "@(#) rfuncs.c	2.7	6/21/82";
  
  #include "rparams.h"
  
***************
*** 125,131
  {
  	register FILE *fp = NULL, *ofp;
  	struct hbuf h;
! 	register char *ptr;
  	int news = 0;
  
  	ofp = xfopen(mktemp(outfile), "w");

--- 125,131 -----
  {
  	register FILE *fp = NULL, *ofp;
  	struct hbuf h;
! 	register char *ptr, *fname;
  	int news = 0;
  
  	ofp = xfopen(mktemp(outfile), "w");
***************
*** 147,154
  				nextbit();
  				continue;
  			}
! 			fprintf(ofp, "From %s %s\nNewsgroups: %s\n", h.path, h.subdate, h.nbuf);
! 			fprintf(ofp, "Subject: %s\nArticle-ID: %s/%d\n\n", h.title, groupdir, bit);
  			tprint(fp, ofp);
  			putc('\n', ofp);
  			news = TRUE;

--- 147,167 -----
  				nextbit();
  				continue;
  			}
! 			fname = ptr = index(h.path, '(');
! 			while (ptr && ptr[-1] == ' ')
! 				ptr--;
! 			if (ptr)
! 				*ptr = 0;
! 			fname++;
! 			ptr = fname+strlen(fname)-1;
! 			if (*ptr == ')')
! 				*ptr = 0;
! 			fprintf(ofp, "From %s %s\n", h.path, h.subdate);
! 			if (fname)
! 				fprintf(ofp, "Full-Name: %s\n", fname);
! 			fprintf(ofp, "Newsgroups: %s\n", h.nbuf);
! 			fprintf(ofp, "Subject: %s\n", h.title);
! 			fprintf(ofp, "Article-ID: %s/%d\n\n", groupdir, bit);
  			tprint(fp, ofp);
  			putc('\n', ofp);
  			news = TRUE;
Only in 2.7/src: tags