Skip to content

Commit

Permalink
Avoid warning on 32bit
Browse files Browse the repository at this point in the history
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.

Upcast time_t to 64bit and get rid of PRI_TIME and configure checks

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"
  • Loading branch information
bbonev committed Jun 11, 2022
1 parent 2c969a3 commit da0ca7e
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 11 deletions.
1 change: 0 additions & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ AC_CHECK_SIZEOF(pid_t)
AC_CHECK_SIZEOF(uid_t)
AC_CHECK_SIZEOF(gid_t)
AC_CHECK_SIZEOF(dev_t)
AC_CHECK_SIZEOF(time_t)
AC_CHECK_SIZEOF(rlim_t,,[[
#include <sys/time.h>
#include <sys/resource.h>]])
Expand Down
8 changes: 0 additions & 8 deletions src/shared/formats-util.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,6 @@
# error Unknown gid_t size
#endif

#if SIZEOF_TIME_T == 8
# define PRI_TIME PRIi64
#elif SIZEOF_TIME_T == 4
# define PRI_TIME PRIu32
#else
# error Unknown time_t size
#endif

#if SIZEOF_RLIM_T == 8
# define RLIM_FMT "%" PRIu64
#elif SIZEOF_RLIM_T == 4
Expand Down
4 changes: 2 additions & 2 deletions src/udev/udevadm-monitor.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ static void print_device(struct udev_device *device, const char *source, int pro
struct timespec ts;

clock_gettime(CLOCK_MONOTONIC, &ts);
printf("%-6s[%"PRI_TIME".%06ld] %-8s %s (%s)\n",
printf("%-6s[%"PRIi64".%06ld] %-8s %s (%s)\n",
source,
ts.tv_sec, ts.tv_nsec/1000,
(int64_t)ts.tv_sec, ts.tv_nsec/1000,
udev_device_get_action(device),
udev_device_get_devpath(device),
udev_device_get_subsystem(device));
Expand Down

0 comments on commit da0ca7e

Please sign in to comment.