From fb44386acc2497ac250364bc08cebc26ded816cf Mon Sep 17 00:00:00 2001
From: Carlo Landmeter <clandmeter@gmail.com>
Date: Tue, 16 May 2023 19:57:39 +0200
Subject: [PATCH] Fix musl build

Downloaded from
https://git.alpinelinux.org/aports/tree/community/vdr/musl-compat.patch

Initial commit:
https://git.alpinelinux.org/aports/commit/?id=140248605cee4a0160f80b47ce77a823be2f740a

Upstream: https://www.linuxtv.org/pipermail/vdr/2023-May/029744.html

Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
---
 i18n.h   |  2 +-
 osd.c    |  2 +-
 thread.c |  4 +++-
 tools.c  |  4 ++--
 tools.h  | 14 ++++++++++++--
 vdr.c    |  6 ++++++
 6 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/i18n.h b/i18n.h
index 03deb6f2..85ce4077 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 47bda686..0d360c81 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 93eb8c0d..6e854541 100644
--- a/thread.c
+++ b/thread.c
@@ -160,7 +160,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);
 }
 
@@ -210,7 +212,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 d04033b1..8b161eec 100644
--- a/tools.c
+++ b/tools.c
@@ -672,7 +672,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);
@@ -1562,7 +1562,7 @@ cReadDir::~cReadDir()
 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 ff6169ee..60eda179 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;
@@ -444,7 +454,7 @@ class cReadDir {
 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];
@@ -818,7 +828,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 1bdc51ab..0f426e61 100644
--- a/vdr.c
+++ b/vdr.c
@@ -661,12 +661,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
      }
 
   // Set user id in case we were started as root:
-- 
2.39.2

