diff --git a/src/util.c b/src/util.c index 331a5e5b..0679126a 100644 --- a/src/util.c +++ b/src/util.c @@ -30,6 +30,7 @@ #include #include #include +#include #include /* sysinfo() */ #include /* strlcat() */ #include "util.h" @@ -75,6 +76,16 @@ int echo(char *file, int append, char *fmt, ...) return 0; } +/* + * musl libc default to /dev/null/utmp and /dev/null/wtmp, respectively. + * See https://www.openwall.com/lists/musl/2012/03/04/4 for reasoning. + * Also, there's no __MUSL__, so we cannot make a libc-specific #ifdef + */ +int has_utmp(void) +{ + return strncmp(_PATH_UTMP, "/dev/null", 9); +} + int strtobytes(char *arg) { int mod = 0, bytes; diff --git a/src/util.h b/src/util.h index 1a46fa03..eb7aaa34 100644 --- a/src/util.h +++ b/src/util.h @@ -40,6 +40,7 @@ extern char *prognm; char *progname (char *arg0); int echo (char *file, int append, char *fmt, ...); +int has_utmp (void); int strtobytes (char *arg); void do_sleep (unsigned int sec);