Check for strnlen and provide it if it is not found.
This commit is contained in:
parent
c24d07554b
commit
494f6e7d35
@ -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([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_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],,,
|
AC_CHECK_DECLS([le32toh, le64toh, htole32, htole64, be32toh, be64toh, htobe32, htobe64],,,
|
||||||
[#if HAVE_ENDIAN_H
|
[#if HAVE_ENDIAN_H
|
||||||
#include <endian.h>
|
#include <endian.h>
|
||||||
|
@ -251,6 +251,7 @@ libbitcoin_common_a_SOURCES = \
|
|||||||
# backward-compatibility objects and their sanity checks are linked.
|
# backward-compatibility objects and their sanity checks are linked.
|
||||||
libbitcoin_util_a_CPPFLAGS = $(BITCOIN_INCLUDES)
|
libbitcoin_util_a_CPPFLAGS = $(BITCOIN_INCLUDES)
|
||||||
libbitcoin_util_a_SOURCES = \
|
libbitcoin_util_a_SOURCES = \
|
||||||
|
compat/strnlen.cpp \
|
||||||
compat/glibc_sanity.cpp \
|
compat/glibc_sanity.cpp \
|
||||||
compat/glibcxx_sanity.cpp \
|
compat/glibcxx_sanity.cpp \
|
||||||
chainparamsbase.cpp \
|
chainparamsbase.cpp \
|
||||||
|
@ -84,4 +84,8 @@ typedef u_int SOCKET;
|
|||||||
#define THREAD_PRIORITY_ABOVE_NORMAL (-2)
|
#define THREAD_PRIORITY_ABOVE_NORMAL (-2)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_DECL_STRNLEN == 0
|
||||||
|
size_t strnlen( const char *start, size_t max_len);
|
||||||
|
#endif // HAVE_DECL_STRNLEN
|
||||||
|
|
||||||
#endif // BITCOIN_COMPAT_H
|
#endif // BITCOIN_COMPAT_H
|
||||||
|
18
src/compat/strnlen.cpp
Normal file
18
src/compat/strnlen.cpp
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user