xref: /csrg-svn/usr.sbin/sendmail/src/err.c (revision 406)
1 # include <stdio.h>
2 # include "dlvrmail.h"
3 # ifdef LOG
4 # include <log.h>
5 # endif LOG
6 
7 static char	SccsId[] = "@(#)err.c	1.2	07/25/80";
8 
9 /*
10 **  ERR -- Print error message.
11 **
12 **	Prints an error message via printf to the diagnostic
13 **	output.  If LOG is defined, it logs it also.
14 **
15 **	Parameters:
16 **		f -- the format string
17 **		a, b, c, d, e -- parameters
18 **
19 **	Returns:
20 **		-1 always
21 **
22 **	Side Effects:
23 **		Sets Error.
24 **		Sets ExitStat.
25 **
26 **	Requires:
27 **		sprintf (sys)
28 **		printf (sys)
29 **		logmsg
30 **
31 **	History:
32 **		12/29/79 -- written.
33 */
34 
35 /*VARARGS1*/
36 syserr(fmt, a, b, c, d, e)
37 	char *fmt;
38 {
39 	extern int errno;
40 	static char errbuf[MAXLINE+1];
41 	register char *p;
42 	extern char *sys_errlist[];
43 	extern int sys_nerr;
44 
45 	sprintf(errbuf, fmt, a, b, c, d, e);
46 	if (errno != 0)
47 	{
48 		p = &errbuf[strlen(errbuf)];
49 		if (errno < sys_nerr && errno > 0)
50 			sprintf(p, ": %s", sys_errlist[errno]);
51 		else
52 			sprintf(p, ": error %d", errno);
53 	}
54 	printf("delivermail: %s\n", errbuf);
55 	Error++;
56 
57 	/* determine exit status if not already set */
58 	if (ExitStat == EX_OK)
59 	{
60 		if (errno == 0)
61 			ExitStat = EX_SOFTWARE;
62 		else
63 			ExitStat = EX_UNAVAIL;
64 	}
65 
66 # ifdef LOG
67 	logmsg(LOG_ERR, "%s->%s: %s", From.q_paddr, To, errbuf);
68 # endif LOG
69 	errno = 0;
70 	return (-1);
71 }
72 /*
73 **  USRERR -- Signal user error.
74 **
75 **	This is much like syserr except it is for user errors.
76 **
77 **	Parameters:
78 **		fmt, a, b, c, d -- printf strings
79 **
80 **	Returns:
81 **		-1
82 **
83 **	Side Effects:
84 **		sets Error.
85 **
86 **	Requires:
87 **		printf (sys)
88 **
89 **	History:
90 **		1/1/80 -- written.
91 */
92 
93 /*VARARGS1*/
94 usrerr(fmt, a, b, c, d, e)
95 	char *fmt;
96 {
97 	extern char SuprErrs;
98 
99 	if (SuprErrs)
100 		return;
101 
102 	Error++;
103 	if (To != NULL)
104 		printf("%s... ", To);
105 	printf(fmt, a, b, c, d, e);
106 	printf("\n");
107 	return (-1);
108 }
109