Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site sdcrdcf.UUCP Path: utzoo!utcs!lsuc!pesnta!hplabs!sdcrdcf!lwall From: lwall@sdcrdcf.UUCP (Larry Wall) Newsgroups: net.sources.bugs Subject: rn 4.3 patch #18 Message-ID: <2019@sdcrdcf.UUCP> Date: Thu, 23-May-85 20:43:12 EDT Article-I.D.: sdcrdcf.2019 Posted: Thu May 23 20:43:12 1985 Date-Received: Sat, 25-May-85 22:21:43 EDT Organization: System Development Corp. R+D, Santa Monica Lines: 507 System: rn version 4.3 Patch #: 18 Priority: ENHANCEMENT Subject: The 'r' and 'f' commands ought to work from "End of newsgroup" Description: The reply and followup commands should let you do so from a null article (typically the pseudo-article called "End of newsgroup") producing a basenote, or a mail message to nobody (yet). Not only would this be handy, but it allows certain news administrators who can't put Pnews and Rnmail in a public place to nevertheless let people originate notes or messages. It also lets you invoke Pnews or Rnmail with the same environment as rn, in the situation where you aren't really carrying environment variables around in your environment but rather setting them with -E. Fix: From rn, say "| patch -d DIR", where DIR is your rn source directory. Outside of rn, say "cd DIR; patch Patch #: 18 Index: common.h Prereq: 4.3.1.2 *** common.h.old Thu May 23 17:23:43 1985 --- common.h Thu May 23 17:24:16 1985 *************** *** 1,4 ! /* $Header: common.h,v 4.3.1.2 85/05/13 09:30:39 lwall Exp $ * * $Log: common.h,v $ * Revision 4.3.1.2 85/05/13 09:30:39 lwall --- 1,4 ----- ! /* $Header: common.h,v 4.3.1.3 85/05/23 17:19:32 lwall Exp $ * * $Log: common.h,v $ * Revision 4.3.1.3 85/05/23 17:19:32 lwall *************** *** 1,6 /* $Header: common.h,v 4.3.1.2 85/05/13 09:30:39 lwall Exp $ * * $Log: common.h,v $ * Revision 4.3.1.2 85/05/13 09:30:39 lwall * Added CUSTOMLINES option. * --- 1,9 ----- /* $Header: common.h,v 4.3.1.3 85/05/23 17:19:32 lwall Exp $ * * $Log: common.h,v $ + * Revision 4.3.1.3 85/05/23 17:19:32 lwall + * Now allows 'r' and 'f' on null articles. + * * Revision 4.3.1.2 85/05/13 09:30:39 lwall * Added CUSTOMLINES option. * *************** *** 531,537 #else # ifndef MAILHEADER /* % */ # ifdef CONDSUB ! # define MAILHEADER "To: %T\nSubject: Re: %S\nNewsgroups: %n\nIn-Reply-To: %i\n%(%[references]!=^$?References\\: %[references]\n)Organization: %o\nCc: \nBcc: \n\n" # else # define MAILHEADER "To: %T\nSubject: Re: %S\nNewsgroups: %n\nIn-Reply-To: %i\nReferences: %[references]\nCc: \nBcc: \n\n" # endif --- 534,540 ----- #else # ifndef MAILHEADER /* % */ # ifdef CONDSUB ! # define MAILHEADER "To: %T\nSubject: %(%i=^$?:Re: %S\nNewsgroups: %n\nIn-Reply-To: %i)\n%(%[references]!=^$?References\\: %[references]\n)Organization: %o\nCc: \nBcc: \n\n" # else # define MAILHEADER "To: %T\nSubject: Re: %S\nNewsgroups: %n\nIn-Reply-To: %i\nReferences: %[references]\nCc: \nBcc: \n\n" # endif *************** *** 548,554 #endif #ifndef NEWSHEADER /* % */ ! # define NEWSHEADER "Newsgroups: %F\nSubject: Re: %S\nSummary: \nExpires: \nReferences: %R\nSender: \nReply-To: %L@%H.UUCP (%N)\nFollowup-To: \nDistribution: %D\nOrganization: %o\nKeywords: %[keywords]\n\n" #endif #ifndef ATTRIBUTION /* % */ --- 551,561 ----- #endif #ifndef NEWSHEADER /* % */ ! # ifdef CONDSUB ! # define NEWSHEADER "Newsgroups: %(%F=^$?%C:%F)\nSubject: %(%S=^$?%\"\n\nSubject: \":Re: %S)\nSummary: \nExpires: \n%(%R=^$?:References: %R\n)Sender: \nReply-To: %L@%H.UUCP (%N)\nFollowup-To: \nDistribution: %(%i=^$?%\"Distribution: \":%D)\nOrganization: %o\nKeywords: %[keywords]\n\n" ! # else ! # define NEWSHEADER "Newsgroups: %F\nSubject: Re: %S\nSummary: \nExpires: \nReferences: %R\nSender: \nReply-To: %L@%H.UUCP (%N)\nFollowup-To: \nDistribution: %D\nOrganization: %o\nKeywords: %[keywords]\n\n" ! # endif #endif #ifndef ATTRIBUTION /* % */ Index: intrp.c Prereq: 4.3.1.4 *** intrp.c.old Thu May 23 17:28:02 1985 --- intrp.c Thu May 23 17:29:42 1985 *************** *** 1,4 ! /* $Header: intrp.c,v 4.3.1.4 85/05/21 13:35:21 lwall Exp $ * * $Log: intrp.c,v $ * Revision 4.3.1.4 85/05/21 13:35:21 lwall --- 1,4 ----- ! /* $Header: intrp.c,v 4.3.1.5 85/05/23 17:21:24 lwall Exp $ * * $Log: intrp.c,v $ * Revision 4.3.1.5 85/05/23 17:21:24 lwall *************** *** 1,6 /* $Header: intrp.c,v 4.3.1.4 85/05/21 13:35:21 lwall Exp $ * * $Log: intrp.c,v $ * Revision 4.3.1.4 85/05/21 13:35:21 lwall * Sped up "rn -c" by not doing unnecessary initialization. * --- 1,9 ----- /* $Header: intrp.c,v 4.3.1.5 85/05/23 17:21:24 lwall Exp $ * * $Log: intrp.c,v $ + * Revision 4.3.1.5 85/05/23 17:21:24 lwall + * Now allows 'r' and 'f' on null articles. + * * Revision 4.3.1.4 85/05/21 13:35:21 lwall * Sped up "rn -c" by not doing unnecessary initialization. * *************** *** 625,631 case 'i': if (!(s=artid_buf)) s = artid_buf = fetchlines(art,MESSID_LINE); ! if (*s != '<') { sprintf(scrbuf,"<%s>",artid_buf); s = scrbuf; } --- 628,634 ----- case 'i': if (!(s=artid_buf)) s = artid_buf = fetchlines(art,MESSID_LINE); ! if (*s && *s != '<') { sprintf(scrbuf,"<%s>",artid_buf); s = scrbuf; } *************** *** 713,719 artid_buf = fetchlines(art,MESSID_LINE); if (artid_buf[0] == '<') safecat(scrbuf,artid_buf,sizeof(scrbuf)); ! else { char tmpbuf[64]; sprintf(tmpbuf,"<%s>",artid_buf); --- 716,722 ----- artid_buf = fetchlines(art,MESSID_LINE); if (artid_buf[0] == '<') safecat(scrbuf,artid_buf,sizeof(scrbuf)); ! else if (artid_buf[0]) { char tmpbuf[64]; sprintf(tmpbuf,"<%s>",artid_buf); Index: respond.c Prereq: 4.3.1.3 *** respond.c.old Thu May 23 17:27:17 1985 --- respond.c Thu May 23 17:27:44 1985 *************** *** 1,4 ! /* $Header: respond.c,v 4.3.1.3 85/05/15 14:42:32 lwall Exp $ * * $Log: respond.c,v $ * Revision 4.3.1.3 85/05/15 14:42:32 lwall --- 1,4 ----- ! /* $Header: respond.c,v 4.3.1.4 85/05/23 17:24:49 lwall Exp $ * * $Log: respond.c,v $ * Revision 4.3.1.4 85/05/23 17:24:49 lwall *************** *** 1,6 /* $Header: respond.c,v 4.3.1.3 85/05/15 14:42:32 lwall Exp $ * * $Log: respond.c,v $ * Revision 4.3.1.3 85/05/15 14:42:32 lwall * Removed duplicate include of intrp.h. * --- 1,9 ----- /* $Header: respond.c,v 4.3.1.4 85/05/23 17:24:49 lwall Exp $ * * $Log: respond.c,v $ + * Revision 4.3.1.4 85/05/23 17:24:49 lwall + * Now allows 'r' and 'f' on null articles. + * * Revision 4.3.1.3 85/05/15 14:42:32 lwall * Removed duplicate include of intrp.h. * *************** *** 306,322 bool incl_body = (*buf == 'R'); char *maildoer = savestr(filexp(getval("MAILPOSTER",MAILPOSTER))); ! if (artopen(art) == Nullfp) { ! #ifdef VERBOSE ! IF(verbose) ! fputs("\nBut null articles are so dull! :-)\n",stdout) FLUSH; ! ELSE ! #endif ! #ifdef TERSE ! fputs(nullart,stdout) FLUSH; ! #endif ! goto no_reply; ! } tmpfp = fopen(headname,"w"); /* open header file */ if (tmpfp == Nullfp) { printf(cantcreate,headname) FLUSH; --- 309,315 ----- bool incl_body = (*buf == 'R'); char *maildoer = savestr(filexp(getval("MAILPOSTER",MAILPOSTER))); ! artopen(art); tmpfp = fopen(headname,"w"); /* open header file */ if (tmpfp == Nullfp) { printf(cantcreate,headname) FLUSH; *************** *** 334,340 #ifdef TERSE printf("\n%s\n(Header in %s)\n",buf,headname) FLUSH; #endif ! if (incl_body) { interp(buf, (sizeof buf), getval("YOUSAID",YOUSAID)); fprintf(tmpfp,"%s\n",buf); #ifdef ASYNC_PARSE --- 327,333 ----- #ifdef TERSE printf("\n%s\n(Header in %s)\n",buf,headname) FLUSH; #endif ! if (incl_body && artfp != Nullfp) { interp(buf, (sizeof buf), getval("YOUSAID",YOUSAID)); fprintf(tmpfp,"%s\n",buf); #ifdef ASYNC_PARSE *************** *** 359,375 { bool incl_body = (*buf == 'F'); ! if (artopen(art) == Nullfp) { ! #ifdef VERBOSE ! IF(verbose) ! fputs("\nNull articles give me indigestion! :-)\n",stdout) FLUSH; ! ELSE ! #endif ! #ifdef TERSE ! fputs(nullart,stdout) FLUSH; ! #endif ! return; ! } tmpfp = fopen(headname,"w"); if (tmpfp == Nullfp) { printf(cantcreate,headname) FLUSH; --- 352,358 ----- { bool incl_body = (*buf == 'F'); ! artopen(art); tmpfp = fopen(headname,"w"); if (tmpfp == Nullfp) { printf(cantcreate,headname) FLUSH; *************** *** 377,383 } interp(buf, (sizeof buf), getval("NEWSHEADER",NEWSHEADER)); fprintf(tmpfp,"%s",buf); ! if (incl_body) { #ifdef VERBOSE if (verbose) fputs("\n\ --- 360,366 ----- } interp(buf, (sizeof buf), getval("NEWSHEADER",NEWSHEADER)); fprintf(tmpfp,"%s",buf); ! if (incl_body && artfp != Nullfp) { #ifdef VERBOSE if (verbose) fputs("\n\ Index: rn.1 Prereq: 4.3.1.2 *** rn.1.old Thu May 23 17:21:17 1985 --- rn.1 Thu May 23 17:23:24 1985 *************** *** 1,4 ! ''' $Header: rn.1,v 4.3.1.2 85/05/13 09:27:53 lwall Exp $ ''' ''' $Log: rn.1,v $ ''' Revision 4.3.1.2 85/05/13 09:27:53 lwall --- 1,4 ----- ! ''' $Header: rn.1,v 4.3.1.3 85/05/23 17:14:14 lwall Exp $ ''' ''' $Log: rn.1,v $ ''' Revision 4.3.1.3 85/05/23 17:14:14 lwall *************** *** 1,6 ''' $Header: rn.1,v 4.3.1.2 85/05/13 09:27:53 lwall Exp $ ''' ''' $Log: rn.1,v $ ''' Revision 4.3.1.2 85/05/13 09:27:53 lwall ''' Added CUSTOMLINES option. ''' --- 1,9 ----- ''' $Header: rn.1,v 4.3.1.3 85/05/23 17:14:14 lwall Exp $ ''' ''' $Log: rn.1,v $ + ''' Revision 4.3.1.3 85/05/23 17:14:14 lwall + ''' Now allows 'r' and 'f' on null articles. + ''' ''' Revision 4.3.1.2 85/05/13 09:27:53 lwall ''' Added CUSTOMLINES option. ''' *************** *** 512,517 the mailing behavior of .I rn (see environment section). .Ip R 8 Reply, including the current article in the header file generated. (See \*(L'F\*(R' command below). --- 515,523 ----- the mailing behavior of .I rn (see environment section). + If on a nonexistent article such as the "End of newsgroup" pseudo-article + (which you can get to with a \*(L'$\*(R' command), invokes the mailer to + nobody in particular. .Ip R 8 Reply, including the current article in the header file generated. (See \*(L'F\*(R' command below). *************** *** 518,523 The YOUSAID environment variable controls the format of the attribution line. .Ip f 8 Submit a followup article. .Ip F 8 Submit a followup article, and include the old article, with lines prefixed either by \*(L">\*(R" or by the argument to a --- 524,532 ----- The YOUSAID environment variable controls the format of the attribution line. .Ip f 8 Submit a followup article. + If on a nonexistent article such as the "End of newsgroup" pseudo-article + (which you can get to with a \*(L'$\*(R' command), posts an original + article (basenote). .Ip F 8 Submit a followup article, and include the old article, with lines prefixed either by \*(L">\*(R" or by the argument to a *************** *** 1336,1342 .Sp To: %T .br ! Subject: Re: %S .br Newsgroups: %n .br --- 1345,1351 ----- .Sp To: %T .br ! Subject: %(%i=^$?:Re: %S .br Newsgroups: %n .br *************** *** 1340,1346 .br Newsgroups: %n .br ! In-Reply-To: %i .br %(%[references]!=^$?References\\: %[references] .br --- 1349,1355 ----- .br Newsgroups: %n .br ! In-Reply-To: %i) .br %(%[references]!=^$?References\\: %[references] .br *************** *** 1383,1389 .Sp Default: .Sp ! Newsgroups: %F .br Subject: Re: %S .br --- 1392,1398 ----- .Sp Default: .Sp ! Newsgroups: %(%F=^$?%C:%F) .br Subject: %(%S=^$?%"\n\nSubject: ":Re: %S) .br *************** *** 1385,1391 .Sp Newsgroups: %F .br ! Subject: Re: %S .br Summary: .br --- 1394,1400 ----- .Sp Newsgroups: %(%F=^$?%C:%F) .br ! Subject: %(%S=^$?%"\n\nSubject: ":Re: %S) .br Summary: .br *************** *** 1391,1397 .br Expires: .br ! References: %R .br Sender: .br --- 1400,1406 ----- .br Expires: .br ! %(%R=^$?:References: %R .br )Sender: .br *************** *** 1393,1399 .br References: %R .br ! Sender: .br Reply-To: %L@%H.UUCP (%N) .br --- 1402,1408 ----- .br %(%R=^$?:References: %R .br ! )Sender: .br Reply-To: %L@%H.UUCP (%N) .br *************** *** 1399,1405 .br Followup-To: .br ! Distribution: %D .br Organization: %o .br --- 1408,1414 ----- .br Followup-To: .br ! Distribution: %(%i=^$?%"\nDistribution: ":%D) .br Organization: %o .br