[net.sources] vn diffs to use Reply-to and From headers

andy@icom.UUCP (Andrew H. Marrinson) (09/05/86)

Here are the context diffs to vn to make it use the Reply-to, and From
header for responding via the 'm' command.  This is useful for those who
have auto-routing software.  I also added code to insert a To header in the
message being built.

------------------------ cut here, run through sh -----------------------
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	head.h.diff
#	reader.c.diff
#	strings.c.diff
# This archive created: Thu Sep  4 20:42:15 1986
export PATH; PATH=/bin:$PATH
echo shar: extracting "'head.h.diff'" '(504 characters)'
if test -f 'head.h.diff'
then
	echo shar: will not over-write existing file "'head.h.diff'"
else
sed 's/^	X//' << \SHAR_EOF > 'head.h.diff'
	X*** head.h.old	Tue Sep  2 19:53:52 1986
	X--- head.h	Tue Sep  2 19:52:52 1986
	X***************
	X*** 12,17
	X  #define DHDLEN 6
	X  #define FHEAD "From: "
	X  #define FHDLEN 6
	X  #define FTHEAD "Followup-To: "
	X  #define FTHDLEN 13
	X  #define THEAD "Subject: "
	X
	X--- 12,21 -----
	X  #define DHDLEN 6
	X  #define FHEAD "From: "
	X  #define FHDLEN 6
	X+ #define RTHEAD "Reply-To: "
	X+ #define RTHDLEN 10
	X+ #define TOHEAD "To: "
	X+ #define TOHDLEN 4
	X  #define FTHEAD "Followup-To: "
	X  #define FTHDLEN 13
	X  #define THEAD "Subject: "
SHAR_EOF
if test 504 -ne "`wc -c < 'head.h.diff'`"
then
	echo shar: error transmitting "'head.h.diff'" '(should have been 504 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'reader.c.diff'" '(5305 characters)'
if test -f 'reader.c.diff'
then
	echo shar: will not over-write existing file "'reader.c.diff'"
