GNU libmicrohttpd 0.9.77
Loading...
Searching...
No Matches
version.c
Go to the documentation of this file.
1/*
2 This file is part of libmicrohttpd
3 Copyright (C) 2007-2018 Daniel Pittman and Christian Grothoff
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18*/
19
25#include "internal.h"
26
27
34const char *
36{
37#ifdef PACKAGE_VERSION
38 return PACKAGE_VERSION;
39#else /* !PACKAGE_VERSION */
40 static char ver[12] = "\0\0\0\0\0\0\0\0\0\0\0";
41 if (0 == ver[0])
42 {
43 int res = MHD_snprintf_ (ver,
44 sizeof(ver),
45 "%x.%x.%x",
46 (((int) MHD_VERSION >> 24) & 0xFF),
47 (((int) MHD_VERSION >> 16) & 0xFF),
48 (((int) MHD_VERSION >> 8) & 0xFF));
49 if ((0 >= res) || (sizeof(ver) <= res))
50 return "0.0.0"; /* Can't return real version*/
51 }
52 return ver;
53#endif /* !PACKAGE_VERSION */
54}
55
56
68_MHD_EXTERN enum MHD_Bool
69MHD_is_feature_supported (enum MHD_Feature feature)
70{
71 switch (feature)
72 {
74#ifdef HAVE_MESSAGES
75 return MHD_YES;
76#else
77 return MHD_NO;
78#endif
79 case MHD_FEATURE_TLS:
80#ifdef HTTPS_SUPPORT
81 return MHD_YES;
82#else /* ! HTTPS_SUPPORT */
83 return MHD_NO;
84#endif /* ! HTTPS_SUPPORT */
86#if defined(HTTPS_SUPPORT) && GNUTLS_VERSION_MAJOR >= 3
87 return MHD_YES;
88#else /* !HTTPS_SUPPORT || GNUTLS_VERSION_MAJOR < 3 */
89 return MHD_NO;
90#endif /* !HTTPS_SUPPORT || GNUTLS_VERSION_MAJOR < 3 */
92#ifdef HAVE_INET6
93 return MHD_YES;
94#else
95 return MHD_NO;
96#endif
98#if defined(IPPROTO_IPV6) && defined(IPV6_V6ONLY)
99 return MHD_YES;
100#else
101 return MHD_NO;
102#endif
103 case MHD_FEATURE_POLL:
104#ifdef HAVE_POLL
105 return MHD_YES;
106#else
107 return MHD_NO;
108#endif
110#ifdef EPOLL_SUPPORT
111 return MHD_YES;
112#else
113 return MHD_NO;
114#endif
116#ifdef HAVE_LISTEN_SHUTDOWN
117 return MHD_YES;
118#else
119 return MHD_NO;
120#endif
122#ifdef _MHD_ITC_SOCKETPAIR
123 return MHD_YES;
124#else
125 return MHD_NO;
126#endif
128#ifdef TCP_FASTOPEN
129 return MHD_YES;
130#else
131 return MHD_NO;
132#endif
134#ifdef BAUTH_SUPPORT
135 return MHD_YES;
136#else
137 return MHD_NO;
138#endif
140#ifdef DAUTH_SUPPORT
141 return MHD_YES;
142#else
143 return MHD_NO;
144#endif
146#ifdef HAVE_POSTPROCESSOR
147 return MHD_YES;
148#else
149 return MHD_NO;
150#endif
152#if defined(HTTPS_SUPPORT) && GNUTLS_VERSION_NUMBER >= 0x030111
153 return MHD_YES;
154#else /* !HTTPS_SUPPORT || GNUTLS_VERSION_NUMBER < 0x030111 */
155 return MHD_NO;
156#endif /* !HTTPS_SUPPORT || GNUTLS_VERSION_NUMBER < 0x030111 */
158#if defined(HAVE_PREAD64) || defined(_WIN32)
159 return MHD_YES;
160#elif defined(HAVE_PREAD)
161 return (sizeof(uint64_t) > sizeof(off_t)) ? MHD_NO : MHD_YES;
162#elif defined(HAVE_LSEEK64)
163 return MHD_YES;
164#else
165 return (sizeof(uint64_t) > sizeof(off_t)) ? MHD_NO : MHD_YES;
166#endif
168#if defined(MHD_USE_THREAD_NAME_)
169 return MHD_YES;
170#else
171 return MHD_NO;
172#endif
174#if defined(UPGRADE_SUPPORT)
175 return MHD_YES;
176#else
177 return MHD_NO;
178#endif
180#if defined(HAVE_PREAD64) || defined(HAVE_PREAD) || defined(_WIN32)
181 return MHD_YES;
182#else
183 return MHD_NO;
184#endif
186#ifdef MHD_USE_GETSOCKNAME
187 return MHD_YES;
188#else
189 return MHD_NO;
190#endif
192#if defined(MHD_WINSOCK_SOCKETS) || defined(MHD_socket_nosignal_) || \
193 defined (MSG_NOSIGNAL)
194 return MHD_YES;
195#else
196 return MHD_NO;
197#endif
199#ifdef _MHD_HAVE_SENDFILE
200 return MHD_YES;
201#else
202 return MHD_NO;
203#endif
204
205 }
206 return MHD_NO;
207}
_MHD_EXTERN enum MHD_Bool MHD_is_feature_supported(enum MHD_Feature feature)
Definition version.c:69
_MHD_EXTERN const char * MHD_get_version(void)
Definition version.c:35
#define _MHD_EXTERN
Definition mhd_options.h:50
MHD internal shared structures.
@ MHD_FEATURE_POSTPROCESSOR
@ MHD_FEATURE_SHUTDOWN_LISTEN_SOCKET
@ MHD_FEATURE_SENDFILE
@ MHD_FEATURE_AUTODETECT_BIND_PORT
@ MHD_FEATURE_LARGE_FILE
@ MHD_FEATURE_HTTPS_CERT_CALLBACK
@ MHD_FEATURE_BASIC_AUTH
@ MHD_FEATURE_DIGEST_AUTH
@ MHD_FEATURE_IPv6
@ MHD_FEATURE_POLL
@ MHD_FEATURE_THREAD_NAMES
@ MHD_FEATURE_EPOLL
@ MHD_FEATURE_TLS
@ MHD_FEATURE_HTTPS_KEY_PASSWORD
@ MHD_FEATURE_AUTOSUPPRESS_SIGPIPE
@ MHD_FEATURE_RESPONSES_SHARED_FD
@ MHD_FEATURE_MESSAGES
@ MHD_FEATURE_IPv6_ONLY
@ MHD_FEATURE_UPGRADE
@ MHD_FEATURE_SOCKETPAIR
@ MHD_FEATURE_TCP_FASTOPEN
@ MHD_YES
Definition microhttpd.h:167
@ MHD_NO
Definition microhttpd.h:162
#define MHD_VERSION
Definition microhttpd.h:99