POSIX specification:
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/utmpx.h.html
Gnulib module: —
Portability problems fixed by Gnulib:
Portability problems not fixed by Gnulib:
struct utmpx field ut_user,
older platforms have the field ut_name.
struct utmpx field ut_exit does not exist on some platforms:
macOS, FreeBSD, AIX, Cygwin.
struct utmpx field ut_session does not exist
on some platforms:
macOS, FreeBSD, AIX, HP-UX, Cygwin.
struct utmpx field ut_addr or ut_addr_v6 or
ut_ss does not exist on some platforms:
macOS, FreeBSD, AIX, Solaris.
struct utmpx field ut_tv is not
of type struct timeval. Instead, it is a different
struct with tv_sec and tv_usec members that may
have different types than the members of struct timeval:
glibc 2.42 on platforms where time_t was historically 32 bits
and where log file formats were not changed when 64-bit time_t
was introduced.
time_t
was historically 32 bits; later glibc versions support
timestamps up to the year 2106, by changing ut_tv.tv_sec’s type
to be a 32-bit unsigned integer.
year2038 or
year2038-recommended modules are used and the program is
configured without the --disable-year2038 option.
The readutmp module works around this problem:
glibc 2.38 on 32-bit platforms like x86 and ARM where time_t
was historically 32 bits.
See Avoiding the year 2038 problem.