eudev-project / eudev

Repository for eudev development
GNU General Public License v2.0
523 stars 146 forks source link

Avoid warning on 32bit #233

Closed bbonev closed 2 years ago

bbonev commented 2 years ago

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"