summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail/libsm/strexit.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/sendmail/libsm/strexit.c')
-rw-r--r--contrib/sendmail/libsm/strexit.c127
1 files changed, 127 insertions, 0 deletions
diff --git a/contrib/sendmail/libsm/strexit.c b/contrib/sendmail/libsm/strexit.c
new file mode 100644
index 0000000..0f2cdfc
--- /dev/null
+++ b/contrib/sendmail/libsm/strexit.c
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2001 Sendmail, Inc. and its suppliers.
+ * All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
+ */
+
+#include <sm/gen.h>
+SM_RCSID("@(#)$Id: strexit.c,v 1.5 2001/09/11 04:04:49 gshapiro Exp $")
+#include <sm/string.h>
+#include <sm/sysexits.h>
+
+/*
+** SM_STREXIT -- convert EX_* value from <sm/sysexits.h> to a character string
+**
+** This function is analogous to strerror(), except that it
+** operates on EX_* values from <sm/sysexits.h>.
+**
+** Parameters:
+** ex -- EX_* value
+**
+** Results:
+** pointer to a static message string
+*/
+
+char *
+sm_strexit(ex)
+ int ex;
+{
+ char *msg;
+ static char buf[64];
+
+ msg = sm_sysexitmsg(ex);
+ if (msg == NULL)
+ {
+ (void) sm_snprintf(buf, sizeof buf, "Unknown exit status %d",
+ ex);
+ msg = buf;
+ }
+ return msg;
+}
+
+/*
+** SM_SYSEXITMSG -- convert an EX_* value to a character string, or NULL
+**
+** Parameters:
+** ex -- EX_* value
+**
+** Results:
+** If ex is a known exit value, then a pointer to a static
+** message string is returned. Otherwise NULL is returned.
+*/
+
+char *
+sm_sysexitmsg(ex)
+ int ex;
+{
+ char *msg;
+
+ msg = sm_sysexmsg(ex);
+ if (msg != NULL)
+ return &msg[11];
+ else
+ return msg;
+}
+
+/*
+** SM_SYSEXMSG -- convert an EX_* value to a character string, or NULL
+**
+** Parameters:
+** ex -- EX_* value
+**
+** Results:
+** If ex is a known exit value, then a pointer to a static
+** string is returned. Otherwise NULL is returned.
+** The string contains the following fixed width fields:
+** [0] ':' if there is an errno value associated with this
+** exit value, otherwise ' '.
+** [1,3] 3 digit SMTP error code
+** [4] ' '
+** [5,9] 3 digit SMTP extended error code
+** [10] ' '
+** [11,] message string
+*/
+
+char *
+sm_sysexmsg(ex)
+ int ex;
+{
+ switch (ex)
+ {
+ case EX_USAGE:
+ return " 500 5.0.0 Command line usage error";
+ case EX_DATAERR:
+ return " 501 5.6.0 Data format error";
+ case EX_NOINPUT:
+ return ":550 5.3.0 Cannot open input";
+ case EX_NOUSER:
+ return " 550 5.1.1 User unknown";
+ case EX_NOHOST:
+ return " 550 5.1.2 Host unknown";
+ case EX_UNAVAILABLE:
+ return " 554 5.0.0 Service unavailable";
+ case EX_SOFTWARE:
+ return ":554 5.3.0 Internal error";
+ case EX_OSERR:
+ return ":451 4.0.0 Operating system error";
+ case EX_OSFILE:
+ return ":554 5.3.5 System file missing";
+ case EX_CANTCREAT:
+ return ":550 5.0.0 Can't create output";
+ case EX_IOERR:
+ return ":451 4.0.0 I/O error";
+ case EX_TEMPFAIL:
+ return " 450 4.0.0 Deferred";
+ case EX_PROTOCOL:
+ return " 554 5.5.0 Remote protocol error";
+ case EX_NOPERM:
+ return ":550 5.0.0 Insufficient permission";
+ case EX_CONFIG:
+ return " 554 5.3.5 Local configuration error";
+ default:
+ return NULL;
+ }
+}
OpenPOWER on IntegriCloud