diff options
author | Pavel Janík <Pavel@Janik.cz> | 2014-11-21 10:38:27 +0100 |
---|---|---|
committer | Pavel Janík <Pavel@Janik.cz> | 2014-11-24 10:28:24 +0100 |
commit | 494f6e7d353c63a85a2c6d4c6b2eb8e643934d60 (patch) | |
tree | 8f29867d2c1e23d90aeab863051cbd7b40b18b5e | |
parent | c24d07554b18f69a9c5ebf79b48af90d63f16ccb (diff) |
Check for strnlen and provide it if it is not found.
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/compat.h | 4 | ||||
-rw-r--r-- | src/compat/strnlen.cpp | 18 |
4 files changed, 25 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index 6784521d81..1814180864 100644 --- a/configure.ac +++ b/configure.ac @@ -421,6 +421,8 @@ AC_CHECK_HEADERS([endian.h stdio.h stdlib.h unistd.h strings.h sys/types.h sys/s AC_SEARCH_LIBS([getaddrinfo_a], [anl], [AC_DEFINE(HAVE_GETADDRINFO_A, 1, [Define this symbol if you have getaddrinfo_a])]) AC_SEARCH_LIBS([inet_pton], [nsl resolv], [AC_DEFINE(HAVE_INET_PTON, 1, [Define this symbol if you have inet_pton])]) +AC_CHECK_DECLS([strnlen]) + AC_CHECK_DECLS([le32toh, le64toh, htole32, htole64, be32toh, be64toh, htobe32, htobe64],,, [#if HAVE_ENDIAN_H #include <endian.h> diff --git a/src/Makefile.am b/src/Makefile.am index 0d45203c90..3ec9e2f85d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -251,6 +251,7 @@ libbitcoin_common_a_SOURCES = \ # backward-compatibility objects and their sanity checks are linked. libbitcoin_util_a_CPPFLAGS = $(BITCOIN_INCLUDES) libbitcoin_util_a_SOURCES = \ + compat/strnlen.cpp \ compat/glibc_sanity.cpp \ compat/glibcxx_sanity.cpp \ chainparamsbase.cpp \ diff --git a/src/compat.h b/src/compat.h index dade79aae0..80e53fe55e 100644 --- a/src/compat.h +++ b/src/compat.h @@ -84,4 +84,8 @@ typedef u_int SOCKET; #define THREAD_PRIORITY_ABOVE_NORMAL (-2) #endif +#if HAVE_DECL_STRNLEN == 0 +size_t strnlen( const char *start, size_t max_len); +#endif // HAVE_DECL_STRNLEN + #endif // BITCOIN_COMPAT_H diff --git a/src/compat/strnlen.cpp b/src/compat/strnlen.cpp new file mode 100644 index 0000000000..7f3e159887 --- /dev/null +++ b/src/compat/strnlen.cpp @@ -0,0 +1,18 @@ +// Copyright (c) 2009-2014 The Bitcoin developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#if defined(HAVE_CONFIG_H) +#include "config/bitcoin-config.h" +#endif + +#include <cstring> + +#if HAVE_DECL_STRNLEN == 0 +size_t strnlen( const char *start, size_t max_len) +{ + const char *end = (const char *)memchr(start, '\0', max_len); + + return end ? (size_t)(end - start) : max_len; +} +#endif // HAVE_DECL_STRNLEN |