diff options
Diffstat (limited to 'package/tvheadend/0002-configure-check-for-strlcat-strlcpy.patch')
-rw-r--r-- | package/tvheadend/0002-configure-check-for-strlcat-strlcpy.patch | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/package/tvheadend/0002-configure-check-for-strlcat-strlcpy.patch b/package/tvheadend/0002-configure-check-for-strlcat-strlcpy.patch new file mode 100644 index 0000000000..71c01e2f48 --- /dev/null +++ b/package/tvheadend/0002-configure-check-for-strlcat-strlcpy.patch @@ -0,0 +1,97 @@ +From 1f879e4b930fef71f030e5b6e5fae359f27d1aec Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls <bernd.kuhls@t-online.de> +Date: Sat, 23 Jun 2018 20:47:26 +0200 +Subject: [PATCH] configure: check for strlcat & strlcpy + +Building tvheadend with uclibc and musl fails: + +src/tvh_string.h:50:22: error: static declaration of 'strlcpy' follows non-static declaration + static inline size_t strlcpy(char *dst, const char *src, size_t size) + +src/tvh_string.h:61:22: error: static declaration of 'strlcat' follows non-static declaration + static inline size_t strlcat(char *dst, const char *src, size_t count) + +because they provide strlcat & strlcpy: +https://sourceware.org/glibc/wiki/strlcpy + +This patch adds configure checks and makes the implementation in +tvh_string.h optional, the configure log looks like this: + +glibc + checking for cc strlcat ... fail + checking for cc strlcpy ... fail + +musl + checking for cc strlcat ... ok + checking for cc strlcpy ... ok + +uclibc + checking for cc strlcat ... ok + checking for cc strlcpy ... ok + +Patch sent upstream: https://github.com/tvheadend/tvheadend/pull/1133 + +Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> +--- + configure | 14 ++++++++++++++ + src/tvh_string.h | 4 ++++ + 2 files changed, 18 insertions(+) + +diff --git a/configure b/configure +index 0857a1958..b183d02b3 100755 +--- a/configure ++++ b/configure +@@ -159,6 +159,20 @@ else + COMPILER=gcc + fi + ++check_cc_snippet strlcat '#include <string.h> ++int test(int argc, char **argv) { ++ char dst[10]; ++ strlcat("test", dst, sizeof(dst)); ++ return 0; ++}' ++ ++check_cc_snippet strlcpy '#include <string.h> ++int test(int argc, char **argv) { ++ char dst[10]; ++ strlcpy("test", dst, sizeof(dst)); ++ return 0; ++}' ++ + check_cc_snippet getloadavg '#include <stdlib.h> + void test() { getloadavg(NULL,0); }' + +diff --git a/src/tvh_string.h b/src/tvh_string.h +index 87d8c3320..13ef2f308 100644 +--- a/src/tvh_string.h ++++ b/src/tvh_string.h +@@ -47,6 +47,7 @@ static inline const char *tvh_strbegins(const char *s1, const char *s2) + return s1; + } + ++#ifndef ENABLE_STRLCPY + static inline size_t strlcpy(char *dst, const char *src, size_t size) + { + size_t ret = strlen(src); +@@ -57,7 +58,9 @@ static inline size_t strlcpy(char *dst, const char *src, size_t size) + } + return ret; + } ++#endif + ++#ifndef ENABLE_STRLCAT + static inline size_t strlcat(char *dst, const char *src, size_t count) + { + size_t dlen = strlen(dst); +@@ -72,6 +75,7 @@ static inline size_t strlcat(char *dst, const char *src, size_t count) + dst[len] = '\0'; + return res; + } ++#endif + + #define tvh_strlcatf(buf, size, ptr, fmt...) \ + do { int __r = snprintf((buf) + ptr, (size) - ptr, fmt); \ +-- +2.17.1 + |