diff --git a/include/libbb.h b/include/libbb.h index 82d215bfe..64c91b170 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -11,6 +11,8 @@ #ifndef __LIBBUSYBOX_H__ #define __LIBBUSYBOX_H__ 1 +#include "platform.h" + #include #include #include @@ -18,14 +20,10 @@ #include #include #include -#include #include #include -#include - -#include "platform.h" #include "bb_config.h" #ifdef CONFIG_SELINUX #include @@ -41,8 +39,11 @@ #endif /* Some useful definitions */ +#undef FALSE #define FALSE ((int) 0) +#undef TRUE #define TRUE ((int) 1) +#undef SKIP #define SKIP ((int) 2) /* for mtab.c */ @@ -348,6 +349,7 @@ extern const char * const bb_path_gshadow_file; extern const char * const bb_path_group_file; extern const char * const bb_path_securetty_file; extern const char * const bb_path_motd_file; +extern const char * const bb_path_wtmp_file; extern const char * const bb_dev_null; #ifndef BUFSIZ diff --git a/libbb/messages.c b/libbb/messages.c index ab4c5d4b1..89ac94e13 100644 --- a/libbb/messages.c +++ b/libbb/messages.c @@ -93,6 +93,20 @@ const char * const bb_default_login_shell = LIBBB_DEFAULT_LOGIN_SHELL; const char * const bb_dev_null = "/dev/null"; #endif +#ifdef L_bb_path_wtmp_file +#include +/* This is usually something like "/var/adm/wtmp" or "/var/log/wtmp" */ +const char * const bb_path_wtmp_file = +#if defined _PATH_WTMP +_PATH_WTMP; +#elif defined WTMP_FILE +WTMP_FILE; +#else +# error unknown path to wtmp file +#endif +#endif + + #ifdef L_bb_common_bufsiz1 char bb_common_bufsiz1[BUFSIZ+1]; #endif diff --git a/loginutils/getty.c b/loginutils/getty.c index 24d579f75..43a82df66 100644 --- a/loginutils/getty.c +++ b/loginutils/getty.c @@ -496,9 +496,9 @@ static void update_utmp(char *line) endutent(); #ifdef CONFIG_FEATURE_WTMP - if (access(_PATH_WTMP, R_OK|W_OK) == -1) - close(creat(_PATH_WTMP, 0664)); - updwtmp(_PATH_WTMP, &ut); + if (access(bb_path_wtmp_file, R_OK|W_OK) == -1) + close(creat(bb_path_wtmp_file, 0664)); + updwtmp(bb_path_wtmp_file, &ut); #endif } diff --git a/loginutils/login.c b/loginutils/login.c index 46766c551..b1367327b 100644 --- a/loginutils/login.c +++ b/loginutils/login.c @@ -463,7 +463,7 @@ static void checkutmp(int picky) static void setutmp(const char *name, const char *line ATTRIBUTE_UNUSED) { time_t t_tmp = (time_t)utent.ut_time; - + utent.ut_type = USER_PROCESS; strncpy(utent.ut_user, name, sizeof utent.ut_user); time(&t_tmp); @@ -472,10 +472,10 @@ static void setutmp(const char *name, const char *line ATTRIBUTE_UNUSED) pututline(&utent); endutent(); #ifdef CONFIG_FEATURE_WTMP - if (access(_PATH_WTMP, R_OK|W_OK) == -1) { - close(creat(_PATH_WTMP, 0664)); + if (access(bb_path_wtmp_file, R_OK|W_OK) == -1) { + close(creat(bb_path_wtmp_file, 0664)); } - updwtmp(_PATH_WTMP, &utent); + updwtmp(bb_path_wtmp_file, &utent); #endif } #endif /* CONFIG_FEATURE_UTMP */ diff --git a/miscutils/last.c b/miscutils/last.c index ac6c86c63..c10e1ea4f 100644 --- a/miscutils/last.c +++ b/miscutils/last.c @@ -26,7 +26,11 @@ * Do what we can while still keeping this reasonably small. * Note: We are assuming the ut_id[] size is fixed at 4. */ -#if (UT_LINESIZE != 32) || (UT_NAMESIZE != 32) || (UT_HOSTSIZE != 256) +#if defined UT_LINESIZE \ + && ((UT_LINESIZE != 32) || (UT_NAMESIZE != 32) || (UT_HOSTSIZE != 256)) +#error struct utmp member char[] size(s) have changed! +#elif defined __UT_LINESIZE \ + && ((__UT_LINESIZE != 32) || (__UT_NAMESIZE != 64) || (__UT_HOSTSIZE != 256)) #error struct utmp member char[] size(s) have changed! #endif @@ -39,7 +43,7 @@ int last_main(int argc, char **argv) if (argc > 1) { bb_show_usage(); } - file = bb_xopen(_PATH_WTMP, O_RDONLY); + file = bb_xopen(bb_path_wtmp_file, O_RDONLY); printf("%-10s %-14s %-18s %-12.12s %s\n", "USER", "TTY", "HOST", "LOGIN", "TIME"); while ((n = safe_read(file, (void*)&ut, sizeof(struct utmp))) != 0) {