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