Merge pull request #433 from compnerd/static-build
build: make the static build work well
diff --git a/src/init.c b/src/init.c
index 5153ae4..11dabb9 100644
--- a/src/init.c
+++ b/src/init.c
@@ -709,7 +709,7 @@
char path[MAX_PATH + 1] = {0};
DWORD dwLength = GetTempPathA(MAX_PATH, path);
dispatch_assert(dwLength <= MAX_PATH + 1);
- snprintf(&path[dwLength], MAX_PATH - dwLength, "libdispatch.%d.log",
+ snprintf(&path[dwLength], MAX_PATH - dwLength, "libdispatch.%lu.log",
GetCurrentProcessId());
dispatch_logfile = _open(path, O_WRONLY | O_APPEND | O_CREAT, 0666);
#else
diff --git a/src/internal.h b/src/internal.h
index bde3d4f..43aeb9f 100644
--- a/src/internal.h
+++ b/src/internal.h
@@ -295,6 +295,7 @@
#include <io.h>
#include <crtdbg.h>
#endif
+#include <inttypes.h>
#if defined(__GNUC__) || defined(__clang__)
#define DISPATCH_NOINLINE __attribute__((__noinline__))
diff --git a/src/io.c b/src/io.c
index 3cfe40b..23a07bf 100644
--- a/src/io.c
+++ b/src/io.c
@@ -2568,11 +2568,11 @@
_dispatch_io_debug_attr(dispatch_io_t channel, char* buf, size_t bufsiz)
{
dispatch_queue_t target = channel->do_targetq;
- return dsnprintf(buf, bufsiz, "type = %s, fd = 0x%x, %sfd_entry = %p, "
+ return dsnprintf(buf, bufsiz, "type = %s, fd = 0x%" PRIxPTR ", %sfd_entry = %p, "
"queue = %p, target = %s[%p], barrier_queue = %p, barrier_group = "
"%p, err = 0x%x, low = 0x%zx, high = 0x%zx, interval%s = %llu ",
channel->params.type == DISPATCH_IO_STREAM ? "stream" : "random",
- channel->fd_actual, channel->atomic_flags & DIO_STOPPED ?
+ (intptr_t)channel->fd_actual, channel->atomic_flags & DIO_STOPPED ?
"stopped, " : channel->atomic_flags & DIO_CLOSED ? "closed, " : "",
channel->fd_entry, channel->queue, target && target->dq_label ?
target->dq_label : "", target, channel->barrier_queue,
@@ -2601,13 +2601,13 @@
{
dispatch_queue_t target = op->do_targetq;
dispatch_queue_t oqtarget = op->op_q ? op->op_q->do_targetq : NULL;
- return dsnprintf(buf, bufsiz, "type = %s %s, fd = 0x%x, fd_entry = %p, "
+ return dsnprintf(buf, bufsiz, "type = %s %s, fd = 0x%" PRIxPTR ", fd_entry = %p, "
"channel = %p, queue = %p -> %s[%p], target = %s[%p], "
"offset = %lld, length = %zu, done = %zu, undelivered = %zu, "
"flags = %u, err = 0x%x, low = 0x%zx, high = 0x%zx, "
"interval%s = %llu ", op->params.type == DISPATCH_IO_STREAM ?
"stream" : "random", op->direction == DOP_DIR_READ ? "read" :
- "write", op->fd_entry ? op->fd_entry->fd : -1, op->fd_entry,
+ "write", (intptr_t)(op->fd_entry ? op->fd_entry->fd : -1), op->fd_entry,
op->channel, op->op_q, oqtarget && oqtarget->dq_label ?
oqtarget->dq_label : "", oqtarget, target && target->dq_label ?
target->dq_label : "", target, (long long)op->offset, op->length,
diff --git a/src/queue.c b/src/queue.c
index cf0fdc6..b1b4458 100644
--- a/src/queue.c
+++ b/src/queue.c
@@ -6435,7 +6435,9 @@
{
// never returns, so burn bridges behind us
_dispatch_clear_stack(0);
-#if !defined(_WIN32)
+#if defined(_WIN32)
+ for (;;) SuspendThread(GetCurrentThread());
+#else
_dispatch_sigsuspend();
#endif
}
diff --git a/src/semaphore.c b/src/semaphore.c
index 0bdd049..5fea942 100644
--- a/src/semaphore.c
+++ b/src/semaphore.c
@@ -87,7 +87,7 @@
dsema->dsema_sema);
#endif
offset += dsnprintf(&buf[offset], bufsiz - offset,
- "value = %ld, orig = %ld }", dsema->dsema_value, dsema->dsema_orig);
+ "value = %" PRId64 ", orig = %" PRId64 " }", dsema->dsema_value, dsema->dsema_orig);
return offset;
}
@@ -272,7 +272,7 @@
dg->dg_sema);
#endif
offset += dsnprintf(&buf[offset], bufsiz - offset,
- "count = %ld, waiters = %d }", dg->dg_value, dg->dg_waiters);
+ "count = %" PRId64 ", waiters = %d }", dg->dg_value, dg->dg_waiters);
return offset;
}