kumquat-buildroot/package/tvheadend/0002-configure-check-for-strlcat-strlcpy.patch
Bernd Kuhls 23e18c4036 package/tvheadend: bump version
Removed patch 0002, applied upstream:
068e5f921d

Added patch to fix musl & uclibc build.

Renamed option dvbcsa to tvhcsa.

Upstream removed the dvbcsa configure option with this commit:
4e7f837c70 (diff-e2d5a00791bce9a01f99bc6fd613a39d)

and moved the optional dvbcsa support inside the tvhcsa option block:
c76c7e0604/configure (L645)

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2018-06-25 22:16:47 +02:00

98 lines
2.7 KiB
Diff

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