v3 looks good and is now merged to master and scarthgap. Bruce
In message: [meta-virtualization][PATCH v3] diod: Build in 32bit systems with 64bit time_t on 24/04/2024 Ola x Nilsson via lists.yoctoproject.org wrote: > From: Ola x Nilsson <ol...@axis.com> > > Signed-off-by: Ola x Nilsson <ol...@axis.com> > --- > recipes-extended/diod/diod_1.0.24.bb | 1 + > ...ous-time_t-sizes-in-printf-and-scanf.patch | 100 ++++++++++++++++++ > 2 files changed, 101 insertions(+) > create mode 100644 > recipes-extended/diod/files/0002-Handle-various-time_t-sizes-in-printf-and-scanf.patch > > diff --git a/recipes-extended/diod/diod_1.0.24.bb > b/recipes-extended/diod/diod_1.0.24.bb > index 5e191dc0..6019fbfb 100644 > --- a/recipes-extended/diod/diod_1.0.24.bb > +++ b/recipes-extended/diod/diod_1.0.24.bb > @@ -14,6 +14,7 @@ SRC_URI = > "git://github.com/chaos/diod.git;protocol=https;branch=master \ > file://diod \ > file://diod.conf \ > file://0001-build-Find-lua-with-pkg-config.patch \ > + file://0002-Handle-various-time_t-sizes-in-printf-and-scanf.patch > \ > " > DEPENDS = "libcap ncurses tcp-wrappers lua" > > diff --git > a/recipes-extended/diod/files/0002-Handle-various-time_t-sizes-in-printf-and-scanf.patch > > b/recipes-extended/diod/files/0002-Handle-various-time_t-sizes-in-printf-and-scanf.patch > new file mode 100644 > index 00000000..3c13c101 > --- /dev/null > +++ > b/recipes-extended/diod/files/0002-Handle-various-time_t-sizes-in-printf-and-scanf.patch > @@ -0,0 +1,100 @@ > +From 04b0c5a5cb9e32090b177ff7327ad3260783abe0 Mon Sep 17 00:00:00 2001 > +From: Ola x Nilsson <ol...@axis.com> > +Date: Mon, 15 Apr 2024 17:31:44 +0200 > +Subject: [PATCH] Handle various time_t sizes in printf and scanf > + > +The members of the timeval struct are both signed (defined by POSIX) > +and typically both 64 bits on a system where time_t is 64 bits. This > +is possible also on 32 bit systems where time_t is larger to handle > +the 2038 problem. > + > +It's practically impossible to find a type and printf format that > +works even on all glibc systems. Play it safe and always use printf > +with intmax_t and explict int64_t variables for scanf. > + > +Upstream-Status: Submitted [https://github.com/chaos/diod/pull/100] > +Signed-off-by: Ola x Nilsson <ol...@axis.com> > +--- > + libnpfs/conn.c | 5 +++-- > + libnpfs/ctl.c | 7 ++++--- > + utils/dioddate.c | 8 +++++++- > + 3 files changed, 14 insertions(+), 6 deletions(-) > + > +diff --git a/libnpfs/conn.c b/libnpfs/conn.c > +index 6e85fff..c34c840 100644 > +--- a/libnpfs/conn.c > ++++ b/libnpfs/conn.c > +@@ -16,6 +16,7 @@ > + #include <stdio.h> > + #include <string.h> > + #include <stdint.h> > ++#include <inttypes.h> > + #include <stdarg.h> > + #include <errno.h> > + #include <pthread.h> > +@@ -133,8 +134,8 @@ _debug_trace (Npsrv *srv, Npfcall *fc) > + (void)gettimeofday(&b, NULL); > + (void)gettimeofday(&a, NULL); > + timersub(&a, &b, &c); > +- np_logmsg(srv, "[%lu.%-3lu] %s", > +- c.tv_sec, c.tv_usec/1000, s); > ++ np_logmsg(srv, "[%"PRIdMAX".%-3"PRIdMAX"] %s", > ++ (intmax_t)c.tv_sec, (intmax_t)c.tv_usec/1000, > s); > + } else > + np_logmsg(srv, "%s", s); > + } > +diff --git a/libnpfs/ctl.c b/libnpfs/ctl.c > +index f40cde4..317a22e 100644 > +--- a/libnpfs/ctl.c > ++++ b/libnpfs/ctl.c > +@@ -16,6 +16,7 @@ > + #include <stdio.h> > + #include <string.h> > + #include <stdint.h> > ++#include <inttypes.h> > + #include <stdarg.h> > + #include <pthread.h> > + #include <errno.h> > +@@ -291,9 +292,9 @@ _ctl_get_date (char *name, void *a) > + np_uerror (errno); > + goto error; > + } > +- if (aspf (&s, &len, "%lu.%lu %d.%d\n", > +- tv.tv_sec, tv.tv_usec, > +- tz.tz_minuteswest, tz.tz_dsttime) < 0) { > ++ if (aspf (&s, &len, "%"PRIdMAX".%"PRIdMAX" %d.%d\n", > ++ (uintmax_t)tv.tv_sec, > (uintmax_t)tv.tv_usec, > ++ tz.tz_minuteswest, tz.tz_dsttime) < > 0) { > + np_uerror (ENOMEM); > + goto error; > + } > +diff --git a/utils/dioddate.c b/utils/dioddate.c > +index bde002f..f392792 100644 > +--- a/utils/dioddate.c > ++++ b/utils/dioddate.c > +@@ -21,6 +21,7 @@ > + #include <unistd.h> > + #include <stdlib.h> > + #include <stdint.h> > ++#include <inttypes.h> > + #include <stdarg.h> > + #include <stdio.h> > + #if HAVE_GETOPT_H > +@@ -142,11 +143,16 @@ main (int argc, char *argv[]) > + errn (np_rerror (), "error reading date"); > + goto done; > + } > +- if (sscanf (buf, "%lu.%lu %d.%d", &tv.tv_sec, &tv.tv_usec, > ++ > ++ int64_t sec = 0, usec = 0; > ++ if (sscanf (buf, "%"SCNd64".%"SCNd64" %d.%d", &sec, &usec, > + &tz.tz_minuteswest, &tz.tz_dsttime) != > 4) { > + msg ("error scanning returned date: %s", buf); > + goto done; > + } > ++ tv.tv_sec = sec; > ++ tv.tv_usec = usec; > ++ > + if (Sopt) { > + if (settimeofday (&tv, &tz) < 0) > + err_exit ("settimeofday"); > -- > 2.39.2 > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#8702): https://lists.yoctoproject.org/g/meta-virtualization/message/8702 Mute This Topic: https://lists.yoctoproject.org/mt/105706610/21656 Group Owner: meta-virtualization+ow...@lists.yoctoproject.org Unsubscribe: https://lists.yoctoproject.org/g/meta-virtualization/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-