aboutsummaryrefslogtreecommitdiff
path: root/src/lib/version.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/version.c')
-rw-r--r--src/lib/version.c181
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 */
9const char *
10MHD_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
44MHD_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}