#define AP_HAVE_DESIGNATED_INITIALIZER
#endif
+#ifndef __has_attribute /* check for supported attributes on clang */
+#define __has_attribute(x) 0
+#endif
+#if (defined(__GNUC__) && __GNUC__ >= 4) || __has_attribute(sentinel)
+#define ap_func_attr_sentinel __attribute__((sentinel))
+#else
+#define ap_func_attr_sentinel
+#endif
+
#endif /* AP_CONFIG_H */
* @return The number of bytes sent
*/
AP_DECLARE_NONSTD(int) ap_rvputs(request_rec *r,...)
- __attribute__((sentinel));
+ ap_func_attr_sentinel;
/**
* Output data to the client in a printf format
* @return None.
*/
AP_DECLARE(void) ap_allow_methods(request_rec *r, int reset, ...)
- __attribute__((sentinel));
+ ap_func_attr_sentinel;
/**
* Add one or more methods to the list permitted to access the resource.
AP_DECLARE(apr_status_t) ap_cookie_write(request_rec * r, const char *name,
const char *val, const char *attrs,
long maxage, ...)
- __attribute__((sentinel));
+ ap_func_attr_sentinel;
/**
* Write an RFC2965 compliant cookie.
AP_DECLARE(apr_status_t) ap_cookie_write2(request_rec * r, const char *name2,
const char *val, const char *attrs2,
long maxage, ...)
- __attribute__((sentinel));
+ ap_func_attr_sentinel;
/**
* Remove an RFC2109 compliant cookie.
*/
AP_DECLARE(apr_status_t) ap_cookie_remove(request_rec * r, const char *name,
const char *attrs, ...)
- __attribute__((sentinel));
+ ap_func_attr_sentinel;
/**
* Remove an RFC2965 compliant cookie.
*/
AP_DECLARE(apr_status_t) ap_cookie_remove2(request_rec * r, const char *name2,
const char *attrs2, ...)
- __attribute__((sentinel));
+ ap_func_attr_sentinel;
/**
* Read a cookie called name, placing its value in val.
AP_DECLARE_NONSTD(apr_status_t) ap_fputstrs(ap_filter_t *f,
apr_bucket_brigade *bb,
...)
-#if defined(__GNUC__) && __GNUC__ >= 4
- __attribute__((sentinel))
-#endif
-;
+ ap_func_attr_sentinel;
/**
* Output data to the filter in printf format
#define APACHE_UTIL_SCRIPT_H
#include "apr_buckets.h"
+#include "ap_config.h"
#ifdef __cplusplus
extern "C" {
char *buffer,
const char **termch,
int *termarg, ...)
- __attribute__((sentinel));
+ ap_func_attr_sentinel;
/**
* Read headers output from a script, ensuring that the output is valid. If