This is execm.c in view mode; [Download] [Up]
/* @(#)contrib/execm/execm.c 1.2 24 Oct 1990 05:17:22 */
/*
* execm.c
*
* This program is a substitute for Xenix's /usr/lib/mail/execmail.
* It is for use in systems running Smail 3. If you install this program
* as /usr/lib/mail/execmail, and then add the line "set execmail" to
* /usr/lib/mail/mailrc, then the Xenix /usr/bin/mail program will accept
* addresses of the form "user@some.domain".
*
* NOTE: Installing this program disables the Xenix aliasing and routing
* facilities (and Micnet). If you really _need_ Micnet, then it
* may be possible to configure Smail to call the original
* execmail program. Send me a note if you want to try it.
*
* Written by Chip Salzenberg at A T Engineering <chip@ateng.uucp>.
* Released to Usenet on 01 Dec 1987.
* Modified 25 Jul 1988 for use with Smail 3.x.
*
* Do what you want with this program.
* I'm not responsible for lost mail -- not that I expect problems. :-)
*/
#include <stdio.h>
#include <signal.h>
/*
* Library functions
*/
extern char *malloc();
/*
* Globals used for getopt()
*/
extern char *optarg;
extern int optind, opterr;
/*
* The Program
*/
main(argc, argv)
int argc;
char **argv;
{
char *progname = argv[0];
char **sav;
int sac, ch, badopts;
/*
* Allocate memory for new arguments, and set the program name.
* Note the magic number eight; sorry.
*/
if ((sav = (char **) malloc((argc + 8) * sizeof(char *))) == 0)
{
fprintf(stderr, "%s: out of memory?!\n", progname);
exit(1);
}
sav[0] = "smail";
sac = 1;
/*
* Translate the execmail options to Smail 3.x options.
*/
badopts = 0;
while ((ch = getopt(argc, argv, "f:h:mnr")) != EOF)
{
switch (ch)
{
case 'f': /* Who is this message from? */
sav[sac++] = "-f";
sav[sac++] = optarg;
break;
case 'h': /* Max hop count */
sav[sac++] = "-h";
sav[sac++] = optarg;
break;
case 'm': /* Include sender in alias expansion */
sav[sac++] = "-m";
break;
case 'n': /* Disable alias expansion */
sav[sac++] = "-n";
break;
case 'r': /* Remote -- via UUCP, not Micnet */
break; /* smail doesn't understand Micnet anyway */
default: /* Illegal option */
++badopts;
break;
}
}
/*
* If invalid options or no addresses, print usage message and leave.
*/
if (badopts || optind >= argc)
{
fprintf(stderr,
"usage: %s [-f from][-h hopcount][-m][-n][-r] addresses\n",
progname);
exit(1);
}
/*
* Finish the argument list.
*/
while (optind < argc)
sav[sac++] = argv[optind++];
sav[sac] = 0;
/*
* Finally, let smail take over.
*/
execv("/bin/smail", sav);
execv("/usr/bin/smail", sav);
fprintf(stderr, "%s: can't execute smail!\n", progname);
exit(1);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.