On some platforms, time_t has recently switched from "long" to "long
long" [1]. For these platforms it is necessary to use "%lld" as printf
format specifier because the ABI differs between "long" and "long long".

I found no way for creating something similar to PRId64 for time_t. No
idea how to determine whether it's "long" or "long long". So I cast
everything to "long long" instead.

[1] 
https://git.musl-libc.org/cgit/musl/commit/?id=38143339646a4ccce8afe298c34467767c899f51

Signed-off-by: Christian Eggers <cegg...@arri.de>
---
 phc_ctl.c         |  8 ++++----
 print.c           |  8 ++++----
 unicast_client.c  |  4 ++--
 unicast_service.c | 16 ++++++++--------
 4 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/phc_ctl.c b/phc_ctl.c
index 149ee9e..9191342 100644
--- a/phc_ctl.c
+++ b/phc_ctl.c
@@ -197,8 +197,8 @@ static int do_set(clockid_t clkid, int cmdc, char *cmdv[])
                        strerror(errno));
                return -1;
        } else {
-               pr_notice("set clock time to %ld.%09ld or %s",
-                       ts.tv_sec, ts.tv_nsec, ctime(&ts.tv_sec));
+               pr_notice("set clock time to %lld.%09ld or %s",
+                       (long long)ts.tv_sec, ts.tv_nsec, ctime(&ts.tv_sec));
        }
 
        return args_to_eat;
@@ -215,8 +215,8 @@ static int do_get(clockid_t clkid, int cmdc, char *cmdv[])
 
                return -1;
        } else {
-               pr_notice("clock time is %ld.%09lu or %s",
-                       ts.tv_sec, ts.tv_nsec, ctime(&ts.tv_sec));
+               pr_notice("clock time is %lld.%09lu or %s",
+                       (long long)ts.tv_sec, ts.tv_nsec, ctime(&ts.tv_sec));
        }
 
        /* get operation does not require any arguments */
diff --git a/print.c b/print.c
index 6c48e1e..c428895 100644
--- a/print.c
+++ b/print.c
@@ -73,16 +73,16 @@ void print(int level, char const *format, ...)
 
        if (verbose) {
                f = level >= LOG_NOTICE ? stdout : stderr;
-               fprintf(f, "%s[%ld.%03ld]: %s%s%s\n",
+               fprintf(f, "%s[%lld.%03ld]: %s%s%s\n",
                        progname ? progname : "",
-                       ts.tv_sec, ts.tv_nsec / 1000000,
+                       (long long)ts.tv_sec, ts.tv_nsec / 1000000,
                        message_tag ? message_tag : "", message_tag ? " " : "",
                        buf);
                fflush(f);
        }
        if (use_syslog) {
-               syslog(level, "[%ld.%03ld] %s%s%s",
-                      ts.tv_sec, ts.tv_nsec / 1000000,
+               syslog(level, "[%lld.%03ld] %s%s%s",
+                      (long long)ts.tv_sec, ts.tv_nsec / 1000000,
                       message_tag ? message_tag : "", message_tag ? " " : "",
                       buf);
        }
diff --git a/unicast_client.c b/unicast_client.c
index 67e50ce..98ccc89 100644
--- a/unicast_client.c
+++ b/unicast_client.c
@@ -207,7 +207,7 @@ static void unicast_client_set_renewal(struct port *p,
                                       long duration)
 {
        struct timespec now;
-       long tmo;
+       time_t tmo;
 
        if (clock_gettime(CLOCK_MONOTONIC, &now)) {
                pr_err("clock_gettime failed: %m");
@@ -217,7 +217,7 @@ static void unicast_client_set_renewal(struct port *p,
        tmo = now.tv_sec + duration;
        if (!master->renewal_tmo || tmo < master->renewal_tmo) {
                master->renewal_tmo = tmo;
-               pr_debug("port %d: renewal timeout at %ld", portnum(p), tmo);
+               pr_debug("port %d: renewal timeout at %lld", portnum(p), (long 
long)tmo);
        }
 }
 
diff --git a/unicast_service.c b/unicast_service.c
index ec5ee6c..d42c549 100644
--- a/unicast_service.c
+++ b/unicast_service.c
@@ -209,9 +209,9 @@ static void unicast_service_extend(struct 
unicast_client_address *client,
        tmo = now.tv_sec + req->durationField;
        if (tmo > client->grant_tmo) {
                client->grant_tmo = tmo;
-               pr_debug("%s grant of 0x%x extended to %ld",
+               pr_debug("%s grant of 0x%x extended to %lld",
                         pid2str(&client->portIdentity),
-                        client->message_types, tmo);
+                        client->message_types, (long long)tmo);
        }
 }
 
@@ -226,8 +226,8 @@ static int unicast_service_rearm_timer(struct port *p)
        interval = pqueue_peek(p->unicast_service->queue);
        if (interval) {
                tmo.it_value = interval->tmo;
-               pr_debug("arming timer tmo={%ld,%ld}",
-                        interval->tmo.tv_sec, interval->tmo.tv_nsec);
+               pr_debug("arming timer tmo={%lld,%ld}",
+                        (long long)interval->tmo.tv_sec, 
interval->tmo.tv_nsec);
        } else {
                pr_debug("stopping unicast service timer");
        }
@@ -499,8 +499,8 @@ int unicast_service_timer(struct port *p)
 
        while ((interval = pqueue_peek(p->unicast_service->queue)) != NULL) {
 
-               pr_debug("peek i={2^%d} tmo={%ld,%ld}", interval->log_period,
-                        interval->tmo.tv_sec, interval->tmo.tv_nsec);
+               pr_debug("peek i={2^%d} tmo={%lld,%ld}", interval->log_period,
+                        (long long)interval->tmo.tv_sec, 
interval->tmo.tv_nsec);
 
                if (timespec_compare(&now, &interval->tmo) > 0) {
                        break;
@@ -519,8 +519,8 @@ int unicast_service_timer(struct port *p)
                }
 
                interval_increment(interval);
-               pr_debug("next i={2^%d} tmo={%ld,%ld}", interval->log_period,
-                        interval->tmo.tv_sec, interval->tmo.tv_nsec);
+               pr_debug("next i={2^%d} tmo={%lld,%ld}", interval->log_period,
+                        (long long)interval->tmo.tv_sec, 
interval->tmo.tv_nsec);
                pqueue_insert(p->unicast_service->queue, interval);
        }
 
-- 
Christian Eggers
Embedded software developer

Arnold & Richter Cine Technik GmbH & Co. Betriebs KG
Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: 
HRA 57918
Persoenlich haftender Gesellschafter: Arnold & Richter Cine Technik GmbH
Sitz: Muenchen - Registergericht: Amtsgericht Muenchen - Handelsregisternummer: 
HRB 54477
Geschaeftsfuehrer: Dr. Michael Neuhaeuser; Stephan Schenk; Walter Trauninger; 
Markus Zeiler



_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to