summaryrefslogtreecommitdiffstats
path: root/contrib/apr/include
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2013-07-28 06:02:40 +0000
committerpeter <peter@FreeBSD.org>2013-07-28 06:02:40 +0000
commit0aadc82afbae4dbc41da86cd4f9b2ceb8ddcb17d (patch)
tree6a96e078c28ea05d418b4e2722bc03b0b930a78b /contrib/apr/include
parent7594fa5c70305cda65deedc5cc7e08dc037727cd (diff)
parentb910f82d487cf989800adbd1a65b3a7f71b46277 (diff)
downloadFreeBSD-src-0aadc82afbae4dbc41da86cd4f9b2ceb8ddcb17d.zip
FreeBSD-src-0aadc82afbae4dbc41da86cd4f9b2ceb8ddcb17d.tar.gz
Update subversion-1.8.0 -> 1.8.1. Update supporting
components: apr-1.4.6 -> 1.4.8 and apr-util-1.4.1 -> 1.5.2. This is a post point-zero bug-fix / fix-sharp-edges release, including some workarounds for UTF-8 for people who haven't yet turned on WITH_ICONV.
Diffstat (limited to 'contrib/apr/include')
-rw-r--r--contrib/apr/include/apr.hw10
-rw-r--r--contrib/apr/include/apr_allocator.h27
-rw-r--r--contrib/apr/include/apr_general.h2
-rw-r--r--contrib/apr/include/apr_network_io.h2
-rw-r--r--contrib/apr/include/apr_pools.h111
-rw-r--r--contrib/apr/include/apr_strings.h12
-rw-r--r--contrib/apr/include/apr_thread_proc.h4
-rw-r--r--contrib/apr/include/apr_version.h7
8 files changed, 114 insertions, 61 deletions
diff --git a/contrib/apr/include/apr.hw b/contrib/apr/include/apr.hw
index 0aaa62c..a75bc60 100644
--- a/contrib/apr/include/apr.hw
+++ b/contrib/apr/include/apr.hw
@@ -36,6 +36,12 @@
* for Win32 or Netware by those build environments, respectively.
*/
+/* Make sure we have our platform identifier macro defined we ask for later.
+ */
+#if defined(_WIN32) && !defined(WIN32)
+#define WIN32 1
+#endif
+
#if defined(WIN32) || defined(DOXYGEN)
/* Ignore most warnings (back down to /W3) for poorly constructed headers
@@ -377,7 +383,7 @@ typedef int apr_off_t;
typedef int apr_socklen_t;
typedef apr_uint64_t apr_ino_t;
-#ifdef WIN64
+#ifdef _WIN64
#define APR_SIZEOF_VOIDP 8
#else
#define APR_SIZEOF_VOIDP 4
@@ -552,7 +558,7 @@ typedef apr_uint32_t apr_uintptr_t;
#define APR_DECLARE_DATA __declspec(dllimport)
#endif
-#ifdef WIN64
+#ifdef _WIN64
#define APR_SSIZE_T_FMT "I64d"
#define APR_SIZE_T_FMT "I64u"
#else
diff --git a/contrib/apr/include/apr_allocator.h b/contrib/apr/include/apr_allocator.h
index 5aaeb1b..5d66776 100644
--- a/contrib/apr/include/apr_allocator.h
+++ b/contrib/apr/include/apr_allocator.h
@@ -71,7 +71,8 @@ struct apr_memnode_t {
* @param allocator The allocator we have just created.
*
*/
-APR_DECLARE(apr_status_t) apr_allocator_create(apr_allocator_t **allocator);
+APR_DECLARE(apr_status_t) apr_allocator_create(apr_allocator_t **allocator)
+ __attribute__((nonnull(1)));
/**
* Destroy an allocator
@@ -79,7 +80,8 @@ APR_DECLARE(apr_status_t) apr_allocator_create(apr_allocator_t **allocator);
* @remark Any memnodes not given back to the allocator prior to destroying
* will _not_ be free()d.
*/
-APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator);
+APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator)
+ __attribute__((nonnull(1)));
/**
* Allocate a block of mem from the allocator
@@ -88,7 +90,8 @@ APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator);
* memnode structure)
*/
APR_DECLARE(apr_memnode_t *) apr_allocator_alloc(apr_allocator_t *allocator,
- apr_size_t size);
+ apr_size_t size)
+ __attribute__((nonnull(1)));
/**
* Free a list of blocks of mem, giving them back to the allocator.
@@ -98,7 +101,8 @@ APR_DECLARE(apr_memnode_t *) apr_allocator_alloc(apr_allocator_t *allocator,
* @param memnode The memory node to return
*/
APR_DECLARE(void) apr_allocator_free(apr_allocator_t *allocator,
- apr_memnode_t *memnode);
+ apr_memnode_t *memnode)
+ __attribute__((nonnull(1,2)));
#include "apr_pools.h"
@@ -114,13 +118,15 @@ APR_DECLARE(void) apr_allocator_free(apr_allocator_t *allocator,
* the allocator will never be destroyed.
*/
APR_DECLARE(void) apr_allocator_owner_set(apr_allocator_t *allocator,
- apr_pool_t *pool);
+ apr_pool_t *pool)
+ __attribute__((nonnull(1)));
/**
* Get the current owner of the allocator
* @param allocator The allocator to get the owner from
*/
-APR_DECLARE(apr_pool_t *) apr_allocator_owner_get(apr_allocator_t *allocator);
+APR_DECLARE(apr_pool_t *) apr_allocator_owner_get(apr_allocator_t *allocator)
+ __attribute__((nonnull(1)));
/**
* Set the current threshold at which the allocator should start
@@ -129,7 +135,8 @@ APR_DECLARE(apr_pool_t *) apr_allocator_owner_get(apr_allocator_t *allocator);
* @param size The threshold. 0 == unlimited.
*/
APR_DECLARE(void) apr_allocator_max_free_set(apr_allocator_t *allocator,
- apr_size_t size);
+ apr_size_t size)
+ __attribute__((nonnull(1)));
#include "apr_thread_mutex.h"
@@ -140,14 +147,16 @@ APR_DECLARE(void) apr_allocator_max_free_set(apr_allocator_t *allocator,
* @param mutex The mutex
*/
APR_DECLARE(void) apr_allocator_mutex_set(apr_allocator_t *allocator,
- apr_thread_mutex_t *mutex);
+ apr_thread_mutex_t *mutex)
+ __attribute__((nonnull(1)));
/**
* Get the mutex currently set for the allocator
* @param allocator The allocator
*/
APR_DECLARE(apr_thread_mutex_t *) apr_allocator_mutex_get(
- apr_allocator_t *allocator);
+ apr_allocator_t *allocator)
+ __attribute__((nonnull(1)));
#endif /* APR_HAS_THREADS */
diff --git a/contrib/apr/include/apr_general.h b/contrib/apr/include/apr_general.h
index 1b7de93..c7389ec 100644
--- a/contrib/apr/include/apr_general.h
+++ b/contrib/apr/include/apr_general.h
@@ -76,7 +76,7 @@ typedef int apr_signum_t;
* @return offset
*/
-#if defined(CRAY) || (defined(__arm) && !defined(LINUX) && !defined(__FreeBSD__))
+#if defined(CRAY) || (defined(__arm) && !(defined(LINUX) || defined(__FreeBSD__)))
#ifdef __STDC__
#define APR_OFFSET(p_type,field) _Offsetof(p_type,field)
#else
diff --git a/contrib/apr/include/apr_network_io.h b/contrib/apr/include/apr_network_io.h
index 0335da9..8b9209e 100644
--- a/contrib/apr/include/apr_network_io.h
+++ b/contrib/apr/include/apr_network_io.h
@@ -756,6 +756,8 @@ APR_DECLARE(int) apr_ipsubnet_test(apr_ipsubnet_t *ipsub, apr_sockaddr_t *sa);
* @param name The accept filter
* @param args Any extra args to the accept filter. Passing NULL here removes
* the accept filter.
+ * @bug name and args should have been declared as const char *, as they are in
+ * APR 2.0
*/
apr_status_t apr_socket_accept_filter(apr_socket_t *sock, char *name,
char *args);
diff --git a/contrib/apr/include/apr_pools.h b/contrib/apr/include/apr_pools.h
index 7ae1ed6..0f0b95e 100644
--- a/contrib/apr/include/apr_pools.h
+++ b/contrib/apr/include/apr_pools.h
@@ -196,7 +196,8 @@ APR_DECLARE(void) apr_pool_terminate(void);
APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool,
apr_pool_t *parent,
apr_abortfunc_t abort_fn,
- apr_allocator_t *allocator);
+ apr_allocator_t *allocator)
+ __attribute__((nonnull(1)));
/**
* Create a new pool.
@@ -220,7 +221,8 @@ APR_DECLARE(apr_status_t) apr_pool_create_core_ex(apr_pool_t **newpool,
*/
APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex(apr_pool_t **newpool,
apr_abortfunc_t abort_fn,
- apr_allocator_t *allocator);
+ apr_allocator_t *allocator)
+ __attribute__((nonnull(1)));
/**
* Debug version of apr_pool_create_ex.
@@ -242,7 +244,8 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool,
apr_pool_t *parent,
apr_abortfunc_t abort_fn,
apr_allocator_t *allocator,
- const char *file_line);
+ const char *file_line)
+ __attribute__((nonnull(1)));
#if APR_POOL_DEBUG
#define apr_pool_create_ex(newpool, parent, abort_fn, allocator) \
@@ -277,7 +280,8 @@ APR_DECLARE(apr_status_t) apr_pool_create_core_ex_debug(apr_pool_t **newpool,
APR_DECLARE(apr_status_t) apr_pool_create_unmanaged_ex_debug(apr_pool_t **newpool,
apr_abortfunc_t abort_fn,
apr_allocator_t *allocator,
- const char *file_line);
+ const char *file_line)
+ __attribute__((nonnull(1)));
#if APR_POOL_DEBUG
#define apr_pool_create_core_ex(newpool, abort_fn, allocator) \
@@ -343,7 +347,8 @@ APR_DECLARE(apr_status_t) apr_pool_create_unmanaged(apr_pool_t **newpool);
* Find the pool's allocator
* @param pool The pool to get the allocator from.
*/
-APR_DECLARE(apr_allocator_t *) apr_pool_allocator_get(apr_pool_t *pool);
+APR_DECLARE(apr_allocator_t *) apr_pool_allocator_get(apr_pool_t *pool)
+ __attribute__((nonnull(1)));
/**
* Clear all memory in the pool and run all the cleanups. This also destroys all
@@ -353,7 +358,7 @@ APR_DECLARE(apr_allocator_t *) apr_pool_allocator_get(apr_pool_t *pool);
* to re-use this memory for the next allocation.
* @see apr_pool_destroy()
*/
-APR_DECLARE(void) apr_pool_clear(apr_pool_t *p);
+APR_DECLARE(void) apr_pool_clear(apr_pool_t *p) __attribute__((nonnull(1)));
/**
* Debug version of apr_pool_clear.
@@ -369,7 +374,8 @@ APR_DECLARE(void) apr_pool_clear(apr_pool_t *p);
* and don't call apr_pool_destroy_clear directly.
*/
APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *p,
- const char *file_line);
+ const char *file_line)
+ __attribute__((nonnull(1)));
#if APR_POOL_DEBUG
#define apr_pool_clear(p) \
@@ -382,7 +388,7 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *p,
* @param p The pool to destroy
* @remark This will actually free the memory
*/
-APR_DECLARE(void) apr_pool_destroy(apr_pool_t *p);
+APR_DECLARE(void) apr_pool_destroy(apr_pool_t *p) __attribute__((nonnull(1)));
/**
* Debug version of apr_pool_destroy.
@@ -398,7 +404,8 @@ APR_DECLARE(void) apr_pool_destroy(apr_pool_t *p);
* and don't call apr_pool_destroy_debug directly.
*/
APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *p,
- const char *file_line);
+ const char *file_line)
+ __attribute__((nonnull(1)));
#if APR_POOL_DEBUG
#define apr_pool_destroy(p) \
@@ -416,7 +423,11 @@ APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *p,
* @param size The amount of memory to allocate
* @return The allocated memory
*/
-APR_DECLARE(void *) apr_palloc(apr_pool_t *p, apr_size_t size);
+APR_DECLARE(void *) apr_palloc(apr_pool_t *p, apr_size_t size)
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+ __attribute__((alloc_size(2)))
+#endif
+ __attribute__((nonnull(1)));
/**
* Debug version of apr_palloc
@@ -427,7 +438,11 @@ APR_DECLARE(void *) apr_palloc(apr_pool_t *p, apr_size_t size);
* @return See: apr_palloc
*/
APR_DECLARE(void *) apr_palloc_debug(apr_pool_t *p, apr_size_t size,
- const char *file_line);
+ const char *file_line)
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+ __attribute__((alloc_size(2)))
+#endif
+ __attribute__((nonnull(1)));
#if APR_POOL_DEBUG
#define apr_palloc(p, size) \
@@ -455,7 +470,8 @@ APR_DECLARE(void *) apr_pcalloc(apr_pool_t *p, apr_size_t size);
* @return See: apr_pcalloc
*/
APR_DECLARE(void *) apr_pcalloc_debug(apr_pool_t *p, apr_size_t size,
- const char *file_line);
+ const char *file_line)
+ __attribute__((nonnull(1)));
#if APR_POOL_DEBUG
#define apr_pcalloc(p, size) \
@@ -476,21 +492,24 @@ APR_DECLARE(void *) apr_pcalloc_debug(apr_pool_t *p, apr_size_t size,
* deal with the error accordingly.
*/
APR_DECLARE(void) apr_pool_abort_set(apr_abortfunc_t abortfunc,
- apr_pool_t *pool);
+ apr_pool_t *pool)
+ __attribute__((nonnull(2)));
/**
* Get the abort function associated with the specified pool.
* @param pool The pool for retrieving the abort function.
* @return The abort function for the given pool.
*/
-APR_DECLARE(apr_abortfunc_t) apr_pool_abort_get(apr_pool_t *pool);
+APR_DECLARE(apr_abortfunc_t) apr_pool_abort_get(apr_pool_t *pool)
+ __attribute__((nonnull(1)));
/**
* Get the parent pool of the specified pool.
* @param pool The pool for retrieving the parent pool.
* @return The parent of the given pool.
*/
-APR_DECLARE(apr_pool_t *) apr_pool_parent_get(apr_pool_t *pool);
+APR_DECLARE(apr_pool_t *) apr_pool_parent_get(apr_pool_t *pool)
+ __attribute__((nonnull(1)));
/**
* Determine if pool a is an ancestor of pool b.
@@ -510,7 +529,8 @@ APR_DECLARE(int) apr_pool_is_ancestor(apr_pool_t *a, apr_pool_t *b);
* @param pool The pool to tag
* @param tag The tag
*/
-APR_DECLARE(void) apr_pool_tag(apr_pool_t *pool, const char *tag);
+APR_DECLARE(void) apr_pool_tag(apr_pool_t *pool, const char *tag)
+ __attribute__((nonnull(1)));
/*
@@ -536,11 +556,11 @@ APR_DECLARE(void) apr_pool_tag(apr_pool_t *pool, const char *tag);
* key names is a typical way to help ensure this uniqueness.
*
*/
-APR_DECLARE(apr_status_t) apr_pool_userdata_set(
- const void *data,
- const char *key,
- apr_status_t (*cleanup)(void *),
- apr_pool_t *pool);
+APR_DECLARE(apr_status_t) apr_pool_userdata_set(const void *data,
+ const char *key,
+ apr_status_t (*cleanup)(void *),
+ apr_pool_t *pool)
+ __attribute__((nonnull(2,4)));
/**
* Set the data associated with the current pool
@@ -562,10 +582,10 @@ APR_DECLARE(apr_status_t) apr_pool_userdata_set(
*
*/
APR_DECLARE(apr_status_t) apr_pool_userdata_setn(
- const void *data,
- const char *key,
- apr_status_t (*cleanup)(void *),
- apr_pool_t *pool);
+ const void *data, const char *key,
+ apr_status_t (*cleanup)(void *),
+ apr_pool_t *pool)
+ __attribute__((nonnull(2,4)));
/**
* Return the data associated with the current pool.
@@ -574,7 +594,8 @@ APR_DECLARE(apr_status_t) apr_pool_userdata_setn(
* @param pool The current pool.
*/
APR_DECLARE(apr_status_t) apr_pool_userdata_get(void **data, const char *key,
- apr_pool_t *pool);
+ apr_pool_t *pool)
+ __attribute__((nonnull(1,2,3)));
/**
@@ -601,10 +622,10 @@ APR_DECLARE(apr_status_t) apr_pool_userdata_get(void **data, const char *key,
* to exec - this function is called in the child, obviously!
*/
APR_DECLARE(void) apr_pool_cleanup_register(
- apr_pool_t *p,
- const void *data,
- apr_status_t (*plain_cleanup)(void *),
- apr_status_t (*child_cleanup)(void *));
+ apr_pool_t *p, const void *data,
+ apr_status_t (*plain_cleanup)(void *),
+ apr_status_t (*child_cleanup)(void *))
+ __attribute__((nonnull(3,4)));
/**
* Register a function to be called when a pool is cleared or destroyed.
@@ -619,9 +640,9 @@ APR_DECLARE(void) apr_pool_cleanup_register(
* or destroyed
*/
APR_DECLARE(void) apr_pool_pre_cleanup_register(
- apr_pool_t *p,
- const void *data,
- apr_status_t (*plain_cleanup)(void *));
+ apr_pool_t *p, const void *data,
+ apr_status_t (*plain_cleanup)(void *))
+ __attribute__((nonnull(3)));
/**
* Remove a previously registered cleanup function.
@@ -636,7 +657,8 @@ APR_DECLARE(void) apr_pool_pre_cleanup_register(
* function
*/
APR_DECLARE(void) apr_pool_cleanup_kill(apr_pool_t *p, const void *data,
- apr_status_t (*cleanup)(void *));
+ apr_status_t (*cleanup)(void *))
+ __attribute__((nonnull(3)));
/**
* Replace the child cleanup function of a previously registered cleanup.
@@ -651,10 +673,10 @@ APR_DECLARE(void) apr_pool_cleanup_kill(apr_pool_t *p, const void *data,
* @param child_cleanup The function to register as the child cleanup
*/
APR_DECLARE(void) apr_pool_child_cleanup_set(
- apr_pool_t *p,
- const void *data,
- apr_status_t (*plain_cleanup)(void *),
- apr_status_t (*child_cleanup)(void *));
+ apr_pool_t *p, const void *data,
+ apr_status_t (*plain_cleanup)(void *),
+ apr_status_t (*child_cleanup)(void *))
+ __attribute__((nonnull(3,4)));
/**
* Run the specified cleanup function immediately and unregister it.
@@ -667,10 +689,9 @@ APR_DECLARE(void) apr_pool_child_cleanup_set(
* @param data The data to remove from cleanup
* @param cleanup The function to remove from cleanup
*/
-APR_DECLARE(apr_status_t) apr_pool_cleanup_run(
- apr_pool_t *p,
- void *data,
- apr_status_t (*cleanup)(void *));
+APR_DECLARE(apr_status_t) apr_pool_cleanup_run(apr_pool_t *p, void *data,
+ apr_status_t (*cleanup)(void *))
+ __attribute__((nonnull(3)));
/**
* An empty cleanup function.
@@ -739,7 +760,8 @@ APR_DECLARE(void) apr_pool_cleanup_for_exec(void);
* @param p The parent pool
* @param sub The subpool
*/
-APR_DECLARE(void) apr_pool_join(apr_pool_t *p, apr_pool_t *sub);
+APR_DECLARE(void) apr_pool_join(apr_pool_t *p, apr_pool_t *sub)
+ __attribute__((nonnull(2)));
/**
* Find a pool from something allocated in it.
@@ -754,7 +776,8 @@ APR_DECLARE(apr_pool_t *) apr_pool_find(const void *mem);
* @param recurse Recurse/include the subpools' sizes
* @return The number of bytes
*/
-APR_DECLARE(apr_size_t) apr_pool_num_bytes(apr_pool_t *p, int recurse);
+APR_DECLARE(apr_size_t) apr_pool_num_bytes(apr_pool_t *p, int recurse)
+ __attribute__((nonnull(1)));
/**
* Lock a pool
diff --git a/contrib/apr/include/apr_strings.h b/contrib/apr/include/apr_strings.h
index 6b71ff1..4572173 100644
--- a/contrib/apr/include/apr_strings.h
+++ b/contrib/apr/include/apr_strings.h
@@ -106,7 +106,11 @@ APR_DECLARE(char *) apr_pstrdup(apr_pool_t *p, const char *s);
* has 'n' or more characters. If the string might contain
* fewer characters, use apr_pstrndup.
*/
-APR_DECLARE(char *) apr_pstrmemdup(apr_pool_t *p, const char *s, apr_size_t n);
+APR_DECLARE(char *) apr_pstrmemdup(apr_pool_t *p, const char *s, apr_size_t n)
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+ __attribute__((alloc_size(3)))
+#endif
+ ;
/**
* Duplicate at most n characters of a string into memory allocated
@@ -128,7 +132,11 @@ APR_DECLARE(char *) apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n);
* @param n The number of bytes to duplicate
* @return The new block of memory
*/
-APR_DECLARE(void *) apr_pmemdup(apr_pool_t *p, const void *m, apr_size_t n);
+APR_DECLARE(void *) apr_pmemdup(apr_pool_t *p, const void *m, apr_size_t n)
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+ __attribute__((alloc_size(3)))
+#endif
+ ;
/**
* Concatenate multiple strings, allocating memory out a pool
diff --git a/contrib/apr/include/apr_thread_proc.h b/contrib/apr/include/apr_thread_proc.h
index 7df84ef..0a97c95 100644
--- a/contrib/apr/include/apr_thread_proc.h
+++ b/contrib/apr/include/apr_thread_proc.h
@@ -315,7 +315,7 @@ APR_DECLARE(apr_status_t) apr_thread_once(apr_thread_once_t *control,
APR_DECLARE(apr_status_t) apr_thread_detach(apr_thread_t *thd);
/**
- * Return the pool associated with the current thread.
+ * Return user data associated with the current thread.
* @param data The user data associated with the thread.
* @param key The key to associate with the data
* @param thread The currently open thread.
@@ -324,7 +324,7 @@ APR_DECLARE(apr_status_t) apr_thread_data_get(void **data, const char *key,
apr_thread_t *thread);
/**
- * Return the pool associated with the current thread.
+ * Set user data associated with the current thread.
* @param data The user data to associate with the thread.
* @param key The key to use for associating the data with the thread
* @param cleanup The cleanup routine to use when the thread is destroyed.
diff --git a/contrib/apr/include/apr_version.h b/contrib/apr/include/apr_version.h
index 8122320..4b06508 100644
--- a/contrib/apr/include/apr_version.h
+++ b/contrib/apr/include/apr_version.h
@@ -38,6 +38,9 @@
*/
+#define APR_COPYRIGHT "Copyright (c) 2013 The Apache Software " \
+ "Foundation or its licensors, as applicable."
+
/* The numeric compile-time version constants. These constants are the
* authoritative version numbers for APR.
*/
@@ -59,7 +62,7 @@
* The Patch Level never includes API changes, simply bug fixes.
* Reset to 0 when upgrading APR_MINOR_VERSION
*/
-#define APR_PATCH_VERSION 6
+#define APR_PATCH_VERSION 8
/**
* The symbol APR_IS_DEV_VERSION is only defined for internal,
@@ -87,7 +90,9 @@
#if defined(APR_IS_DEV_VERSION) || defined(DOXYGEN)
/** Internal: string form of the "is dev" flag */
+#ifndef APR_IS_DEV_STRING
#define APR_IS_DEV_STRING "-dev"
+#endif
#else
#define APR_IS_DEV_STRING ""
#endif
OpenPOWER on IntegriCloud