summaryrefslogtreecommitdiffstats
path: root/package/tvheadend/0002-configure-check-for-strlcat-strlcpy.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/tvheadend/0002-configure-check-for-strlcat-strlcpy.patch')
-rw-r--r--package/tvheadend/0002-configure-check-for-strlcat-strlcpy.patch97
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
+
OpenPOWER on IntegriCloud