2 * Copyright (c) 2001 Sendmail, Inc. and its suppliers.
4 * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
5 * Copyright (c) 1988, 1993
6 * The Regents of the University of California. All rights reserved.
8 * By using this file, you agree to the terms and conditions set
9 * forth in the LICENSE file which can be found at the top level of
10 * the sendmail distribution.
14 SM_RCSID("@(#)$Id: errstring.c,v 1.12 2001/10/03 16:09:32 ca Exp $")
17 #include <stdio.h> /* sys_errlist, on some platforms */
19 #include <sm/io.h> /* sm_snprintf */
20 #include <sm/string.h>
21 #include <sm/errstring.h>
29 # include <ldap.h> /* for LDAP error codes */
33 ** Notice: this file is used by libmilter. Please try to avoid
34 ** using libsm specific functions.
38 ** SM_ERRSTRING -- return string description of error code
41 ** errnum -- the error number to translate
44 ** A string description of errnum.
56 /* SunOS gives "Not owner" -- this is the POSIX message */
57 return "Operation not permitted";
60 ** Error messages used internally in sendmail.
63 case E_SM_OPENTIMEOUT:
64 return "Timeout on file open";
67 return "Symbolic links not allowed";
70 return "Hard links not allowed";
73 return "Regular files only";
76 return "Executable files not allowed";
79 return "World writable directory";
82 return "Group writable directory";
85 return "File changed after open";
88 return "World writable file";
91 return "Group writable file";
94 return "Group readable file";
97 return "World readable file";
100 ** DNS error messages.
104 case HOST_NOT_FOUND + E_DNSBASE:
105 return "Name server: host not found";
107 case TRY_AGAIN + E_DNSBASE:
108 return "Name server: host name lookup failure";
110 case NO_RECOVERY + E_DNSBASE:
111 return "Name server: non-recoverable error";
113 case NO_DATA + E_DNSBASE:
114 return "Name server: no data known";
115 #endif /* NAMED_BIND */
118 ** libsmdb error messages.
122 return "Memory allocation failed";
124 case SMDBE_GDBM_IS_BAD:
125 return "GDBM is not supported";
127 case SMDBE_UNSUPPORTED:
128 return "Unsupported action";
130 case SMDBE_DUPLICATE:
131 return "Key already exists";
134 return "Database open failed";
136 case SMDBE_NOT_FOUND:
137 return "Key not found";
139 case SMDBE_UNKNOWN_DB_TYPE:
140 return "Unknown database type";
142 case SMDBE_UNSUPPORTED_DB_TYPE:
143 return "Support for database type not compiled into this program";
145 case SMDBE_INCOMPLETE:
146 return "DB sync did not finish";
148 case SMDBE_KEY_EMPTY:
149 return "Key is empty";
151 case SMDBE_KEY_EXIST:
152 return "Key already exists";
154 case SMDBE_LOCK_DEADLOCK:
155 return "Locker killed to resolve deadlock";
157 case SMDBE_LOCK_NOT_GRANTED:
158 return "Lock unavailable";
160 case SMDBE_LOCK_NOT_HELD:
161 return "Lock not held by locker";
163 case SMDBE_RUN_RECOVERY:
164 return "Database panic, run recovery";
169 case SMDBE_READ_ONLY:
170 return "Database opened read-only";
172 case SMDBE_DB_NAME_TOO_LONG:
173 return "Name too long";
175 case SMDBE_INVALID_PARAMETER:
176 return "Invalid parameter";
178 case SMDBE_ONLY_SUPPORTS_ONE_CURSOR:
179 return "Only one cursor allowed";
181 case SMDBE_NOT_A_VALID_CURSOR:
182 return "Invalid cursor";
184 case SMDBE_OLD_VERSION:
185 return "Berkeley DB file is an old version, recreate it";
189 ** LDAP error messages.
193 if (errnum >= E_LDAPBASE)
194 return ldap_err2string(errnum - E_LDAPBASE);
197 ret = strerror(errnum);
202 (void) sm_snprintf(buf, sizeof buf, "Error %d", errnum);