else
sed 's/^	X//' << \SHAR_EOF > 'reader.c.diff'
	X*** reader.c.old	Tue Sep  2 19:53:54 1986
	X--- reader.c	Tue Sep  2 20:24:37 1986
	X***************
	X*** 19,26
	X  extern char *Hdon_msg;
	X  extern char *Hdoff_msg;
	X  
	X! extern char *T_head, *FT_head, *N_head, *L_head;
	X! extern char *F_head, *P_head, *M_head, *R_head;
	X  
	X  static FILE *Fpread;
	X  static char *Fname;
	X
	X--- 19,26 -----
	X  extern char *Hdon_msg;
	X  extern char *Hdoff_msg;
	X  
	X! extern char *T_head, *FT_head, *N_head, *L_head, *RT_head;
	X! extern char *TO_head, *F_head, *P_head, *M_head, *R_head;
	X  
	X  static FILE *Fpread;
	X  static char *Fname;
	X***************
	X*** 93,100
	X  	double atof();
	X  	char *optr;
	X  	char c, *rf, buf[RECLEN], path[RECLEN], mid[RECLEN], ngrp[RECLEN];
	X! 	char from[RECLEN], title[RECLEN], flto[RECLEN], pstr[24];
	X! 	char dgname[48], getpgch(), *index(), *digest_extract();
	X  	char *tgetstr();
	X  
	X  	*pages = 0;
	X
	X--- 93,100 -----
	X  	double atof();
	X  	char *optr;
	X  	char c, *rf, buf[RECLEN], path[RECLEN], mid[RECLEN], ngrp[RECLEN];
	X! 	char from[RECLEN], title[RECLEN], flto[RECLEN], reply[RECLEN];
	X! 	char pstr[24], dgname[48], getpgch(), *index(), *digest_extract();
	X  	char *tgetstr();
	X  
	X  	*pages = 0;
	X***************
	X*** 117,123
	X  		return (0);
	X  	}
	X  
	X! 	hlines = gethead (path, mid, from, title, ngrp, flto, &artlin);
	X  	total = (float) artlin + 1.0;
	X  	if (total < .99)
	X  		total = 1.0;
	X
	X--- 117,123 -----
	X  		return (0);
	X  	}
	X  
	X! 	hlines = gethead (path, mid, from, title, ngrp, flto, reply, &artlin);
	X  	total = (float) artlin + 1.0;
	X  	if (total < .99)
	X  		total = 1.0;
	X***************
	X*** 189,195
	X  			else
	X  			strcpy (pstr,PAGE_NEXT);
	X  		}
	X! 		c = getpgch(pstr,path,mid,from,title,ngrp,flto);
	X  
	X  		/*
	X  			handle user input:
	X
	X--- 189,195 -----
	X  			else
	X  			strcpy (pstr,PAGE_NEXT);
	X  		}
	X! 		c = getpgch(pstr,path,mid,from,reply,title,ngrp,flto);
	X  
	X  		/*
	X  			handle user input:
	X***************
	X*** 244,251
	X  	posting followups, does not rewind, but leaves file at end of header
	X  	lines.  Returns number of header lines.
	X  */
	X! static gethead (path, mid, from, title, ngrp, flto, lin)
	X! char *path, *mid, *from, *title, *ngrp, *flto;
	X  int *lin;
	X  {
	X  	int count;
	X
	X--- 244,251 -----
	X  	posting followups, does not rewind, but leaves file at end of header
	X  	lines.  Returns number of header lines.
	X  */
	X! static gethead (path, mid, from, title, ngrp, flto, reply, lin)
	X! char *path, *mid, *from, *title, *ngrp, *flto, *reply;
	X  int *lin;
	X  {
	X  	int count;
	X***************
	X*** 253,259
	X  	long pos,ftell();
	X  
	X  	*lin = 0;
	X! 	*path = *mid = *from = *title = *ngrp = *flto = '\0';
	X  
	X  	/* for conditional is abnormal - expected exit is break */
	X  	for (count = 0; count < HDR_LINES && fgets(buf,RECLEN-1,Fpread) != NULL; ++count)
	X
	X--- 253,259 -----
	X  	long pos,ftell();
	X  
	X  	*lin = 0;
	X! 	*path = *mid = *from = *title = *ngrp = *flto = *reply = '\0';
	X  
	X  	/* for conditional is abnormal - expected exit is break */
	X  	for (count = 0; count < HDR_LINES && fgets(buf,RECLEN-1,Fpread) != NULL; ++count)
	X***************
	X*** 304,309
	X  			strcpy (flto,buf+FTHDLEN);
	X  			continue;
	X  		}
	X  		if (strncmp(buf,L_head,LHDLEN) == 0)
	X  		{
	X  			buf [strlen(buf)-1] = '\0';
	X
	X--- 304,315 -----
	X  			strcpy (flto,buf+FTHDLEN);
	X  			continue;
	X  		}
	X+ 		if (strncmp(buf,RT_head,RTHDLEN) == 0)
	X+ 		{
	X+ 			buf [strlen(buf)-1] = '\0';
	X+ 			strcpy (reply,buf+RTHDLEN);
	X+ 			continue;
	X+ 		}
	X  		if (strncmp(buf,L_head,LHDLEN) == 0)
	X  		{
	X  			buf [strlen(buf)-1] = '\0';
	X***************
	X*** 319,326
	X  	handles "mail", "save" and "followup" internally
	X  	as well as flag resets.
	X  */
	X! static char getpgch(prompt,path,mid,from,title,ngrp,flto)
	X! char *prompt, *path, *mid, *from, *title, *ngrp, *flto;
	X  {
	X  	char c;
	X  	int ic;
	X
	X--- 325,332 -----
	X  	handles "mail", "save" and "followup" internally
	X  	as well as flag resets.
	X  */
	X! static char getpgch(prompt,path,mid,from,reply,title,ngrp,flto)
	X! char *prompt, *path, *mid, *from, *reply, *title, *ngrp, *flto;
	X  {
	X  	char c;
	X  	int ic;
	X***************
	X*** 362,368
	X  			help_pg ();
	X  			break;
	X  		case PG_REPLY:
	X! 			mail (path,title,from);
	X  			break;
	X  		case PG_FOLLOW:
	X  			followup (mid,title,ngrp,flto);
	X
	X--- 368,374 -----
	X  			help_pg ();
	X  			break;
	X  		case PG_REPLY:
	X! 			mail (*reply ? reply : from,title,from);
	X  			break;
	X  		case PG_FOLLOW:
	X  			followup (mid,title,ngrp,flto);
	X***************
	X*** 418,424
	X  	tmpnam (fn);
	X  	if ((fp = fopen(fn,"w")) == NULL)
	X  		printex ("can't open %s\n",fn);
	X! 	fprintf (fp,"%s%s%s\n\n%s:\n", T_head, FPFIX, t, f);
	X  	edcopy (fp);
	X  	fclose (fp);
	X  	tty_set (SAVEMODE);
	X
	X--- 424,430 -----
	X  	tmpnam (fn);
	X  	if ((fp = fopen(fn,"w")) == NULL)
	X  		printex ("can't open %s\n",fn);
	X! 	fprintf (fp,"%s%s\n%s%s%s\n\n%s:\n", TO_head, p, T_head, FPFIX, t, f);
	X  	edcopy (fp);
	X  	fclose (fp);
	X  	tty_set (SAVEMODE);
	X***************
	X*** 432,438
	X  	new = rprompt ("still want to mail it ? ",cmd);
	X  	if (new != NULL && (*new == 'y' || *new == 'Y'))
	X  	{
	X! 		sprintf (cmd,"%s %s <%s", Mailer, p, fn);
	X  		system (cmd);
	X  		printf ("given to mailer\n");
	X  	}
	X
	X--- 438,446 -----
	X  	new = rprompt ("still want to mail it ? ",cmd);
	X  	if (new != NULL && (*new == 'y' || *new == 'Y'))
	X  	{
	X! 		if ((new = index(p, '(')) != NULL)
	X! 			*new = '\0';	/* a poor way of deleting comments */
	X! 		sprintf (cmd,"%s '%s' <%s", Mailer, p, fn);
	X  		system (cmd);
	X  		printf ("given to mailer\n");
	X  	}
SHAR_EOF
if test 5305 -ne "`wc -c < 'reader.c.diff'`"
then
	echo shar: error transmitting "'reader.c.diff'" '(should have been 5305 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'strings.c.diff'" '(469 characters)'
if test -f 'strings.c.diff'
then
	echo shar: will not over-write existing file "'strings.c.diff'"
else
sed 's/^	X//' << \SHAR_EOF > 'strings.c.diff'
	X*** strings.c.old	Tue Sep  2 19:53:54 1986
	X--- strings.c	Tue Sep  2 19:52:51 1986
	X***************
	X*** 20,25
	X  char *D_head = DHEAD;
	X  char *F_head = FHEAD;
	X  char *FT_head = FTHEAD;
	X  char *T_head = THEAD;
	X  char *L_head = LHEAD;
	X  char *N_head = NHEAD;
	X
	X--- 20,27 -----
	X  char *D_head = DHEAD;
	X  char *F_head = FHEAD;
	X  char *FT_head = FTHEAD;
	X+ char *RT_head = RTHEAD;
	X+ char *TO_head = TOHEAD;
	X  char *T_head = THEAD;
	X  char *L_head = LHEAD;
	X  char *N_head = NHEAD;
SHAR_EOF
if test 469 -ne "`wc -c < 'strings.c.diff'`"
then
	echo shar: error transmitting "'strings.c.diff'" '(should have been 469 characters)'
fi
fi # end of overwriting check
#	End of shell archive
exit 0

-- 

	andy@icom.UUCP
	Or for those of		Andrew H. Marrinson
	you who wish to		ICOM Systems, Inc.
	play it the hard	Arlington Heights, IL 60005
	way: ihnp4!icom!andy