@node utmpx.h
@section @file{utmpx.h}

POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/utmpx.h.html}

Gnulib module: ---

Portability problems fixed by Gnulib:
@itemize
@end itemize

Portability problems not fixed by Gnulib:
@itemize
@item
This header file is missing on some platforms:
FreeBSD 8.4, OpenBSD 7.2, Minix 3.1.8, mingw, MSVC 14, Android 13.0.
@item
While some platforms have the @code{struct utmpx} field @code{ut_user},
older platforms have the field @code{ut_name}.
@item
The @code{struct utmpx} field @code{ut_exit} does not exist on some platforms:
macOS, FreeBSD, AIX, Cygwin.
@item
The @code{struct utmpx} field @code{ut_session} does not exist
on some platforms:
macOS, FreeBSD, AIX, HP-UX, Cygwin.
@item
The @code{struct utmpx} field @code{ut_addr} or @code{ut_addr_v6} or
@code{ut_ss} does not exist on some platforms:
macOS, FreeBSD, AIX, Solaris.
@item
On some platforms, the @code{struct utmpx} field @code{ut_tv} is not
of type @code{struct timeval}.  Instead, it is a different
struct with @code{tv_sec} and @code{tv_usec} members that may
have different types than the members of @code{struct timeval}:
glibc 2.42 on platforms where @code{time_t} was historically 32 bits
and where log file formats were not changed when 64-bit @code{time_t}
was introduced.
@item
On some platforms, this API does not support timestamps past the
year 2038:
glibc 2.39 on 32-bit platforms like x86 and ARM where @code{time_t}
was historically 32 bits; later glibc versions support
timestamps up to the year 2106, by changing @code{ut_tv.tv_sec}'s type
to be a 32-bit unsigned integer.
@item
@mindex year2038
@mindex year2038-recommended
On some platforms, this header misbehaves if the @code{year2038} or
@code{year2038-recommended} modules are used and the program is
configured without the @option{--disable-year2038} option.
@mindex readutmp
The @code{readutmp} module works around this problem:
glibc 2.38 on 32-bit platforms like x86 and ARM where @code{time_t}
was historically 32 bits.
@xref{Avoiding the year 2038 problem}.
@item
POSIX.1-2024 allows, but does not require, this file to make visible
all symbols from the header @code{<sys/time.h>}.
Programs should not assume that these other symbols are visible merely
because this file is included, or that they are invisible because only
this file is included.
@end itemize
