1 /*
2  * Copyright (c) 1998-2001, 2003 Sendmail, Inc. and its suppliers.
3  *	All rights reserved.
4  *
5  * By using this file, you agree to the terms and conditions set
6  * forth in the LICENSE file which can be found at the top level of
7  * the sendmail distribution.
8  *
9  *	$Id: errstring.h,v 1.9 2003/12/10 03:19:06 gshapiro Exp $
10  */
11 
12 #pragma ident	"%Z%%M%	%I%	%E% SMI"
13 
14 /*
15 **  Error codes.
16 */
17 
18 #ifndef SM_ERRSTRING_H
19 # define SM_ERRSTRING_H
20 
21 #include <errno.h>
22 #if NEEDINTERRNO
23 extern int errno;
24 #endif /* NEEDINTERRNO */
25 
26 /*
27 **  These are used in a few cases where we need some special
28 **  error codes, but where the system doesn't provide something
29 **  reasonable.  They are printed in sm_errstring.
30 */
31 
32 #ifndef E_PSEUDOBASE
33 # define E_PSEUDOBASE	256
34 #endif /* ! E_PSEUDOBASE */
35 
36 #define E_SM_OPENTIMEOUT (E_PSEUDOBASE + 0)	/* Timeout on file open */
37 #define E_SM_NOSLINK	(E_PSEUDOBASE + 1)	/* Symbolic links not allowed */
38 #define E_SM_NOHLINK	(E_PSEUDOBASE + 2)	/* Hard links not allowed */
39 #define E_SM_REGONLY	(E_PSEUDOBASE + 3)	/* Regular files only */
40 #define E_SM_ISEXEC	(E_PSEUDOBASE + 4)	/* Executable files not allowed */
41 #define E_SM_WWDIR	(E_PSEUDOBASE + 5)	/* World writable directory */
42 #define E_SM_GWDIR	(E_PSEUDOBASE + 6)	/* Group writable directory */
43 #define E_SM_FILECHANGE (E_PSEUDOBASE + 7)	/* File changed after open */
44 #define E_SM_WWFILE	(E_PSEUDOBASE + 8)	/* World writable file */
45 #define E_SM_GWFILE	(E_PSEUDOBASE + 9)	/* Group writable file */
46 #define E_SM_GRFILE	(E_PSEUDOBASE + 10)	/* g readable file */
47 #define E_SM_WRFILE	(E_PSEUDOBASE + 11)	/* o readable file */
48 #define E_DNSBASE	(E_PSEUDOBASE + 20)	/* base for DNS h_errno */
49 #define E_SMDBBASE	(E_PSEUDOBASE + 40)	/* base for libsmdb errors */
50 #define E_LDAPBASE	(E_PSEUDOBASE + 70)	/* base for LDAP errors */
51 #define E_LDAPURLBASE	(E_PSEUDOBASE + 200)	/* base for LDAP URL errors */
52 
53 
54 /* libsmdb */
55 #define SMDBE_OK			0
56 #define SMDBE_MALLOC			(E_SMDBBASE + 1)
57 #define SMDBE_GDBM_IS_BAD		(E_SMDBBASE + 2)
58 #define SMDBE_UNSUPPORTED		(E_SMDBBASE + 3)
59 #define SMDBE_DUPLICATE			(E_SMDBBASE + 4)
60 #define SMDBE_BAD_OPEN			(E_SMDBBASE + 5)
61 #define SMDBE_NOT_FOUND			(E_SMDBBASE + 6)
62 #define SMDBE_UNKNOWN_DB_TYPE		(E_SMDBBASE + 7)
63 #define SMDBE_UNSUPPORTED_DB_TYPE	(E_SMDBBASE + 8)
64 #define SMDBE_INCOMPLETE		(E_SMDBBASE + 9)
65 #define SMDBE_KEY_EMPTY			(E_SMDBBASE + 10)
66 #define SMDBE_KEY_EXIST			(E_SMDBBASE + 11)
67 #define SMDBE_LOCK_DEADLOCK		(E_SMDBBASE + 12)
68 #define SMDBE_LOCK_NOT_GRANTED		(E_SMDBBASE + 13)
69 #define SMDBE_LOCK_NOT_HELD		(E_SMDBBASE + 14)
70 #define SMDBE_RUN_RECOVERY		(E_SMDBBASE + 15)
71 #define SMDBE_IO_ERROR			(E_SMDBBASE + 16)
72 #define SMDBE_READ_ONLY			(E_SMDBBASE + 17)
73 #define SMDBE_DB_NAME_TOO_LONG		(E_SMDBBASE + 18)
74 #define SMDBE_INVALID_PARAMETER		(E_SMDBBASE + 19)
75 #define SMDBE_ONLY_SUPPORTS_ONE_CURSOR	(E_SMDBBASE + 20)
76 #define SMDBE_NOT_A_VALID_CURSOR	(E_SMDBBASE + 21)
77 #define SMDBE_LAST_ENTRY		(E_SMDBBASE + 22)
78 #define SMDBE_OLD_VERSION		(E_SMDBBASE + 23)
79 #define SMDBE_VERSION_MISMATCH		(E_SMDBBASE + 24)
80 
81 extern const char *sm_errstring __P((int _errno));
82 
83 
84 #endif /* SM_ERRSTRING_H */
85