xref: /netbsd-src/external/public-domain/sqlite/sqlite2mdoc/config.h (revision f3c4d887d15b54d87e1806e22eab6868eccc5558)
1*f3c4d887Schristos #ifndef OCONFIGURE_CONFIG_H
2*f3c4d887Schristos #define OCONFIGURE_CONFIG_H
3*f3c4d887Schristos 
4*f3c4d887Schristos #ifdef __cplusplus
5*f3c4d887Schristos # error "Do not use C++: this is a C application."
6*f3c4d887Schristos #endif
7*f3c4d887Schristos #if !defined(__GNUC__) || (__GNUC__ < 4)
8*f3c4d887Schristos # define __attribute__(x)
9*f3c4d887Schristos #endif
10*f3c4d887Schristos #if defined(__linux__) || defined(__MINT__) || defined(__wasi__)
11*f3c4d887Schristos # define _GNU_SOURCE /* memmem, memrchr, setresuid... */
12*f3c4d887Schristos # define _DEFAULT_SOURCE /* le32toh, crypt, ... */
13*f3c4d887Schristos #endif
14*f3c4d887Schristos #if defined(__NetBSD__)
15*f3c4d887Schristos # define _OPENBSD_SOURCE /* reallocarray, etc. */
16*f3c4d887Schristos #endif
17*f3c4d887Schristos #if defined(__sun)
18*f3c4d887Schristos # ifndef _XOPEN_SOURCE /* SunOS already defines */
19*f3c4d887Schristos #  define _XOPEN_SOURCE /* XPGx */
20*f3c4d887Schristos # endif
21*f3c4d887Schristos # define _XOPEN_SOURCE_EXTENDED 1 /* XPG4v2 */
22*f3c4d887Schristos # ifndef __EXTENSIONS__ /* SunOS already defines */
23*f3c4d887Schristos #  define __EXTENSIONS__ /* reallocarray, etc. */
24*f3c4d887Schristos # endif
25*f3c4d887Schristos #endif
26*f3c4d887Schristos #if !defined(__BEGIN_DECLS)
27*f3c4d887Schristos # define __BEGIN_DECLS
28*f3c4d887Schristos #endif
29*f3c4d887Schristos #if !defined(__END_DECLS)
30*f3c4d887Schristos # define __END_DECLS
31*f3c4d887Schristos #endif
32*f3c4d887Schristos 
33*f3c4d887Schristos #include <sys/types.h> /* size_t, mode_t, dev_t */
34*f3c4d887Schristos 
35*f3c4d887Schristos #include <stdint.h> /* C99 [u]int[nn]_t types */
36*f3c4d887Schristos 
37*f3c4d887Schristos /*
38*f3c4d887Schristos  * Results of configuration feature-testing.
39*f3c4d887Schristos  */
40*f3c4d887Schristos #define HAVE_ARC4RANDOM 1
41*f3c4d887Schristos #define HAVE_B64_NTOP 1
42*f3c4d887Schristos #define HAVE_CAPSICUM 0
43*f3c4d887Schristos #define HAVE_CRYPT 1
44*f3c4d887Schristos #define HAVE_CRYPT_NEWHASH 0
45*f3c4d887Schristos #define HAVE_ENDIAN_H 1
46*f3c4d887Schristos #define HAVE_ERR 1
47*f3c4d887Schristos #define HAVE_EXPLICIT_BZERO 0
48*f3c4d887Schristos #define HAVE_FTS 1
49*f3c4d887Schristos #define HAVE_GETEXECNAME 0
50*f3c4d887Schristos #define HAVE_GETPROGNAME 1
51*f3c4d887Schristos #define HAVE_INFTIM 1
52*f3c4d887Schristos #define HAVE_LANDLOCK 0
53*f3c4d887Schristos #define HAVE_MD5 1
54*f3c4d887Schristos #define HAVE_MEMMEM 1
55*f3c4d887Schristos #define HAVE_MEMRCHR 1
56*f3c4d887Schristos #define HAVE_MEMSET_S 0
57*f3c4d887Schristos #define HAVE_MKFIFOAT 1
58*f3c4d887Schristos #define HAVE_MKNODAT 1
59*f3c4d887Schristos #define HAVE_OSBYTEORDER_H 0
60*f3c4d887Schristos #define HAVE_PATH_MAX 1
61*f3c4d887Schristos #define HAVE_PLEDGE 0
62*f3c4d887Schristos #define HAVE_PROGRAM_INVOCATION_SHORT_NAME 0
63*f3c4d887Schristos #define HAVE_READPASSPHRASE 0
64*f3c4d887Schristos #define HAVE_REALLOCARRAY 1
65*f3c4d887Schristos #define HAVE_RECALLOCARRAY 0
66*f3c4d887Schristos #define HAVE_SANDBOX_INIT 0
67*f3c4d887Schristos #define HAVE_SCAN_SCALED 0
68*f3c4d887Schristos #define HAVE_SECCOMP_FILTER 0
69*f3c4d887Schristos #define HAVE_SETRESGID 0
70*f3c4d887Schristos #define HAVE_SETRESUID 0
71*f3c4d887Schristos #define HAVE_SHA2 0
72*f3c4d887Schristos #define HAVE_SHA2_H 0
73*f3c4d887Schristos #define HAVE_SOCK_NONBLOCK 1
74*f3c4d887Schristos #define HAVE_STRLCAT 1
75*f3c4d887Schristos #define HAVE_STRLCPY 1
76*f3c4d887Schristos #define HAVE_STRNDUP 1
77*f3c4d887Schristos #define HAVE_STRNLEN 1
78*f3c4d887Schristos #define HAVE_STRTONUM 1
79*f3c4d887Schristos #define HAVE_SYS_BYTEORDER_H 0
80*f3c4d887Schristos #define HAVE_SYS_ENDIAN_H 1
81*f3c4d887Schristos #define HAVE_SYS_MKDEV_H 0
82*f3c4d887Schristos #define HAVE_SYS_QUEUE 1
83*f3c4d887Schristos #define HAVE_SYS_SYSMACROS_H 0
84*f3c4d887Schristos #define HAVE_SYS_TREE 1
85*f3c4d887Schristos #define HAVE_SYSTRACE 0
86*f3c4d887Schristos #define HAVE_UNVEIL 0
87*f3c4d887Schristos #define HAVE_TERMIOS 1
88*f3c4d887Schristos #define HAVE_WAIT_ANY 1
89*f3c4d887Schristos #define HAVE___PROGNAME 1
90*f3c4d887Schristos 
91*f3c4d887Schristos /*
92*f3c4d887Schristos  * Handle the various major()/minor() header files.
93*f3c4d887Schristos  * Use sys/mkdev.h before sys/sysmacros.h because SunOS
94*f3c4d887Schristos  * has both, where only the former works properly.
95*f3c4d887Schristos  */
96*f3c4d887Schristos #if HAVE_SYS_MKDEV_H
97*f3c4d887Schristos # define COMPAT_MAJOR_MINOR_H <sys/mkdev.h>
98*f3c4d887Schristos #elif HAVE_SYS_SYSMACROS_H
99*f3c4d887Schristos # define COMPAT_MAJOR_MINOR_H <sys/sysmacros.h>
100*f3c4d887Schristos #else
101*f3c4d887Schristos # define COMPAT_MAJOR_MINOR_H <sys/types.h>
102*f3c4d887Schristos #endif
103*f3c4d887Schristos 
104*f3c4d887Schristos /*
105*f3c4d887Schristos  * Make it easier to include endian.h forms.
106*f3c4d887Schristos  */
107*f3c4d887Schristos #if HAVE_ENDIAN_H
108*f3c4d887Schristos # define COMPAT_ENDIAN_H <endian.h>
109*f3c4d887Schristos #elif HAVE_SYS_ENDIAN_H
110*f3c4d887Schristos # define COMPAT_ENDIAN_H <sys/endian.h>
111*f3c4d887Schristos #elif HAVE_OSBYTEORDER_H
112*f3c4d887Schristos # define COMPAT_ENDIAN_H <libkern/OSByteOrder.h>
113*f3c4d887Schristos #elif HAVE_SYS_BYTEORDER_H
114*f3c4d887Schristos # define COMPAT_ENDIAN_H <sys/byteorder.h>
115*f3c4d887Schristos #else
116*f3c4d887Schristos # warning No suitable endian.h could be found.
117*f3c4d887Schristos # warning Please e-mail the maintainers with your OS.
118*f3c4d887Schristos # define COMPAT_ENDIAN_H <endian.h>
119*f3c4d887Schristos #endif
120*f3c4d887Schristos 
121*f3c4d887Schristos /*
122*f3c4d887Schristos  * Compatibility for sha2(3).
123*f3c4d887Schristos  */
124*f3c4d887Schristos 
125*f3c4d887Schristos /*** SHA-256/384/512 Various Length Definitions ***********************/
126*f3c4d887Schristos #define SHA256_BLOCK_LENGTH		64
127*f3c4d887Schristos #define SHA256_DIGEST_LENGTH		32
128*f3c4d887Schristos #define SHA256_DIGEST_STRING_LENGTH	(SHA256_DIGEST_LENGTH * 2 + 1)
129*f3c4d887Schristos #define SHA384_BLOCK_LENGTH		128
130*f3c4d887Schristos #define SHA384_DIGEST_LENGTH		48
131*f3c4d887Schristos #define SHA384_DIGEST_STRING_LENGTH	(SHA384_DIGEST_LENGTH * 2 + 1)
132*f3c4d887Schristos #define SHA512_BLOCK_LENGTH		128
133*f3c4d887Schristos #define SHA512_DIGEST_LENGTH		64
134*f3c4d887Schristos #define SHA512_DIGEST_STRING_LENGTH	(SHA512_DIGEST_LENGTH * 2 + 1)
135*f3c4d887Schristos #define SHA512_256_BLOCK_LENGTH		128
136*f3c4d887Schristos #define SHA512_256_DIGEST_LENGTH	32
137*f3c4d887Schristos #define SHA512_256_DIGEST_STRING_LENGTH	(SHA512_256_DIGEST_LENGTH * 2 + 1)
138*f3c4d887Schristos 
139*f3c4d887Schristos /*** SHA-224/256/384/512 Context Structure *******************************/
140*f3c4d887Schristos typedef struct _SHA2_CTX {
141*f3c4d887Schristos 	union {
142*f3c4d887Schristos 		uint32_t	st32[8];
143*f3c4d887Schristos 		uint64_t	st64[8];
144*f3c4d887Schristos 	} state;
145*f3c4d887Schristos 	uint64_t	bitcount[2];
146*f3c4d887Schristos 	uint8_t		buffer[SHA512_BLOCK_LENGTH];
147*f3c4d887Schristos } SHA2_CTX;
148*f3c4d887Schristos 
149*f3c4d887Schristos void SHA256Init(SHA2_CTX *);
150*f3c4d887Schristos void SHA256Transform(uint32_t state[8], const uint8_t [SHA256_BLOCK_LENGTH]);
151*f3c4d887Schristos void SHA256Update(SHA2_CTX *, const uint8_t *, size_t);
152*f3c4d887Schristos void SHA256Pad(SHA2_CTX *);
153*f3c4d887Schristos void SHA256Final(uint8_t [SHA256_DIGEST_LENGTH], SHA2_CTX *);
154*f3c4d887Schristos char *SHA256End(SHA2_CTX *, char *);
155*f3c4d887Schristos char *SHA256File(const char *, char *);
156*f3c4d887Schristos char *SHA256FileChunk(const char *, char *, off_t, off_t);
157*f3c4d887Schristos char *SHA256Data(const uint8_t *, size_t, char *);
158*f3c4d887Schristos 
159*f3c4d887Schristos void SHA384Init(SHA2_CTX *);
160*f3c4d887Schristos void SHA384Transform(uint64_t state[8], const uint8_t [SHA384_BLOCK_LENGTH]);
161*f3c4d887Schristos void SHA384Update(SHA2_CTX *, const uint8_t *, size_t);
162*f3c4d887Schristos void SHA384Pad(SHA2_CTX *);
163*f3c4d887Schristos void SHA384Final(uint8_t [SHA384_DIGEST_LENGTH], SHA2_CTX *);
164*f3c4d887Schristos char *SHA384End(SHA2_CTX *, char *);
165*f3c4d887Schristos char *SHA384File(const char *, char *);
166*f3c4d887Schristos char *SHA384FileChunk(const char *, char *, off_t, off_t);
167*f3c4d887Schristos char *SHA384Data(const uint8_t *, size_t, char *);
168*f3c4d887Schristos 
169*f3c4d887Schristos void SHA512Init(SHA2_CTX *);
170*f3c4d887Schristos void SHA512Transform(uint64_t state[8], const uint8_t [SHA512_BLOCK_LENGTH]);
171*f3c4d887Schristos void SHA512Update(SHA2_CTX *, const uint8_t *, size_t);
172*f3c4d887Schristos void SHA512Pad(SHA2_CTX *);
173*f3c4d887Schristos void SHA512Final(uint8_t [SHA512_DIGEST_LENGTH], SHA2_CTX *);
174*f3c4d887Schristos char *SHA512End(SHA2_CTX *, char *);
175*f3c4d887Schristos char *SHA512File(const char *, char *);
176*f3c4d887Schristos char *SHA512FileChunk(const char *, char *, off_t, off_t);
177*f3c4d887Schristos char *SHA512Data(const uint8_t *, size_t, char *);
178*f3c4d887Schristos 
179*f3c4d887Schristos #define	FMT_SCALED_STRSIZE	7 /* minus sign, 4 digits, suffix, null byte */
180*f3c4d887Schristos int	fmt_scaled(long long, char *);
181*f3c4d887Schristos int	scan_scaled(char *, long long *);
182*f3c4d887Schristos /*
183*f3c4d887Schristos  * Compatibility for explicit_bzero(3).
184*f3c4d887Schristos  */
185*f3c4d887Schristos extern void explicit_bzero(void *, size_t);
186*f3c4d887Schristos 
187*f3c4d887Schristos /*
188*f3c4d887Schristos  * Macros and function required for readpassphrase(3).
189*f3c4d887Schristos  */
190*f3c4d887Schristos #define RPP_ECHO_OFF 0x00
191*f3c4d887Schristos #define RPP_ECHO_ON 0x01
192*f3c4d887Schristos #define RPP_REQUIRE_TTY 0x02
193*f3c4d887Schristos #define RPP_FORCELOWER 0x04
194*f3c4d887Schristos #define RPP_FORCEUPPER 0x08
195*f3c4d887Schristos #define RPP_SEVENBIT 0x10
196*f3c4d887Schristos #define RPP_STDIN 0x20
197*f3c4d887Schristos char *readpassphrase(const char *, char *, size_t, int);
198*f3c4d887Schristos 
199*f3c4d887Schristos /*
200*f3c4d887Schristos  * Compatibility for recallocarray(3).
201*f3c4d887Schristos  */
202*f3c4d887Schristos extern void *recallocarray(void *, size_t, size_t, size_t);
203*f3c4d887Schristos 
204*f3c4d887Schristos /*
205*f3c4d887Schristos  * Compatibility for setresgid(2).
206*f3c4d887Schristos  */
207*f3c4d887Schristos int setresgid(gid_t rgid, gid_t egid, gid_t sgid);
208*f3c4d887Schristos 
209*f3c4d887Schristos /*
210*f3c4d887Schristos  * Compatibility for setresuid(2).
211*f3c4d887Schristos  */
212*f3c4d887Schristos int setresuid(uid_t ruid, uid_t euid, uid_t suid);
213*f3c4d887Schristos 
214*f3c4d887Schristos #endif /*!OCONFIGURE_CONFIG_H*/
215