commit 071617a4f889c17332b768203e0aba131b0df61d
parent 25407df59136a540933a386b17ac451248a3ff97
Author: Evgeny Grin <k2k@drgrin.dev>
Date: Sun, 4 May 2025 10:40:24 +0300
Improved public headers portability
Diffstat:
6 files changed, 133 insertions(+), 103 deletions(-)
diff --git a/src/include/microhttpd2.h b/src/include/microhttpd2.h
@@ -4847,11 +4847,13 @@ MHD_NOWARN_VARIADIC_MACROS_
*/
# define MHD_DAEMON_SET_OPTIONS(daemon,...) \
MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_AGGR_DYN_INIT_ \
MHD_daemon_set_options ( \
daemon, \
((const struct MHD_DaemonOptionAndValue[]) \
{__VA_ARGS__, MHD_D_OPTION_TERMINATE ()}), \
MHD_OPTIONS_ARRAY_MAX_SIZE) \
+ MHD_RESTORE_WARN_AGGR_DYN_INIT_ \
MHD_RESTORE_WARN_COMPOUND_LITERALS_
# elif defined(MHD_USE_CPP_INIT_LIST)
MHD_C_DECLRATIONS_FINISH_HERE_
diff --git a/src/include/microhttpd2_generated_daemon_options.h b/src/include/microhttpd2_generated_daemon_options.h
@@ -869,26 +869,26 @@ struct MHD_DaemonOptionAndValue
* @return structure with the requested setting
*/
# define MHD_D_OPTION_WORK_MODE(wmp) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_WORK_MODE, \
.val.work_mode = (wmp) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Select a sockets watch system call used for internal polling.
* @param els FIXME
* @return structure with the requested setting
*/
# define MHD_D_OPTION_POLL_SYSCALL(els) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_POLL_SYSCALL, \
.val.poll_syscall = (els) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Instruct MHD to register all sockets every processing round.
*
@@ -904,13 +904,13 @@ If this options is enabled, then #MHD_SocketRegistrationUpdateCallback is
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_D_OPTION_REREGISTER_ALL(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_REREGISTER_ALL, \
.val.reregister_all = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Set a callback to use for logging
* @param log_cb the callback to use for logging,
@@ -920,14 +920,14 @@ If this options is enabled, then #MHD_SocketRegistrationUpdateCallback is
* @return structure with the requested setting
*/
# define MHD_D_OPTION_LOG_CALLBACK(log_cb,log_cb_cls) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_LOG_CALLBACK, \
.val.log_callback.v_log_cb = (log_cb), \
.val.log_callback.v_log_cb_cls = (log_cb_cls) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Bind to the given TCP port and address family.
*
@@ -941,14 +941,14 @@ If no listen socket optins (#MHD_D_OPTION_BIND_PORT(), #MHD_D_OPTION_BIND_SA(),
* @return structure with the requested setting
*/
# define MHD_D_OPTION_BIND_PORT(af,port) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_BIND_PORT, \
.val.bind_port.v_af = (af), \
.val.bind_port.v_port = (port) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Bind to the given socket address.
*
@@ -961,7 +961,7 @@ If no listen socket optins (#MHD_D_OPTION_BIND_PORT(), #MHD_D_OPTION_BIND_SA(),
* @return structure with the requested setting
*/
# define MHD_D_OPTION_BIND_SA(sa_len,sa,dual) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_BIND_SA, \
@@ -969,7 +969,7 @@ If no listen socket optins (#MHD_D_OPTION_BIND_PORT(), #MHD_D_OPTION_BIND_SA(),
.val.bind_sa.v_sa = (sa), \
.val.bind_sa.v_dual = (dual) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Accept connections from the given socket. Socket
* must be a TCP or UNIX domain (SOCK_STREAM) socket.
@@ -981,13 +981,13 @@ If no listen socket optins (#MHD_D_OPTION_BIND_PORT(), #MHD_D_OPTION_BIND_SA(),
* @return structure with the requested setting
*/
# define MHD_D_OPTION_LISTEN_SOCKET(listen_fd) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_LISTEN_SOCKET, \
.val.listen_socket = (listen_fd) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Select mode of reusing address:port listen address.
*
@@ -996,13 +996,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @return structure with the requested setting
*/
# define MHD_D_OPTION_LISTEN_ADDR_REUSE(reuse_type) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_LISTEN_ADDR_REUSE, \
.val.listen_addr_reuse = (reuse_type) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Configure TCP_FASTOPEN option, including setting a
* custom @a queue_length.
@@ -1018,14 +1018,14 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @return structure with the requested setting
*/
# define MHD_D_OPTION_TCP_FASTOPEN(option,queue_length) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_TCP_FASTOPEN, \
.val.tcp_fastopen.v_option = (option), \
.val.tcp_fastopen.v_queue_length = (queue_length) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Use the given backlog for the listen() call.
*
@@ -1035,13 +1035,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @return structure with the requested setting
*/
# define MHD_D_OPTION_LISTEN_BACKLOG(backlog_size) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_LISTEN_BACKLOG, \
.val.listen_backlog = (backlog_size) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Inform that SIGPIPE is suppressed or handled by application.
* If suppressed/handled, MHD uses network functions that could generate SIGPIPE, like `sendfile()`.
@@ -1049,13 +1049,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_D_OPTION_SIGPIPE_SUPPRESSED(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_SIGPIPE_SUPPRESSED, \
.val.sigpipe_suppressed = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Enable TLS (HTTPS) and select TLS backend
* @param backend the TLS backend to use,
@@ -1063,13 +1063,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @return structure with the requested setting
*/
# define MHD_D_OPTION_TLS(backend) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_TLS, \
.val.tls = (backend) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Provide TLS key and certificate data in-memory.
* Works only if TLS mode is enabled.
@@ -1082,7 +1082,7 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @return structure with the requested setting
*/
# define MHD_D_OPTION_TLS_CERT_KEY(mem_cert,mem_key,mem_pass) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_TLS_CERT_KEY, \
@@ -1090,7 +1090,7 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
.val.tls_cert_key.v_mem_key = (mem_key), \
.val.tls_cert_key.v_mem_pass = (mem_pass) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Provide the certificate of the certificate authority (CA) to be used by the MHD daemon for client authentication.
* Works only if TLS mode is enabled.
@@ -1098,13 +1098,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @return structure with the requested setting
*/
# define MHD_D_OPTION_TLS_CLIENT_CA(mem_client_ca) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_TLS_CLIENT_CA, \
.val.tls_client_ca = (mem_client_ca) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Configure PSK to use for the TLS key exchange.
* @param psk_cb the function to call to obtain pre-shared key
@@ -1112,14 +1112,14 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @return structure with the requested setting
*/
# define MHD_D_OPTION_TLS_PSK_CALLBACK(psk_cb,psk_cb_cls) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_TLS_PSK_CALLBACK, \
.val.tls_psk_callback.v_psk_cb = (psk_cb), \
.val.tls_psk_callback.v_psk_cb_cls = (psk_cb_cls) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Control ALPN for TLS connection.
* Silently ignored for non-TLS.
@@ -1127,13 +1127,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_D_OPTION_NO_ALPN(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_NO_ALPN, \
.val.no_alpn = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Specify inactivity timeout for connection.
* When no activity for specified time on connection, it is closed automatically.
@@ -1142,13 +1142,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @return structure with the requested setting
*/
# define MHD_D_OPTION_DEFAULT_TIMEOUT(timeout) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_DEFAULT_TIMEOUT, \
.val.default_timeout = (timeout) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Maximum number of (concurrent) network connections served by daemon.
* @note The real maximum number of network connections could be smaller
@@ -1158,13 +1158,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @return structure with the requested setting
*/
# define MHD_D_OPTION_GLOBAL_CONNECTION_LIMIT(glob_limit) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_GLOBAL_CONNECTION_LIMIT, \
.val.global_connection_limit = (glob_limit) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Limit on the number of (concurrent) network connections made to the server from the same IP address.
* Can be used to prevent one IP from taking over all of the allowed connections. If the same IP tries to establish more than the specified number of connections, they will be immediately rejected.
@@ -1172,13 +1172,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @return structure with the requested setting
*/
# define MHD_D_OPTION_PER_IP_LIMIT(limit) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_PER_IP_LIMIT, \
.val.per_ip_limit = (limit) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Set a policy callback that accepts/rejects connections based on the client's IP address. The callbeck function will be called before servicing any new incoming connection.
* @param apc the accept policy callback
@@ -1186,14 +1186,14 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @return structure with the requested setting
*/
# define MHD_D_OPTION_ACCEPT_POLICY(apc,apc_cls) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_ACCEPT_POLICY, \
.val.accept_policy.v_apc = (apc), \
.val.accept_policy.v_apc_cls = (apc_cls) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Set how strictly MHD will enforce the HTTP protocol.
* @param sl the level of strictness
@@ -1201,14 +1201,14 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @return structure with the requested setting
*/
# define MHD_D_OPTION_PROTOCOL_STRICT_LEVEL(sl,how) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_PROTOCOL_STRICT_LEVEL, \
.val.protocol_strict_level.v_sl = (sl), \
.val.protocol_strict_level.v_how = (how) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Set a callback to be called first for every request when the request line is received (before any parsing of the header).
* This callback is the only way to get raw (unmodified) request URI as URI is parsed and modified by MHD in-place.
@@ -1218,14 +1218,14 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @return structure with the requested setting
*/
# define MHD_D_OPTION_EARLY_URI_LOGGER(cb,cls) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_EARLY_URI_LOGGER, \
.val.early_uri_logger.v_cb = (cb), \
.val.early_uri_logger.v_cls = (cls) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Disable converting plus ('+') character to space in GET parameters (URI part after '?').
* Plus conversion is not required by HTTP RFCs, however it required by HTML specifications, see https://url.spec.whatwg.org/#application/x-www-form-urlencoded for details.
@@ -1233,13 +1233,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_D_OPTION_DISABLE_URI_QUERY_PLUS_AS_SPACE(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_DISABLE_URI_QUERY_PLUS_AS_SPACE, \
.val.disable_uri_query_plus_as_space = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Suppresse use of 'Date:' header.
* According to RFC should be suppressed only if the system has no RTC.
@@ -1247,26 +1247,26 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_D_OPTION_SUPPRESS_DATE_HEADER(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_SUPPRESS_DATE_HEADER, \
.val.suppress_date_header = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Use SHOUTcast for responses.
* This will cause *all* responses to begin with the SHOUTcast 'ICY' line instead of 'HTTP'.
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_D_OPTION_ENABLE_SHOUTCAST(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_ENABLE_SHOUTCAST, \
.val.enable_shoutcast = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Maximum memory size per connection.
* Default is 32kb.
@@ -1275,13 +1275,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_D_OPTION_CONN_MEMORY_LIMIT(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_CONN_MEMORY_LIMIT, \
.val.conn_memory_limit = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* The size of the shared memory pool for accamulated upload processing.
* The same large pool is shared for all connections server by MHD and used when application requests avoiding of incremental upload processing to accamulate complete content upload before giving it to the application.
@@ -1290,13 +1290,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_D_OPTION_LARGE_POOL_SIZE(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_LARGE_POOL_SIZE, \
.val.large_pool_size = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Desired size of the stack for the threads started by MHD.
* Use 0 for system default, which is also MHD default.
@@ -1304,13 +1304,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_D_OPTION_STACK_SIZE(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_STACK_SIZE, \
.val.stack_size = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* The the maximum FD value.
* The limit is applied to all sockets used by MHD.
@@ -1322,13 +1322,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @return structure with the requested setting
*/
# define MHD_D_OPTION_FD_NUMBER_LIMIT(max_fd) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_FD_NUMBER_LIMIT, \
.val.fd_number_limit = (max_fd) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Enable `turbo`.
* Disables certain calls to `shutdown()`, enables aggressive non-blocking optimistic reads and other potentially unsafe optimisations.
@@ -1337,13 +1337,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_D_OPTION_TURBO(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_TURBO, \
.val.turbo = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Disable some internal thread safety.
* Indicates that MHD daemon will be used by application in single-threaded mode only. When this flag is set then application must call any MHD function only within a single thread.
@@ -1354,13 +1354,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_D_OPTION_DISABLE_THREAD_SAFETY(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_DISABLE_THREAD_SAFETY, \
.val.disable_thread_safety = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* You need to set this option if you want to disable use of HTTP Upgrade.
* Upgrade may require usage of additional internal resources, which we can avoid providing if they will not be used.
@@ -1369,13 +1369,13 @@ Works only when #MHD_D_OPTION_BIND_PORT() or #MHD_D_OPTION_BIND_SA() are used.
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_D_OPTION_DISALLOW_UPGRADE(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_DISALLOW_UPGRADE, \
.val.disallow_upgrade = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Disable #MHD_action_suspend() functionality.
*
@@ -1384,13 +1384,13 @@ You should only use this function if you do not use suspend functionality and ne
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_D_OPTION_DISALLOW_SUSPEND_RESUME(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_DISALLOW_SUSPEND_RESUME, \
.val.disallow_suspend_resume = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Disable cookies parsing.
*
@@ -1399,13 +1399,13 @@ Disable automatic cookies processing if cookies are not used.
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_D_OPTION_DISABLE_COOKIES(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_DISABLE_COOKIES, \
.val.disable_cookies = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Set a callback to be called for pre-start finalisation.
*
@@ -1415,14 +1415,14 @@ The specified callback will be called one time, after network initialisation, TL
* @return structure with the requested setting
*/
# define MHD_D_OPTION_DAEMON_READY_CALLBACK(cb,cb_cls) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_DAEMON_READY_CALLBACK, \
.val.daemon_ready_callback.v_cb = (cb), \
.val.daemon_ready_callback.v_cb_cls = (cb_cls) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Set a function that should be called whenever a connection is started or closed.
* @param ncc the callback for notifications
@@ -1430,14 +1430,14 @@ The specified callback will be called one time, after network initialisation, TL
* @return structure with the requested setting
*/
# define MHD_D_OPTION_NOTIFY_CONNECTION(ncc,cls) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_NOTIFY_CONNECTION, \
.val.notify_connection.v_ncc = (ncc), \
.val.notify_connection.v_cls = (cls) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Register a function that should be called whenever a stream is started or closed.
* For HTTP/1.1 this callback is called one time for every connection.
@@ -1446,14 +1446,14 @@ The specified callback will be called one time, after network initialisation, TL
* @return structure with the requested setting
*/
# define MHD_D_OPTION_NOTIFY_STREAM(nsc,cls) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_NOTIFY_STREAM, \
.val.notify_stream.v_nsc = (nsc), \
.val.notify_stream.v_cls = (cls) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Set strong random data to be used by MHD.
* Currently the data is only needed for Digest Auth module.
@@ -1465,14 +1465,14 @@ The specified callback will be called one time, after network initialisation, TL
* @return structure with the requested setting
*/
# define MHD_D_OPTION_RANDOM_ENTROPY(buf_size,buf) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_RANDOM_ENTROPY, \
.val.random_entropy.v_buf_size = (buf_size), \
.val.random_entropy.v_buf = (buf) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Specify the size of the internal hash map array that tracks generated digest nonces usage.
* When the size of the map is too small then need to handle concurrent DAuth requests, a lot of stale nonce results will be produced.
@@ -1481,13 +1481,13 @@ The specified callback will be called one time, after network initialisation, TL
* @return structure with the requested setting
*/
# define MHD_D_OPTION_AUTH_DIGEST_MAP_SIZE(size) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_AUTH_DIGEST_MAP_SIZE, \
.val.auth_digest_map_size = (size) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Nonce validity time (in seconds) used for Digest Auth.
* If followed by zero value the value is silently ignored.
@@ -1496,13 +1496,13 @@ The specified callback will be called one time, after network initialisation, TL
* @return structure with the requested setting
*/
# define MHD_D_OPTION_AUTH_DIGEST_NONCE_TIMEOUT(timeout) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_AUTH_DIGEST_NONCE_TIMEOUT, \
.val.auth_digest_nonce_timeout = (timeout) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Default maximum nc (nonce count) value used for Digest Auth.
* If followed by zero value the value is silently ignored.
@@ -1511,13 +1511,13 @@ The specified callback will be called one time, after network initialisation, TL
* @return structure with the requested setting
*/
# define MHD_D_OPTION_AUTH_DIGEST_DEF_MAX_NC(max_nc) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_DaemonOptionAndValue) \
{ \
.opt = MHD_D_O_AUTH_DIGEST_DEF_MAX_NC, \
.val.auth_digest_def_max_nc = (max_nc) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Terminate the list of the options
diff --git a/src/include/microhttpd2_generated_response_options.h b/src/include/microhttpd2_generated_response_options.h
@@ -184,13 +184,13 @@ struct MHD_ResponseOptionAndValue
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_R_OPTION_REUSABLE(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_ResponseOptionAndValue) \
{ \
.opt = MHD_R_O_REUSABLE, \
.val.reusable = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Enable special processing of the response as body-less (with undefined body size). No automatic 'Content-Length' or 'Transfer-Encoding: chunked' headers are added when the response is used with #MHD_HTTP_STATUS_NOT_MODIFIED code or to respond to HEAD request.
* The flag also allow to set arbitrary 'Content-Length' by #MHD_response_add_header() function.
@@ -200,38 +200,38 @@ struct MHD_ResponseOptionAndValue
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_R_OPTION_HEAD_ONLY_RESPONSE(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_ResponseOptionAndValue) \
{ \
.opt = MHD_R_O_HEAD_ONLY_RESPONSE, \
.val.head_only_response = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Force use of chunked encoding even if the response content size is known.
* Ignored when the reply cannot have body/content.
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_R_OPTION_CHUNKED_ENC(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_ResponseOptionAndValue) \
{ \
.opt = MHD_R_O_CHUNKED_ENC, \
.val.chunked_enc = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Force close connection after sending the response, prevents keep-alive connections and adds 'Connection: close' header.
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_R_OPTION_CONN_CLOSE(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_ResponseOptionAndValue) \
{ \
.opt = MHD_R_O_CONN_CLOSE, \
.val.conn_close = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Only respond in conservative (dumb) HTTP/1.0-compatible mode.
* Response still use HTTP/1.1 version in header, but always close the connection after sending the response and do not use chunked encoding for the response.
@@ -246,13 +246,13 @@ This option can be used to communicate with some broken client, which does not i
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_R_OPTION_HTTP_1_0_COMPATIBLE_STRICT(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_ResponseOptionAndValue) \
{ \
.opt = MHD_R_O_HTTP_1_0_COMPATIBLE_STRICT, \
.val.http_1_0_compatible_strict = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Only respond in HTTP/1.0-mode.
* Contrary to the #MHD_R_O_HTTP_1_0_COMPATIBLE_STRICT flag, the response's HTTP version will always be set to 1.0 and keep-alive connections will be used if explicitly requested by the client.
@@ -269,26 +269,26 @@ With this option HTTP/1.0 server is emulated (with support for 'keep-alive' conn
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_R_OPTION_HTTP_1_0_SERVER(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_ResponseOptionAndValue) \
{ \
.opt = MHD_R_O_HTTP_1_0_SERVER, \
.val.http_1_0_server = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Disable sanity check preventing clients from manually setting the HTTP content length option.
* Allow to set several 'Content-Length' headers. These headers will be used even with replies without body.
* @param value the value of the parameter * @return structure with the requested setting
*/
# define MHD_R_OPTION_INSANITY_HEADER_CONTENT_LENGTH(value) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_ResponseOptionAndValue) \
{ \
.opt = MHD_R_O_INSANITY_HEADER_CONTENT_LENGTH, \
.val.insanity_header_content_length = (value) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Set a function to be called once MHD is finished with the request.
* @param ended_cb the function to call,
@@ -297,14 +297,14 @@ With this option HTTP/1.0 server is emulated (with support for 'keep-alive' conn
* @return structure with the requested setting
*/
# define MHD_R_OPTION_TERMINATION_CALLBACK(ended_cb,ended_cb_cls) \
- MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_COMPOUND_LITERALS_ MHD_NOWARN_AGGR_DYN_INIT_ \
(const struct MHD_ResponseOptionAndValue) \
{ \
.opt = MHD_R_O_TERMINATION_CALLBACK, \
.val.termination_callback.v_ended_cb = (ended_cb), \
.val.termination_callback.v_ended_cb_cls = (ended_cb_cls) \
} \
- MHD_RESTORE_WARN_COMPOUND_LITERALS_
+ MHD_RESTORE_WARN_COMPOUND_LITERALS_ MHD_RESTORE_WARN_AGGR_DYN_INIT_
/**
* Terminate the list of the options
diff --git a/src/include/microhttpd2_main.h.in b/src/include/microhttpd2_main.h.in
@@ -132,11 +132,13 @@ MHD_NOWARN_VARIADIC_MACROS_
*/
# define MHD_DAEMON_SET_OPTIONS(daemon,...) \
MHD_NOWARN_COMPOUND_LITERALS_ \
+ MHD_NOWARN_AGGR_DYN_INIT_ \
MHD_daemon_set_options ( \
daemon, \
((const struct MHD_DaemonOptionAndValue[]) \
{__VA_ARGS__, MHD_D_OPTION_TERMINATE ()}), \
MHD_OPTIONS_ARRAY_MAX_SIZE) \
+ MHD_RESTORE_WARN_AGGR_DYN_INIT_ \
MHD_RESTORE_WARN_COMPOUND_LITERALS_
# elif defined(MHD_USE_CPP_INIT_LIST)
MHD_C_DECLRATIONS_FINISH_HERE_
diff --git a/src/include/microhttpd2_portability.h b/src/include/microhttpd2_portability.h
@@ -316,13 +316,21 @@
MHD_WARN_PUSH_ MHD_WARN_IGNORE_ ("-Wvariadic-macros")
# define MHD_RESTORE_WARN_VARIADIC_MACROS_ MHD_WARN_POP_
# endif
+# define MHD_NOWARN_UNUSED_FUNC_ \
+ MHD_WARN_PUSH_ MHD_WARN_IGNORE_ ("-Wunused-function")
+# define MHD_RESTORE_WARN_UNUSED_FUNC_ MHD_WARN_POP_
+# if ! MHD_C_MINV_99
+# if MHD_GNUC_MINV (4,8)
+# define MHD_NOWARN_AGGR_DYN_INIT_ \
+ MHD_WARN_PUSH_ MHD_WARN_IGNORE_ ("-Wpedantic")
+# define MHD_RESTORE_WARN_AGGR_DYN_INIT_ MHD_WARN_POP_
+# endif
+# endif
+# elif MHD_GNUC_MINV (2,8) && ! defined(__clang__)
# ifdef MHD_USE_COMPOUND_LITERALS_EXT
# define MHD_NOWARN_COMPOUND_LITERALS_ __extension__
# define MHD_RESTORE_WARN_COMPOUND_LITERALS_ /* empty */
# endif
-# define MHD_NOWARN_UNUSED_FUNC_ \
- MHD_WARN_PUSH_ MHD_WARN_IGNORE_ ("-Wunused-function")
-# define MHD_RESTORE_WARN_UNUSED_FUNC_ MHD_WARN_POP_
# elif MHD_CLANG_MINV (3,1)
# define MHD_WARN_PUSH_ _Pragma("clang diagnostic push")
# define MHD_WARN_POP_ _Pragma("clang diagnostic pop")
@@ -352,6 +360,11 @@
# define MHD_NOWARN_UNUSED_FUNC_ \
MHD_WARN_PUSH_ MHD_WARN_IGNORE_ ("-Wunused-function")
# define MHD_RESTORE_WARN_UNUSED_FUNC_ MHD_WARN_POP_
+# if MHD_CLANG_MINV (3,4)
+# define MHD_NOWARN_AGGR_DYN_INIT_ \
+ MHD_WARN_PUSH_ MHD_WARN_IGNORE_ ("-Wc99-extensions")
+# define MHD_RESTORE_WARN_AGGR_DYN_INIT_ MHD_WARN_POP_
+# endif
# elif MHD_MSC_MINV (1500)
# define MHD_WARN_PUSH_ __pragma(warning(push))
# define MHD_WARN_POP_ __pragma(warning(pop))
@@ -359,6 +372,11 @@
# define MHD_NOWARN_UNUSED_FUNC_ \
MHD_WARN_PUSH_ MHD_WARN_IGNORE_ (4514)
# define MHD_RESTORE_WARN_UNUSED_FUNC_ MHD_WARN_POP_
+# if (! MHD_C_MINV_99) && ! defined(__cplusplus)
+# define MHD_NOWARN_AGGR_DYN_INIT_ \
+ MHD_WARN_PUSH_ MHD_WARN_IGNORE_ (4204)
+# define MHD_RESTORE_WARN_AGGR_DYN_INIT_ MHD_WARN_POP_
+# endif
# endif
#endif /*! MHD_NO__PRAGMA */
@@ -408,6 +426,12 @@
#ifndef MHD_RESTORE_WARN_UNUSED_FUNC_
# define MHD_RESTORE_WARN_UNUSED_FUNC_ /* empty */
#endif
+#ifndef MHD_NOWARN_AGGR_DYN_INIT_
+# define MHD_NOWARN_AGGR_DYN_INIT_ /* empty */
+#endif
+#ifndef MHD_RESTORE_WARN_AGGR_DYN_INIT_
+# define MHD_RESTORE_WARN_AGGR_DYN_INIT_ /* empty */
+#endif
#ifdef MHD_HAS_NOWARN_UNUSED_FUNC_
/**
diff --git a/src/include/options-generator.c b/src/include/options-generator.c
@@ -426,7 +426,8 @@ dump_option_macros (const char *name,
var_name (arguments[i]));
}
printf (") \\\n"
- " MHD_NOWARN_COMPOUND_LITERALS_ \\\n"
+ " MHD_NOWARN_COMPOUND_LITERALS_ " \
+ "MHD_NOWARN_AGGR_DYN_INIT_ \\\n"
" (const struct MHD_%sOptionAndValue) \\\n"
" { \\\n"
" .opt = MHD_%c_O_%s, \\\n",
@@ -459,7 +460,8 @@ dump_option_macros (const char *name,
}
printf (" } \\\n"
- " MHD_RESTORE_WARN_COMPOUND_LITERALS_\n");
+ " MHD_RESTORE_WARN_COMPOUND_LITERALS_ "
+ "MHD_RESTORE_WARN_AGGR_DYN_INIT_\n");
}