diff options
Diffstat (limited to 'src/lib/version.c')
-rw-r--r-- | src/lib/version.c | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/src/lib/version.c b/src/lib/version.c new file mode 100644 index 00000000..84918fb7 --- /dev/null +++ b/src/lib/version.c | |||
@@ -0,0 +1,181 @@ | |||
1 | |||
2 | |||
3 | /** | ||
4 | * Obtain the version of this library | ||
5 | * | ||
6 | * @return static version string, e.g. "0.9.9" | ||
7 | * @ingroup specialized | ||
8 | */ | ||
9 | const char * | ||
10 | MHD_get_version (void) | ||
11 | { | ||
12 | #ifdef PACKAGE_VERSION | ||
13 | return PACKAGE_VERSION; | ||
14 | #else /* !PACKAGE_VERSION */ | ||
15 | static char ver[12] = "\0\0\0\0\0\0\0\0\0\0\0"; | ||
16 | if (0 == ver[0]) | ||
17 | { | ||
18 | int res = MHD_snprintf_(ver, | ||
19 | sizeof(ver), | ||
20 | "%x.%x.%x", | ||
21 | (((int)MHD_VERSION >> 24) & 0xFF), | ||
22 | (((int)MHD_VERSION >> 16) & 0xFF), | ||
23 | (((int)MHD_VERSION >> 8) & 0xFF)); | ||
24 | if (0 >= res || sizeof(ver) <= res) | ||
25 | return "0.0.0"; /* Can't return real version*/ | ||
26 | } | ||
27 | return ver; | ||
28 | #endif /* !PACKAGE_VERSION */ | ||
29 | } | ||
30 | |||
31 | |||
32 | /** | ||
33 | * Get information about supported MHD features. | ||
34 | * Indicate that MHD was compiled with or without support for | ||
35 | * particular feature. Some features require additional support | ||
36 | * by kernel. Kernel support is not checked by this function. | ||
37 | * | ||
38 | * @param feature type of requested information | ||
39 | * @return #MHD_YES if feature is supported by MHD, #MHD_NO if | ||
40 | * feature is not supported or feature is unknown. | ||
41 | * @ingroup specialized | ||
42 | */ | ||
43 | _MHD_EXTERN int | ||
44 | MHD_is_feature_supported(enum MHD_FEATURE feature) | ||
45 | { | ||
46 | switch(feature) | ||
47 | { | ||
48 | case MHD_FEATURE_MESSAGES: | ||
49 | #ifdef HAVE_MESSAGES | ||
50 | return MHD_YES; | ||
51 | #else | ||
52 | return MHD_NO; | ||
53 | #endif | ||
54 | case MHD_FEATURE_TLS: | ||
55 | #ifdef HTTPS_SUPPORT | ||
56 | return MHD_YES; | ||
57 | #else /* ! HTTPS_SUPPORT */ | ||
58 | return MHD_NO; | ||
59 | #endif /* ! HTTPS_SUPPORT */ | ||
60 | case MHD_FEATURE_HTTPS_CERT_CALLBACK: | ||
61 | #if defined(HTTPS_SUPPORT) && GNUTLS_VERSION_MAJOR >= 3 | ||
62 | return MHD_YES; | ||
63 | #else /* !HTTPS_SUPPORT || GNUTLS_VERSION_MAJOR < 3 */ | ||
64 | return MHD_NO; | ||
65 | #endif /* !HTTPS_SUPPORT || GNUTLS_VERSION_MAJOR < 3 */ | ||
66 | case MHD_FEATURE_IPv6: | ||
67 | #ifdef HAVE_INET6 | ||
68 | return MHD_YES; | ||
69 | #else | ||
70 | return MHD_NO; | ||
71 | #endif | ||
72 | case MHD_FEATURE_IPv6_ONLY: | ||
73 | #if defined(IPPROTO_IPV6) && defined(IPV6_V6ONLY) | ||
74 | return MHD_YES; | ||
75 | #else | ||
76 | return MHD_NO; | ||
77 | #endif | ||
78 | case MHD_FEATURE_POLL: | ||
79 | #ifdef HAVE_POLL | ||
80 | return MHD_YES; | ||
81 | #else | ||
82 | return MHD_NO; | ||
83 | #endif | ||
84 | case MHD_FEATURE_EPOLL: | ||
85 | #ifdef EPOLL_SUPPORT | ||
86 | return MHD_YES; | ||
87 | #else | ||
88 | return MHD_NO; | ||
89 | #endif | ||
90 | case MHD_FEATURE_SHUTDOWN_LISTEN_SOCKET: | ||
91 | #ifdef HAVE_LISTEN_SHUTDOWN | ||
92 | return MHD_YES; | ||
93 | #else | ||
94 | return MHD_NO; | ||
95 | #endif | ||
96 | case MHD_FEATURE_SOCKETPAIR: | ||
97 | #ifdef _MHD_ITC_SOCKETPAIR | ||
98 | return MHD_YES; | ||
99 | #else | ||
100 | return MHD_NO; | ||
101 | #endif | ||
102 | case MHD_FEATURE_TCP_FASTOPEN: | ||
103 | #ifdef TCP_FASTOPEN | ||
104 | return MHD_YES; | ||
105 | #else | ||
106 | return MHD_NO; | ||
107 | #endif | ||
108 | case MHD_FEATURE_BASIC_AUTH: | ||
109 | #ifdef BAUTH_SUPPORT | ||
110 | return MHD_YES; | ||
111 | #else | ||
112 | return MHD_NO; | ||
113 | #endif | ||
114 | case MHD_FEATURE_DIGEST_AUTH: | ||
115 | #ifdef DAUTH_SUPPORT | ||
116 | return MHD_YES; | ||
117 | #else | ||
118 | return MHD_NO; | ||
119 | #endif | ||
120 | case MHD_FEATURE_POSTPROCESSOR: | ||
121 | #ifdef HAVE_POSTPROCESSOR | ||
122 | return MHD_YES; | ||
123 | #else | ||
124 | return MHD_NO; | ||
125 | #endif | ||
126 | case MHD_FEATURE_HTTPS_KEY_PASSWORD: | ||
127 | #if defined(HTTPS_SUPPORT) && GNUTLS_VERSION_NUMBER >= 0x030111 | ||
128 | return MHD_YES; | ||
129 | #else /* !HTTPS_SUPPORT || GNUTLS_VERSION_NUMBER < 0x030111 */ | ||
130 | return MHD_NO; | ||
131 | #endif /* !HTTPS_SUPPORT || GNUTLS_VERSION_NUMBER < 0x030111 */ | ||
132 | case MHD_FEATURE_LARGE_FILE: | ||
133 | #if defined(HAVE_PREAD64) || defined(_WIN32) | ||
134 | return MHD_YES; | ||
135 | #elif defined(HAVE_PREAD) | ||
136 | return (sizeof(uint64_t) > sizeof(off_t)) ? MHD_NO : MHD_YES; | ||
137 | #elif defined(HAVE_LSEEK64) | ||
138 | return MHD_YES; | ||
139 | #else | ||
140 | return (sizeof(uint64_t) > sizeof(off_t)) ? MHD_NO : MHD_YES; | ||
141 | #endif | ||
142 | case MHD_FEATURE_THREAD_NAMES: | ||
143 | #if defined(MHD_USE_THREAD_NAME_) | ||
144 | return MHD_YES; | ||
145 | #else | ||
146 | return MHD_NO; | ||
147 | #endif | ||
148 | case MHD_FEATURE_UPGRADE: | ||
149 | #if defined(UPGRADE_SUPPORT) | ||
150 | return MHD_YES; | ||
151 | #else | ||
152 | return MHD_NO; | ||
153 | #endif | ||
154 | case MHD_FEATURE_RESPONSES_SHARED_FD: | ||
155 | #if defined(HAVE_PREAD64) || defined(HAVE_PREAD) || defined(_WIN32) | ||
156 | return MHD_YES; | ||
157 | #else | ||
158 | return MHD_NO; | ||
159 | #endif | ||
160 | case MHD_FEATURE_AUTODETECT_BIND_PORT: | ||
161 | #ifdef MHD_USE_GETSOCKNAME | ||
162 | return MHD_YES; | ||
163 | #else | ||
164 | return MHD_NO; | ||
165 | #endif | ||
166 | case MHD_FEATURE_AUTOSUPPRESS_SIGPIPE: | ||
167 | #if defined(MHD_WINSOCK_SOCKETS) || defined(MHD_socket_nosignal_) || defined (MSG_NOSIGNAL) | ||
168 | return MHD_YES; | ||
169 | #else | ||
170 | return MHD_NO; | ||
171 | #endif | ||
172 | case MHD_FEATURE_SENDFILE: | ||
173 | #ifdef _MHD_HAVE_SENDFILE | ||
174 | return MHD_YES; | ||
175 | #else | ||
176 | return MHD_NO; | ||
177 | #endif | ||
178 | |||
179 | } | ||
180 | return MHD_NO; | ||
181 | } | ||