unofficial patch to smail 2.5

David Schmidt davids at iscuva.ISCS.COM
Thu Apr 7 08:18:35 AEST 1988


Here is a small patch to smail 2.5 (comp.sources.unix, volume 11).
It adds the ability to create aliases which will pipe the mail
message into a program.

For example, you can receive news mailed to you by creating the
following alias:

	rnews:"|/usr/bin/rnews"

Apply this using patch:

*** old/aliases.8	Thu Oct  8 08:53:09 1987
--- ./aliases.8	Wed Apr  6 14:53:09 1988
***************
*** 169,176
  .I sendmail
  is that
  .I smail
! doesn't handle stuff like mail to files
! or command execution.
  .SH SEE ALSO
  smail(8), paths(8), pathproc(8)
  .SH VERSION

--- 169,180 -----
  .I sendmail
  is that
  .I smail
! doesn't handle stuff like mail to files.  It does however handle
! command execution.  The format of a program alias is
! .sp
! .ce
! mylogin~"|/myprogram"
! .sp
  .SH SEE ALSO
  smail(8), paths(8), pathproc(8)
  .SH VERSION

*** old/deliver.c	Thu Oct  8 08:53:36 1987
--- ./deliver.c	Wed Apr  6 14:53:24 1988
***************
*** 9,20
  static char 	*sccsid="@(#)deliver.c	2.5 (smail) 9/15/87";
  #endif
  
! # include	<stdio.h>
! # include	<sys/types.h>
! # include	<sys/stat.h>
! # include	<ctype.h>
! # include	<signal.h>
! # include	"defs.h"
  
  extern int  exitstat;		/* set if a forked mailer fails */
  extern enum edebug debug;	/* how verbose we are 		*/ 

--- 9,20 -----
  static char 	*sccsid="@(#)deliver.c	2.5 (smail) 9/15/87";
  #endif
  
! #include <stdio.h>
! #include <sys/types.h>
! #include <sys/stat.h>
! #include <ctype.h>
! #include <signal.h>
! #include "defs.h"
  
  extern int  exitstat;		/* set if a forked mailer fails */
  extern enum edebug debug;	/* how verbose we are 		*/ 
***************
*** 146,152
  		}
  
  		(void) sprintf(lcommand, LMAIL(from, hostv[i]));
! 		(void) sprintf(rcommand, RMAIL(flags, from, hostv[i]));
  
  /*
  **  For each address with the same host name and form, append the user

--- 146,152 -----
  		}
  
  		(void) sprintf(lcommand, LMAIL(from, hostv[i]));
! 		(void) sprintf(rcommand, RMAIL(flags, from, hostv[i], userv[i]));
  
  /*
  **  For each address with the same host name and form, append the user
***************
*** 153,159
  **  name to the command line, and set form = ERROR so we skip this address
  **  on later passes. 
  */
! 		/* we initialized lend (rend) to point at the
  		 * beginning of its buffer, so that at
  		 * least one address will be used regardless
  		 * of the length of lcommand (rcommand).

--- 153,159 -----
  **  name to the command line, and set form = ERROR so we skip this address
  **  on later passes. 
  */
! 		/* we initialized lend (rend) (pend) to point at the
  		 * beginning of its buffer, so that at
  		 * least one address will be used regardless
  		 * of the length of lcommand (rcommand).
***************
*** 205,211
  		**
  		** Rather, go straight to the next smail routing level.
  		*/
! 		if(form == ERROR) {
  			static char errbuf[SMLBUF];
  			(void) sprintf(errbuf,
  				"address resolution ('%s' @ '%s') failed",

--- 205,211 -----
  		**
  		** Rather, go straight to the next smail routing level.
  		*/
! 		if (form == ERROR) {
  			static char errbuf[SMLBUF];
  			(void) sprintf(errbuf,
  				"address resolution ('%s' @ '%s') failed",
***************
*** 219,224
  			command = scommand;
  		} else if (form == LOCAL) {
  			command = lcommand;
  		} else {
  			command = rcommand;
  			if(flags == uux_noqueue) {

--- 219,233 -----
  			command = scommand;
  		} else if (form == LOCAL) {
  			command = lcommand;
+ #ifndef SENDMAIL
+ 			c = index(command, '|');
+ 			if (c != NULL) {
+ 				command = c;			/* setup the new command */
+ 				command++;				/* step over the pipe symbol */
+ 				while (*c) c++;			/* find the end of the command */
+ 				if (*(c-1) == '\'' || *(c-1) == '"') *(c-1) = '\0';
+ 			}
+ #endif SENDMAIL
  		} else {
  			command = rcommand;
  			if(flags == uux_noqueue) {

-- 
David Schmidt              UUCP:  davids at iscuva.ISCS.COM
ISC Systems Corporation           (uunet!iscuva!davids)
East 22425 Appleway        Phone: +1 509 927-5479
Liberty Lake, WA  99019



More information about the Comp.sources.bugs mailing list