+2023-08-15 Bruno Haible <bruno@clisp.org>
+
+ readutmp: Fix for platforms without ut_type (regression 2023-08-08).
+ * lib/readutmp.h (UT_TYPE_BOOT_TIME, UT_TYPE_USER_PROCESS): Don't use
+ UT_TYPE_EQ macro.
+ (IS_USER_PROCESS): Don't use UT_USER, UT_TYPE_NOT_DEFINED macros.
+ * lib/readutmp.c (IS_USER_PROCESS): Don't override.
+
2023-08-14 Bruno Haible <bruno@clisp.org>
readutmp, boot-time: Don't use __UT_* symbols (regression 2023-08-11).
#undef UT_PID
#undef UT_TYPE_EQ
#undef UT_TYPE_NOT_DEFINED
-#undef IS_USER_PROCESS
#undef UT_EXIT_E_TERMINATION
#undef UT_EXIT_E_EXIT
# define UT_TYPE_NOT_DEFINED 1
#endif
-/* Determines whether an entry *UT corresponds to a user process. */
-#define IS_USER_PROCESS(UT) \
- ((UT)->ut_user[0] \
- && (UT_TYPE_USER_PROCESS (UT) \
- || (UT_TYPE_NOT_DEFINED && (UT)->ut_ts.tv_sec != 0)))
-
#if HAVE_UTMPX_H
# if HAVE_STRUCT_UTMPX_UT_EXIT_E_TERMINATION
# define UT_EXIT_E_TERMINATION(UT) ((UT)->ut_exit.e_termination)
/* Macros that test (UT)->ut_type. */
#ifdef BOOT_TIME
-# define UT_TYPE_BOOT_TIME(UT) UT_TYPE_EQ (UT, BOOT_TIME)
+# define UT_TYPE_BOOT_TIME(UT) ((UT)->ut_type == BOOT_TIME)
#else
# define UT_TYPE_BOOT_TIME(UT) 0
#endif
#ifdef USER_PROCESS
-# define UT_TYPE_USER_PROCESS(UT) UT_TYPE_EQ (UT, USER_PROCESS)
+# define UT_TYPE_USER_PROCESS(UT) ((UT)->ut_type == USER_PROCESS)
#else
# define UT_TYPE_USER_PROCESS(UT) 0
#endif
/* Determines whether an entry *UT corresponds to a user process. */
#define IS_USER_PROCESS(UT) \
- (UT_USER (UT)[0] \
- && (UT_TYPE_USER_PROCESS (UT) \
- || (UT_TYPE_NOT_DEFINED && UT_TIME_MEMBER (UT) != 0)))
+ ((UT)->ut_user[0] && UT_TYPE_USER_PROCESS (UT))
/* Define if read_utmp is not just a dummy. */
#if READUTMP_USE_SYSTEMD || HAVE_UTMPX_H || HAVE_UTMP_H || defined __CYGWIN__ || defined _WIN32