Message ID | 20210722152411.1156295-1-giulio.benetti@benettiengineering.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | nfs-utils: fix time_t build error on 64-bits platforms | expand |
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@benettiengineering.com> > --- > 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)) { >
Hello Steve, > Il giorno 25 lug 2021, alle ore 19:05, Steve Dickson <steved@redhat.com> ha scritto: > > 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. Sure, I’ve missed those patches, thank you for pointing so I can use them in Buildroot instead of this one. Best regards Giulio Benetti > > 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@benettiengineering.com> >> --- >> 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)) { >
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)) {
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. Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com> --- utils/nfsdcltrack/nfsdcltrack.c | 2 +- utils/nfsdcltrack/sqlite.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)