if no local mailer available; give real "errno" message in syserr.
SCCS-vsn: usr.sbin/sendmail/src/err.c 4.4
SCCS-vsn: usr.sbin/sendmail/src/deliver.c 4.9
SCCS-vsn: usr.sbin/sendmail/src/version.c 4.38
# include "sendmail.h"
# include <sys/stat.h>
# include "sendmail.h"
# include <sys/stat.h>
-SCCSID(@(#)deliver.c 4.8 %G%);
+SCCSID(@(#)deliver.c 4.9 %G%);
/*
** DELIVER -- Deliver a message to a list of addresses.
/*
** DELIVER -- Deliver a message to a list of addresses.
printf("Cannot exec '%s' errno=%d\n", m->m_mailer, errno);
(void) fflush(stdout);
#endif FIOCLEX
printf("Cannot exec '%s' errno=%d\n", m->m_mailer, errno);
(void) fflush(stdout);
#endif FIOCLEX
+ if (m == LocalMailer)
+ _exit(EX_TEMPFAIL);
+ else
+ _exit(EX_UNAVAILABLE);
-SCCSID(@(#)err.c 4.3 %G%);
+SCCSID(@(#)err.c 4.4 %G%);
/*
** SYSERR -- Print error message.
/*
** SYSERR -- Print error message.
syserr(fmt, a, b, c, d, e)
char *fmt;
{
syserr(fmt, a, b, c, d, e)
char *fmt;
{
+ register char *p;
+ int olderrno = errno;
extern char Arpa_PSyserr[];
extern char Arpa_TSyserr[];
extern char Arpa_PSyserr[];
extern char Arpa_TSyserr[];
/* format and output the error message */
/* format and output the error message */
p = Arpa_PSyserr;
else
p = Arpa_TSyserr;
p = Arpa_PSyserr;
else
p = Arpa_TSyserr;
- fmtmsg(MsgBuf, (char *) NULL, p, fmt, a, b, c, d, e);
+ fmtmsg(MsgBuf, (char *) NULL, p, olderrno, fmt, a, b, c, d, e);
puterrmsg(MsgBuf);
/* determine exit status if not already set */
if (ExitStat == EX_OK)
{
puterrmsg(MsgBuf);
/* determine exit status if not already set */
if (ExitStat == EX_OK)
{
ExitStat = EX_SOFTWARE;
else
ExitStat = EX_OSERR;
ExitStat = EX_SOFTWARE;
else
ExitStat = EX_OSERR;
{
extern char SuprErrs;
extern char Arpa_Usrerr[];
{
extern char SuprErrs;
extern char Arpa_Usrerr[];
- fmtmsg(MsgBuf, CurEnv->e_to, Arpa_Usrerr, fmt, a, b, c, d, e);
+ fmtmsg(MsgBuf, CurEnv->e_to, Arpa_Usrerr, errno, fmt, a, b, c, d, e);
puterrmsg(MsgBuf);
if (QuickAbort)
puterrmsg(MsgBuf);
if (QuickAbort)
register char *msg;
{
errno = 0;
register char *msg;
{
errno = 0;
- fmtmsg(MsgBuf, CurEnv->e_to, num, msg, a, b, c, d, e);
+ fmtmsg(MsgBuf, CurEnv->e_to, num, 0, msg, a, b, c, d, e);
putmsg(MsgBuf, FALSE);
}
\f/*
putmsg(MsgBuf, FALSE);
}
\f/*
register char *msg;
{
errno = 0;
register char *msg;
{
errno = 0;
- fmtmsg(MsgBuf, (char *) NULL, num, msg, a, b, c, d, e);
+ fmtmsg(MsgBuf, (char *) NULL, num, 0, msg, a, b, c, d, e);
putmsg(MsgBuf, FALSE);
}
\f/*
putmsg(MsgBuf, FALSE);
}
\f/*
** eb -- error buffer to get result.
** to -- the recipient tag for this message.
** num -- arpanet error number.
** eb -- error buffer to get result.
** to -- the recipient tag for this message.
** num -- arpanet error number.
+** en -- the error number to display.
** fmt -- format of string.
** a, b, c, d, e -- arguments.
**
** fmt -- format of string.
** a, b, c, d, e -- arguments.
**
-fmtmsg(eb, to, num, fmt, a, b, c, d, e)
+fmtmsg(eb, to, num, eno, fmt, a, b, c, d, e)
register char *eb;
char *to;
char *num;
register char *eb;
char *to;
char *num;
-static char SccsId[] = "@(#)SendMail version 4.37 of %G%";
+static char SccsId[] = "@(#)SendMail version 4.38 of %G%";
-char Version[] = "4.37";
+char Version[] = "4.38";