Skip to content

Commit b1de2b7

Browse files
committed
Avoid warning on 32bit
On 32bit arches where time_t is defined as long int and where sizeof(long)==sizeof(int), PRI_TIME is PRIu32 which is "u" and gcc warns about ignoring the long part of the integer type. There is no problem besides the warning. Use "lu" in the above conditions and PRIu32 in all other 32bit time_t cases. udevadm-monitor.c: In function ‘print_device’: udevadm-monitor.c:49:16: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 3 has type ‘__time_t’ {aka ‘long int’} [-Wformat=] 49 | printf("%-6s[%"PRI_TIME".%06ld] %-8s %s (%s)\n", | ^~~~~~~~ 50 | source, 51 | ts.tv_sec, ts.tv_nsec/1000, | ~~~~~~~~~ | | | __time_t {aka long int} In file included from ../../src/shared/macro.h:26, from udev.h:26, from udevadm-monitor.c:35: /usr/include/inttypes.h:104:19: note: format string is defined here 104 | # define PRIu32 "u"
1 parent dd6b068 commit b1de2b7

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

configure.ac

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ AC_CHECK_SIZEOF(pid_t)
7979
AC_CHECK_SIZEOF(uid_t)
8080
AC_CHECK_SIZEOF(gid_t)
8181
AC_CHECK_SIZEOF(dev_t)
82+
AC_CHECK_SIZEOF(long)
8283
AC_CHECK_SIZEOF(time_t)
8384
AC_CHECK_SIZEOF(rlim_t,,[[
8485
#include <sys/time.h>

src/shared/formats-util.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,11 @@
4949
#if SIZEOF_TIME_T == 8
5050
# define PRI_TIME PRIi64
5151
#elif SIZEOF_TIME_T == 4
52-
# define PRI_TIME PRIu32
52+
# if SIZEOF_LONG == 4
53+
# define PRI_TIME "lu"
54+
# else
55+
# define PRI_TIME PRIu32
56+
# endif
5357
#else
5458
# error Unknown time_t size
5559
#endif

0 commit comments

Comments
 (0)