fd4236a796
Musl libc defines time_t as 64-bit causing printf() to fail since it tries to pass time_t as a 32-bit("%ld"). So let's add upstream patch[1] to fix this issue. [1]: http://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commit;h=cb75ec49c0a92f55b2241eb1cd95a3fdf63f0dac Fixes: http://autobuild.buildroot.net/results/35ce3dbd63a658953008ce7e7b99e0580d3f2c4b Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> Reviewed-by: Petr Vorel <petr.vorel@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
85 lines
2.6 KiB
Diff
85 lines
2.6 KiB
Diff
From cb75ec49c0a92f55b2241eb1cd95a3fdf63f0dac Mon Sep 17 00:00:00 2001
|
|
From: Rosen Penev <rosenp@gmail.com>
|
|
Date: Mon, 13 Apr 2020 14:14:45 -0400
|
|
Subject: [PATCH] nfs-utils: print time in 64-bit
|
|
|
|
musl 1.2.0 defines time_t as 64-bit, even under 32-bit OSes.
|
|
|
|
Fixes -Wformat errors.
|
|
|
|
Signed-off-by: Rosen Penev <rosenp@gmail.com>
|
|
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
|
|
---
|
|
support/nfs/cacheio.c | 3 ++-
|
|
utils/idmapd/idmapd.c | 11 ++++++-----
|
|
2 files changed, 8 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/support/nfs/cacheio.c b/support/nfs/cacheio.c
|
|
index 7c4cf373..126c1283 100644
|
|
--- a/support/nfs/cacheio.c
|
|
+++ b/support/nfs/cacheio.c
|
|
@@ -20,6 +20,7 @@
|
|
#endif
|
|
|
|
#include <nfslib.h>
|
|
+#include <inttypes.h>
|
|
#include <stdio.h>
|
|
#include <stdio_ext.h>
|
|
#include <string.h>
|
|
@@ -238,7 +239,7 @@ cache_flush(int force)
|
|
stb.st_mtime > now)
|
|
stb.st_mtime = time(0);
|
|
|
|
- sprintf(stime, "%ld\n", stb.st_mtime);
|
|
+ sprintf(stime, "%" PRId64 "\n", (int64_t)stb.st_mtime);
|
|
for (c=0; cachelist[c]; c++) {
|
|
int fd;
|
|
sprintf(path, "/proc/net/rpc/%s/flush", cachelist[c]);
|
|
diff --git a/utils/idmapd/idmapd.c b/utils/idmapd/idmapd.c
|
|
index c187e7d7..893159f1 100644
|
|
--- a/utils/idmapd/idmapd.c
|
|
+++ b/utils/idmapd/idmapd.c
|
|
@@ -54,6 +54,7 @@
|
|
#include <dirent.h>
|
|
#include <unistd.h>
|
|
#include <netdb.h>
|
|
+#include <inttypes.h>
|
|
#include <signal.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
@@ -172,7 +173,7 @@ flush_nfsd_cache(char *path, time_t now)
|
|
int fd;
|
|
char stime[32];
|
|
|
|
- sprintf(stime, "%ld\n", now);
|
|
+ sprintf(stime, "%" PRId64 "\n", (int64_t)now);
|
|
fd = open(path, O_RDWR);
|
|
if (fd == -1)
|
|
return -1;
|
|
@@ -625,8 +626,8 @@ nfsdcb(int UNUSED(fd), short which, void *data)
|
|
/* Name */
|
|
addfield(&bp, &bsiz, im.im_name);
|
|
/* expiry */
|
|
- snprintf(buf1, sizeof(buf1), "%lu",
|
|
- time(NULL) + cache_entry_expiration);
|
|
+ snprintf(buf1, sizeof(buf1), "%" PRId64,
|
|
+ (int64_t)time(NULL) + cache_entry_expiration);
|
|
addfield(&bp, &bsiz, buf1);
|
|
/* Note that we don't want to write the id if the mapping
|
|
* failed; instead, by leaving it off, we write a negative
|
|
@@ -653,8 +654,8 @@ nfsdcb(int UNUSED(fd), short which, void *data)
|
|
snprintf(buf1, sizeof(buf1), "%u", im.im_id);
|
|
addfield(&bp, &bsiz, buf1);
|
|
/* expiry */
|
|
- snprintf(buf1, sizeof(buf1), "%lu",
|
|
- time(NULL) + cache_entry_expiration);
|
|
+ snprintf(buf1, sizeof(buf1), "%" PRId64,
|
|
+ (int64_t)time(NULL) + cache_entry_expiration);
|
|
addfield(&bp, &bsiz, buf1);
|
|
/* Note we're ignoring the status field in this case; we'll
|
|
* just map to nobody instead. */
|
|
--
|
|
2.20.1
|
|
|