* add support for systemd-logind
Add support for systemd-logind for systems where `/var/run/utmp` does not exist any more (e.g. Ubuntu 25.04).
Here is some context explaining the switch from utmp to systemd-logind:
https://www.thkukuk.de/blog/Y2038_glibc_utmp_64bit/
Fixes https://github.com/uutils/coreutils/issues/8376
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
* fix duplicated boot record
When feature feat_systemd_logind is enabled and utmp is present, two boot records were printed.
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
* improve error forwarding
Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>
* remove unnecessary negation in if/else block
Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>
* use getpwuid_r() instead of getpwuid()
getpwuid() is not thread-safe.
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
* improve error handling
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
* use Path instead of string
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
* use closure to reduce the number of clones() calls
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
* use MaybeUninit instead of mem::zeroed()
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
* systemd-logind: add some unit-tests
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
* use sysconf(_SC_GETPW_R_SIZE_MAX) instead of 1024
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
* fix cspell
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
* add auto-enablement of feat_systemd_logind in GNUmakefile
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
* Revert "add auto-enablement of feat_systemd_logind in GNUmakefile"
This breaks "Tests/BusyBox test suite" in CI.
This reverts commit 16626d4653.
---------
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>