GNU libmicrohttpd  0.9.72
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 
34 const 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
69 MHD_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 */
91  case MHD_FEATURE_IPv6:
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
109  case MHD_FEATURE_EPOLL:
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
173  case MHD_FEATURE_UPGRADE:
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
internal shared structures
@ MHD_FEATURE_POSTPROCESSOR
Definition: microhttpd.h:3993
@ MHD_FEATURE_SHUTDOWN_LISTEN_SOCKET
Definition: microhttpd.h:3957
@ MHD_FEATURE_SENDFILE
Definition: microhttpd.h:4056
@ MHD_FEATURE_AUTODETECT_BIND_PORT
Definition: microhttpd.h:4042
@ MHD_FEATURE_LARGE_FILE
Definition: microhttpd.h:4010
@ MHD_FEATURE_HTTPS_CERT_CALLBACK
Definition: microhttpd.h:3923
@ MHD_FEATURE_BASIC_AUTH
Definition: microhttpd.h:3977
@ MHD_FEATURE_DIGEST_AUTH
Definition: microhttpd.h:3985
@ MHD_FEATURE_IPv6
Definition: microhttpd.h:3929
@ MHD_FEATURE_POLL
Definition: microhttpd.h:3943
@ MHD_FEATURE_THREAD_NAMES
Definition: microhttpd.h:4015
@ MHD_FEATURE_EPOLL
Definition: microhttpd.h:3950
@ MHD_FEATURE_TLS
Definition: microhttpd.h:3916
@ MHD_FEATURE_HTTPS_KEY_PASSWORD
Definition: microhttpd.h:4000
@ MHD_FEATURE_AUTOSUPPRESS_SIGPIPE
Definition: microhttpd.h:4049
@ MHD_FEATURE_RESPONSES_SHARED_FD
Definition: microhttpd.h:4036
@ MHD_FEATURE_MESSAGES
Definition: microhttpd.h:3907
@ MHD_FEATURE_IPv6_ONLY
Definition: microhttpd.h:3937
@ MHD_FEATURE_UPGRADE
Definition: microhttpd.h:4023
@ MHD_FEATURE_SOCKETPAIR
Definition: microhttpd.h:3963
@ MHD_FEATURE_TCP_FASTOPEN
Definition: microhttpd.h:3970
@ MHD_YES
Definition: microhttpd.h:151
@ MHD_NO
Definition: microhttpd.h:146
#define MHD_VERSION
Definition: microhttpd.h:136