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