From 2c82451650e0fe781cee6728c3ceef4cb3161562 Mon Sep 17 00:00:00 2001
From: Rosen Penev <rosenp@gmail.com>
Date: Sat, 29 Jun 2024 17:05:33 -0700
Subject: [PATCH] pcsc-lite: fix formats under musl

pthread_t is a pointer on musl libc.

../src/debuglog.c: In function 'log_line':
../src/debuglog.c:279:40: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'pthread_t' {aka 'struct __pthread *'} [-Werror=format=]
  279 |                                 printf("%s%.8d%s [" THREAD_FORMAT "] %s%s%s, %s%s%s\n",
      |                                        ^~~~~~~~~~~~
  280 |                                         time_pfx, delta, time_sfx, thread_id,
      |                                                                    ~~~~~~~~~
      |                                                                    |
      |                                                                    pthread_t {aka struct __pthread *}
../src/debuglog.c:268:26: note: format string is defined here
  268 | #define THREAD_FORMAT "%lu"
      |                        ~~^
      |                          |
      |                          long unsigned int
../src/debuglog.c:285:40: error: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'pthread_t' {aka 'struct __pthread *'} [-Werror=format=]
  285 |                                 printf("%s%.8d%s [" THREAD_FORMAT "] %s%s%s\n",
      |                                        ^~~~~~~~~~~~
  286 |                                         time_pfx, delta, time_sfx, thread_id,
      |                                                                    ~~~~~~~~~
      |                                                                    |
      |                                                                    pthread_t {aka struct __pthread *}
../src/debuglog.c:268:26: note: format string is defined here
  268 | #define THREAD_FORMAT "%lu"
      |                        ~~^
      |                          |
      |                          long unsigned int
cc1: some warnings being treated as errors
ninja: build stopped: subcommand failed.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 src/debuglog.c       | 6 +++---
 src/spy/libpcscspy.c | 4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

--- a/src/debuglog.c
+++ b/src/debuglog.c
@@ -262,10 +262,10 @@ static void log_line(const int priority,
 					break;
 			}
 
-#ifdef __APPLE__
-#define THREAD_FORMAT "%p"
-#else
+#ifdef __GLIBC__
 #define THREAD_FORMAT "%lu"
+#else
+#define THREAD_FORMAT "%p"
 #endif
 			if (rv_text)
 			{
--- a/src/spy/libpcscspy.c
+++ b/src/spy/libpcscspy.c
@@ -121,7 +121,7 @@ static void spy_line_direct(char *line)
 	if (Log_fd < 0)
 		return;
 
-	snprintf(threadid, sizeof threadid, "%lX@", pthread_self());
+	snprintf(threadid, sizeof threadid, "%lX@", (unsigned long)pthread_self());
 	pthread_mutex_lock(&Log_fd_mutex);
 	r = write(Log_fd, threadid, strlen(threadid));
 	r = write(Log_fd, line, strlen(line));
@@ -150,7 +150,7 @@ static void spy_line(const char *fmt, ..
 		printf("libpcsc-spy: Buffer is too small!\n");
 		return;
 	}
-	snprintf(threadid, sizeof threadid, "%lX@", pthread_self());
+	snprintf(threadid, sizeof threadid, "%lX@", (unsigned long)pthread_self());
 	pthread_mutex_lock(&Log_fd_mutex);
 	r = write(Log_fd, threadid, strlen(threadid));
 	r = write(Log_fd, line, size);
