Hello,
On 7/22/21 11:24 AM, Giulio Benetti wrote:
When passing time_t type to "%ld" on 64-bits platforms where time_t is a
'long long' we encouter this build failure:
error: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘time_t’ {aka ‘long long int’} [-Werror=format=]
So let's change "%ld" markers to "%lld" assuming it to be a 64-bits and
cast variables to '(long long)' if the type is a time_t.
Just an FYI... I will be using Petr's patches [1] and [2]
since they used the inittypes defines which seem a
bit more portable and they do the same thing.
steved.
[1] https://marc.info/?l=linux-nfs&m=162697054816925&w=2
[2] https://marc.info/?l=linux-nfs&m=162697054816926&w=2
Signed-off-by: Giulio Benetti <giulio.benetti@xxxxxxxxxxxxxxxxxxxxxx>
---
utils/nfsdcltrack/nfsdcltrack.c | 2 +-
utils/nfsdcltrack/sqlite.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/utils/nfsdcltrack/nfsdcltrack.c b/utils/nfsdcltrack/nfsdcltrack.c
index e926f1c0..437477bb 100644
--- a/utils/nfsdcltrack/nfsdcltrack.c
+++ b/utils/nfsdcltrack/nfsdcltrack.c
@@ -525,7 +525,7 @@ cltrack_gracedone(const char *timestr)
if (*tail)
return -EINVAL;
- xlog(D_GENERAL, "%s: grace done. gracetime=%ld", __func__, gracetime);
+ xlog(D_GENERAL, "%s: grace done. gracetime=%lld", __func__, (long long)gracetime);
ret = sqlite_remove_unreclaimed(gracetime);
diff --git a/utils/nfsdcltrack/sqlite.c b/utils/nfsdcltrack/sqlite.c
index f79aebb3..6e603087 100644
--- a/utils/nfsdcltrack/sqlite.c
+++ b/utils/nfsdcltrack/sqlite.c
@@ -544,8 +544,8 @@ sqlite_remove_unreclaimed(time_t grace_start)
int ret;
char *err = NULL;
- ret = snprintf(buf, sizeof(buf), "DELETE FROM clients WHERE time < %ld",
- grace_start);
+ ret = snprintf(buf, sizeof(buf), "DELETE FROM clients WHERE time < %lld",
+ (long long)grace_start);
if (ret < 0) {
return ret;
} else if ((size_t)ret >= sizeof(buf)) {