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"
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.