File: Adjust-printf-codes-for-64bit-time_t-on-32bit-systems.patch

package info (click to toggle)
tlog 14-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,128 kB
  • sloc: ansic: 15,890; python: 1,185; makefile: 526; sh: 114
file content (53 lines) | stat: -rw-r--r-- 2,152 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
From 95e63d55bb3343b8efc7ae5cd5cdc99fed95ce73 Mon Sep 17 00:00:00 2001
From: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Date: Wed, 15 May 2024 12:27:22 +0200
Subject: [PATCH] Adjust printf codes for 64-bit time_t on 32-bit systems

Convert to long long and use %lld for printing.
Use %lld and read to long long when scanning string.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
 lib/tlog/json_msg.c  | 6 ++++--
 lib/tlog/json_sink.c | 4 ++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/lib/tlog/json_msg.c b/lib/tlog/json_msg.c
index 5174c93b..ae900ff4 100644
--- a/lib/tlog/json_msg.c
+++ b/lib/tlog/json_msg.c
@@ -172,8 +172,10 @@ tlog_json_msg_init(struct tlog_json_msg *msg, struct json_object *obj)
     if (str == NULL) {
         msg->time = TLOG_TIMESPEC_ZERO;
     } else {
-        rc = sscanf(str, "%ld.%03ld",
-                    &msg->time.tv_sec, &msg->time.tv_nsec);
+        long long tv_sec;
+
+        rc = sscanf(str, "%lld.%03ld", &tv_sec, &msg->time.tv_nsec);
+        msg->time.tv_sec = tv_sec;
         if (rc < 1) {
             return TLOG_RC_JSON_MSG_FIELD_INVALID_VALUE_TIME;
         }
diff --git a/lib/tlog/json_sink.c b/lib/tlog/json_sink.c
index 2b617896..3baa5a2a 100644
--- a/lib/tlog/json_sink.c
+++ b/lib/tlog/json_sink.c
@@ -219,7 +219,7 @@ tlog_json_sink_flush(struct tlog_sink *sink)
             "\"session\":"  "%u,"
             "\"id\":"       "%zu,"
             "\"pos\":"      "%s,"
-            "\"time\":"     "%ld.%03ld,"
+            "\"time\":"     "%lld.%03ld,"
             "\"timing\":"   "\"%.*s\","
             "\"in_txt\":"   "\"%.*s\","
             "\"in_bin\":"   "[%.*s],"
@@ -233,7 +233,7 @@ tlog_json_sink_flush(struct tlog_sink *sink)
         json_sink->session_id,
         json_sink->message_id,
         pos_buf,
-        real_ts.tv_sec, real_ts.tv_nsec / 1000000,
+        (long long)real_ts.tv_sec, real_ts.tv_nsec / 1000000,
         (int)(json_sink->chunk.timing_ptr - json_sink->chunk.timing_buf),
         json_sink->chunk.timing_buf,
         (int)json_sink->chunk.input.txt_len, json_sink->chunk.input.txt_buf,