summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOBATA Akio <obache@wizdas.com>2019-04-18 17:25:48 +0900
committerSlávek Banko <slavek.banko@axis.cz>2019-04-21 15:35:20 +0200
commit9e4dd173abc8d87171d7c7cee5840517aac0cd39 (patch)
treea6c3c83f09b01db19fbd9cfc87f21b7d3b38817f
parent5b86cdcea298c31399a6953f7d42a1e2acac4744 (diff)
downloadtdenetwork-9e4dd173abc8d87171d7c7cee5840517aac0cd39.tar.gz
tdenetwork-9e4dd173abc8d87171d7c7cee5840517aac0cd39.zip
Change to dclare `strlcat` and `strlcpy` conditionally
They should be declared only for the case missing. Current prototype signatures should be for suppliment implementations in TDE core library. It may differ than platform builtin one, 3rd argment is `size_t', so it cause prototype mismatch for the case `size_t` != `unsigned long`. Signed-off-by: OBATA Akio <obache@wizdas.com> (cherry picked from commit d3b49e3ec5524f2e16f96210f450ddb9f8f07070)
-rw-r--r--ConfigureChecks.cmake3
-rw-r--r--config.h.cmake17
2 files changed, 19 insertions, 1 deletions
diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
index 117d306b..4d5ad07a 100644
--- a/ConfigureChecks.cmake
+++ b/ConfigureChecks.cmake
@@ -45,3 +45,6 @@ if( WITH_SLP )
tde_message_fatal( "openslp is required, but was not found on your system" )
endif( )
endif( )
+
+check_symbol_exists( strlcat "string.h" HAVE_STRLCAT_PROTO )
+check_symbol_exists( strlcpy "string.h" HAVE_STRLCPY_PROTO )
diff --git a/config.h.cmake b/config.h.cmake
index 38def3f3..3bed93bc 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -62,9 +62,24 @@
// wifi
#cmakedefine WITHOUT_ARTS 1
+/* Define if you have the strlcat prototype */
+#cmakedefine HAVE_STRLCAT_PROTO
+
+/* Define if you have the strlcpy prototype */
+#cmakedefine HAVE_STRLCPY_PROTO
+
+#if !defined(HAVE_STRLCAT_PROTO)
#ifdef __cplusplus
extern "C" {
-unsigned long strlcpy(char*, const char*, unsigned long);
unsigned long strlcat(char*, const char*, unsigned long);
}
#endif
+#endif
+
+#if !defined(HAVE_STRLCPY_PROTO)
+#ifdef __cplusplus
+extern "C" {
+unsigned long strlcpy(char*, const char*, unsigned long);
+}
+#endif
+#endif