aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2014-11-26 09:09:14 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2014-11-26 09:51:05 +0100
commit70f9e33fa0b5a31c18e23442601b14910ba991bb (patch)
treef787400b590b1895c354ab415d294219cb227159
parentac0b2393a447bb20f8b0489a67237c98a1cfff4a (diff)
parentc8ed6130a4f7cfae897220ec093b440d21727cde (diff)
Merge pull request #5340
c8ed613 Include missing config/bitcoin-config.h. (Pavel Janík) 494f6e7 Check for strnlen and provide it if it is not found. (Pavel Janík)
-rw-r--r--configure.ac2
-rw-r--r--src/Makefile.am1
-rw-r--r--src/compat.h8
-rw-r--r--src/compat/strnlen.cpp18
4 files changed, 29 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..dffd4ecf52 100644
--- a/src/compat.h
+++ b/src/compat.h
@@ -6,6 +6,10 @@
#ifndef BITCOIN_COMPAT_H
#define BITCOIN_COMPAT_H
+#if defined(HAVE_CONFIG_H)
+#include "config/bitcoin-config.h"
+#endif
+
#ifdef WIN32
#ifdef _WIN32_WINNT
#undef _WIN32_WINNT
@@ -84,4 +88,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