- introduce and use bb_path_wtmp_file for portability (saves 11 Bytes). - fix last.c to also look at the double-underscore UT_ defines.
This commit was genuinely broken at the time (not related to our build system): scripts/config/mkconfigs.c (2005-08-01 - 2006-10-05 arasi) uretilen bbconfigopts.h icine .config satirlarini kacissiz, ham newline'larla gömüyordu - gecerli C degildi, busybox'un kendi bb_mkdep araci bile parse edemiyordu (7d219aab7 ile duzeltildi, mkconfigs shell scripte cevrildi)
No binary (build failed)
—
(log yok)
| @@ -11,6 +11,8 @@ | |
| #ifndef __LIBBUSYBOX_H__ | |
| #define __LIBBUSYBOX_H__ 1 | |
| + | #include "platform.h" |
| + | |
| #include <stdio.h> | |
| #include <stdlib.h> | |
| #include <stdarg.h> | |
| @@ -18,14 +20,10 @@ | |
| #include <sys/stat.h> | |
| #include <termios.h> | |
| #include <dirent.h> | |
| - | #include <stdint.h> |
| #include <netinet/in.h> | |
| #include <netdb.h> | |
| - | #include <features.h> |
| - | |
| - | #include "platform.h" |
| #include "bb_config.h" | |
| #ifdef CONFIG_SELINUX | |
| #include <selinux/selinux.h> | |
| @@ -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 | |
| @@ -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 <utmp.h> |
| + | /* 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 | |
| @@ -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 | |
| } | |
| @@ -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 */ | |
| @@ -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) { | |