[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] tools/xenstore/xenstored_control.c: correctly print time_t



On 12.04.23 11:01, Alexander Kanavin wrote:
On 32 bit systems with 64 bit time_t (hello, Y2038 problem),
the following error occurs otherwise:

| xenstored_control.c: In function 'lu_reject_reason':
| xenstored_control.c:646:70: error: format '%ld' expects argument of type 
'long int', but argument 5 has type 'time_t' {aka 'long long int'} 
[-Werror=format=]

Signed-off-by: Alexander Kanavin <alex@xxxxxxxxxxxxx>
---
  tools/xenstore/xenstored_control.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/xenstore/xenstored_control.c 
b/tools/xenstore/xenstored_control.c
index cbd62556c3..8683947d25 100644
--- a/tools/xenstore/xenstored_control.c
+++ b/tools/xenstore/xenstored_control.c
@@ -668,10 +668,10 @@ static const char *lu_reject_reason(const void *ctx)
        list_for_each_entry(conn, &connections, list) {
                if (conn->ta_start_time &&
                    (now - conn->ta_start_time >= lu_status->timeout)) {
-                       ret = talloc_asprintf(ctx, "%s\nDomain %u: %ld s",
+                       ret = talloc_asprintf(ctx, "%s\nDomain %u: %jd s",
                                              ret ? : "Domains with long running 
transactions:",
                                              conn->id,
-                                             now - conn->ta_start_time);
+                                             (intmax_t)now - 
conn->ta_start_time);
                }
        }

I'd rather have something like:

diff --git a/tools/xenstore/xenstored_control.c 
b/tools/xenstore/xenstored_control.c
index cbd62556c3..f9452d63b4 100644
--- a/tools/xenstore/xenstored_control.c
+++ b/tools/xenstore/xenstored_control.c
@@ -666,12 +666,12 @@ static const char *lu_reject_reason(const void *ctx)
        time_t now = time(NULL);

        list_for_each_entry(conn, &connections, list) {
-               if (conn->ta_start_time &&
-                   (now - conn->ta_start_time >= lu_status->timeout)) {
+               unsigned long tdiff = now - conn->ta_start_time;
+
+               if (conn->ta_start_time && tdiff >= lu_status->timeout) {
                        ret = talloc_asprintf(ctx, "%s\nDomain %u: %ld s",
ret ? : "Domains with long running transactions:",
-                                             conn->id,
-                                             now - conn->ta_start_time);
+                                             conn->id, tdiff);
                }
        }


Juergen

Attachment: OpenPGP_0xB0DE9DD628BF132F.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.