err(1, Tflag);
err(1, "%s", Tflag);
main(argc, argv)	int argc;	char *argv[];{	int i;	struct name *to, *cc, *bcc, *smopts;	char *subject;	char *ef;	char nosrc = 0;	sig_t prevint;	char *rc;	/*	 * Set up a reasonable environment.	 * Figure out whether we are being run interactively,	 * start the SIGCHLD catcher, and so forth.	 */	(void)signal(SIGCHLD, sigchild);	if (isatty(0))		assign("interactive", "");	image = -1;	/*	 * Now, determine how we are being used.	 * We successively pick off - flags.	 * If there is anything left, it is the base of the list	 * of users to mail to.  Argp will be set to point to the	 * first of these users.	 */	ef = NULL;	to = NIL;	cc = NIL;	bcc = NIL;	smopts = NIL;	subject = NULL;	while ((i = getopt(argc, argv, "INT:b:c:dfins:u:v")) != -1) {		switch (i) {		case 'T':			/*			 * Next argument is temp file to write which			 * articles have been read/deleted for netnews.			 */			Tflag = optarg;			if ((i = creat(Tflag, 0600)) < 0)				err(1, Tflag);			(void)close(i);			break;		case 'u':			/*			 * Next argument is person to pretend to be.			 */			unsetenv("MAIL");			myname = optarg;			uflag = 1;			break;		case 'i':			/*			 * User wants to ignore interrupts.			 * Set the variable "ignore"			 */			assign("ignore", "");			break;		case 'd':			debug++;			break;		case 's':			/*			 * Give a subject field for sending from			 * non terminal			 */			subject = optarg;			break;		case 'f':			/*			 * User is specifying file to "edit" with Mail,			 * as opposed to reading system mailbox.			 * If no argument is given after -f, we read his			 * mbox file.			 *			 * getopt() can't handle optional arguments, so here			 * is an ugly hack to get around it.			 */			if ((argv[optind]) && (argv[optind][0] != '-'))				ef = argv[optind++];			else				ef = "&";			break;		case 'n':			/*			 * User doesn't want to source /usr/lib/Mail.rc			 */			nosrc++;			break;		case 'N':			/*			 * Avoid initial header printing.			 */			assign("noheader", "");			break;		case 'v':			/*			 * Send mailer verbose flag			 */			assign("verbose", "");			break;		case 'I':			/*			 * We're interactive			 */			assign("interactive", "");			break;		case 'c':			/*			 * Get Carbon Copy Recipient list			 */			cc = cat(cc, nalloc(optarg, GCC));			break;		case 'b':			/*			 * Get Blind Carbon Copy Recipient list			 */			bcc = cat(bcc, nalloc(optarg, GBCC));			break;		case '?':			fprintf(stderr, "\Usage: %s [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] to-addr ...\n\            [- sendmail-options ...]\n\       %s [-iInNv] -f [name]\n\       %s [-iInNv] [-u user]\n", __progname, __progname, __progname);			exit(1);		}	}	for (i = optind; (argv[i]) && (*argv[i] != '-'); i++)		to = cat(to, nalloc(argv[i], GTO));	for (; argv[i]; i++)		smopts = cat(smopts, nalloc(argv[i], 0));	/*	 * Check for inconsistent arguments.	 */	if (to == NIL && (subject != NULL || cc != NIL || bcc != NIL))		errx(1, "You must specify direct recipients with -s, -c, or -b");	if (ef != NULL && to != NIL)		errx(1, "Cannot give -f and people to send to");	tinit();	setscreensize();	input = stdin;	rcvmode = !to;	spreserve();	if (!nosrc)		load(_PATH_MASTER_RC);	/*	 * Expand returns a savestr, but load only uses the file name	 * for fopen, so it's safe to do this.	 */	if ((rc = getenv("MAILRC")) == 0)		rc = "~/.mailrc";	load(expand(rc));	if (!rcvmode) {		mail(to, cc, bcc, smopts, subject);		/*		 * why wait?		 */		exit(senderr);	}	/*	 * Ok, we are reading mail.	 * Decide whether we are editing a mailbox or reading	 * the system mailbox, and open up the right stuff.	 */	if (ef == NULL)		ef = "%";	if (setfile(ef) < 0)		exit(1);		/* error already reported */	if (sigsetjmp(hdrjmp, 1) == 0) {		extern char *version;		if ((prevint = signal(SIGINT, SIG_IGN)) != SIG_IGN)			(void)signal(SIGINT, hdrstop);		if (value("quiet") == NULL)			(void)printf("Mail version %s.  Type ? for help.\n",				version);		announce();		(void)fflush(stdout);		(void)signal(SIGINT, prevint);	}	commands();	(void)signal(SIGHUP, SIG_IGN);	(void)signal(SIGINT, SIG_IGN);	(void)signal(SIGQUIT, SIG_IGN);	quit();	exit(0);}