aboutsummaryrefslogtreecommitdiffstats
path: root/testing/vdr/musl-compat.patch
diff options
context:
space:
mode:
authorTaner Tas <taner76@gmail.com>2017-07-11 07:00:09 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2017-07-24 10:40:53 +0000
commit5a98b04cc37938b42fc9de0da61eef3792e8c001 (patch)
tree242d791ac3c05a956f7a26bc28a3f50390e6113a /testing/vdr/musl-compat.patch
parent60d203036f77aa3a021d0a66264031059c9a2f55 (diff)
downloadaports-5a98b04cc37938b42fc9de0da61eef3792e8c001.tar.bz2
aports-5a98b04cc37938b42fc9de0da61eef3792e8c001.tar.xz
unmaintained/vdr/APKBUILD -> testing/vdr:
Diffstat (limited to 'testing/vdr/musl-compat.patch')
-rw-r--r--testing/vdr/musl-compat.patch133
1 files changed, 133 insertions, 0 deletions
diff --git a/testing/vdr/musl-compat.patch b/testing/vdr/musl-compat.patch
new file mode 100644
index 0000000000..4b5dbbf457
--- /dev/null
+++ b/testing/vdr/musl-compat.patch
@@ -0,0 +1,133 @@
+diff --git a/i18n.h b/i18n.h
+index f8ad9de..b002bbf 100644
+--- a/i18n.h
++++ b/i18n.h
+@@ -46,7 +46,7 @@ const cStringList *I18nLanguages(void);
+ ///< have an actual locale installed. The rest are just dummy entries
+ ///< to allow having three letter language codes for other languages
+ ///< that have no actual locale on this system.
+-const char *I18nTranslate(const char *s, const char *Plugin = NULL) __attribute_format_arg__(1);
++const char *I18nTranslate(const char *s, const char *Plugin = NULL) __attribute__((__format_arg__ (1)));
+ ///< Translates the given string (with optional Plugin context) into
+ ///< the current language. If no translation is available, the original
+ ///< string will be returned.
+diff --git a/osd.c b/osd.c
+index 524700a..ef975f5 100644
+--- a/osd.c
++++ b/osd.c
+@@ -12,7 +12,7 @@
+ #include <stdlib.h>
+ #include <sys/ioctl.h>
+ #include <sys/stat.h>
+-#include <sys/unistd.h>
++#include <unistd.h>
+ #include "device.h"
+ #include "tools.h"
+
+diff --git a/thread.c b/thread.c
+index 47eb977..58dba43 100644
+--- a/thread.c
++++ b/thread.c
+@@ -155,7 +155,9 @@ cRwLock::cRwLock(bool PreferWriter)
+ writeLockThreadId = 0;
+ pthread_rwlockattr_t attr;
+ pthread_rwlockattr_init(&attr);
++#if defined(__GLIBC__)
+ pthread_rwlockattr_setkind_np(&attr, PreferWriter ? PTHREAD_RWLOCK_PREFER_WRITER_NP : PTHREAD_RWLOCK_PREFER_READER_NP);
++#endif
+ pthread_rwlock_init(&rwlock, &attr);
+ }
+
+@@ -205,7 +207,7 @@ cMutex::cMutex(void)
+ locked = 0;
+ pthread_mutexattr_t attr;
+ pthread_mutexattr_init(&attr);
+- pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK_NP);
++ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK);
+ pthread_mutex_init(&mutex, &attr);
+ }
+
+diff --git a/tools.c b/tools.c
+index 754673d..fef9d2d 100644
+--- a/tools.c
++++ b/tools.c
+@@ -640,7 +640,7 @@ char *ReadLink(const char *FileName)
+ {
+ if (!FileName)
+ return NULL;
+- char *TargetName = canonicalize_file_name(FileName);
++ char *TargetName = realpath(FileName, NULL);
+ if (!TargetName) {
+ if (errno == ENOENT) // file doesn't exist
+ TargetName = strdup(FileName);
+@@ -1528,7 +1528,7 @@
+ struct dirent *cReadDir::Next(void)
+ {
+ if (directory) {
+-#if !__GLIBC_PREREQ(2, 24) // readdir_r() is deprecated as of GLIBC 2.24
++#if __GLIBC__
+ while (readdir_r(directory, &u.d, &result) == 0 && result) {
+ #else
+ while ((result = readdir(directory)) != NULL) {
+diff --git a/tools.h b/tools.h
+index 73cca5a..03f5fd1 100644
+--- a/tools.h
++++ b/tools.h
+@@ -28,6 +28,16 @@
+ #include <sys/types.h>
+ #include "thread.h"
+
++#ifndef ACCESSPERMS
++# define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */
++#endif
++#ifndef ALLPERMS
++# define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)/* 07777 */
++#endif
++#ifndef DEFFILEMODE
++# define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)/* 0666*/
++#endif
++
+ typedef unsigned char uchar;
+
+ extern int SysLogLevel;
+@@ -400,7 +410,7 @@
+ private:
+ DIR *directory;
+ struct dirent *result;
+-#if !__GLIBC_PREREQ(2, 24) // readdir_r() is deprecated as of GLIBC 2.24
++#if __GLIBC__
+ union { // according to "The GNU C Library Reference Manual"
+ struct dirent d;
+ char b[offsetof(struct dirent, d_name) + NAME_MAX + 1];
+@@ -738,7 +748,7 @@ public:
+ data[i] = T(0);
+ size = 0;
+ }
+- void Sort(__compar_fn_t Compare)
++ void Sort(int (*Compare)(const void *, const void *))
+ {
+ qsort(data, size, sizeof(T), Compare);
+ }
+diff --git a/vdr.c b/vdr.c
+index 8a49471..c2a82aa 100644
+--- a/vdr.c
++++ b/vdr.c
+@@ -670,12 +670,18 @@ int main(int argc, char *argv[])
+ }
+ }
+ else if (Terminal) {
++#ifdef __GLIBC__
+ // Claim new controlling terminal
+ stdin = freopen(Terminal, "r", stdin);
+ stdout = freopen(Terminal, "w", stdout);
+ stderr = freopen(Terminal, "w", stderr);
+ HasStdin = true;
+ tcgetattr(STDIN_FILENO, &savedTm);
++#else
++ // stdin, stdout, stderr are declared FILE const* by musl C library
++ fprintf(stderr, "Option '-t' is only supported if VDR has been built against glibc.\n");
++ return 2;
++#endif
+ }
+
+ isyslog("VDR version %s started", VDRVERSION);