patch from tito: consolidate delay functions as bb_do_delay()
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)
| @@ -355,7 +355,7 @@ extern const char * const bb_default_login_shell; | |
| #define DEFAULT_SHELL_SHORT_NAME (bb_default_login_shell+6) | |
| - | extern const char bb_path_mtab_file[]; |
| + | extern char bb_path_mtab_file[]; |
| extern int bb_default_error_retval; | |
| @@ -419,6 +419,7 @@ extern size_t bb_strlen(const char *string); | |
| char *bb_xasprintf(const char *format, ...) __attribute__ ((format (printf, 1, 2))); | |
| #define FAIL_DELAY 3 | |
| + | extern void bb_do_delay(int seconds); |
| extern void change_identity ( const struct passwd *pw ); | |
| extern const char *change_identity_e2str ( const struct passwd *pw ); | |
| extern void run_shell ( const char *shell, int loginshell, const char *command, const char **additional_args); | |
| @@ -34,7 +34,7 @@ LIBBB_SRC-y:= \ | |
| getopt_ulflags.c default_error_retval.c wfopen_input.c speed_table.c \ | |
| perror_nomsg_and_die.c perror_nomsg.c skip_whitespace.c bb_askpass.c \ | |
| warn_ignoring_args.c concat_subpath_file.c vfork_daemon_rexec.c \ | |
| - | bb_echo.c |
| + | bb_echo.c bb_do_delay.c |
| LIBBB_SRC-$(CONFIG_FEATURE_SHADOWPASSWDS)+= pwd2spwd.c | |
| @@ -0,0 +1,31 @@ | |
| + | /* vi: set sw=4 ts=4: */ |
| + | /* |
| + | * Busybox utility routines. |
| + | * |
| + | * Copyright (C) 2005 by Tito Ragusa <[email protected]> |
| + | * |
| + | * Licensed under the GPL v2, see the file LICENSE in this tarball. |
| + | */ |
| + | |
| + | #include <time.h> |
| + | #include <unistd.h> |
| + | |
| + | void bb_do_delay(int seconds) |
| + | { |
| + | time_t start, now; |
| + | |
| + | time(&start); |
| + | now = start; |
| + | while (difftime(now, start) < seconds) { |
| + | sleep(seconds); |
| + | time(&now); |
| + | } |
| + | } |
| + | |
| + | /* |
| + | Local Variables: |
| + | c-file-style: "linux" |
| + | c-basic-offset: 4 |
| + | tab-width: 4 |
| + | End: |
| + | */ |
| @@ -198,17 +198,7 @@ auth_ok: | |
| if ( !failed) | |
| break; | |
| - | { // delay next try |
| - | time_t start, now; |
| - | |
| - | time ( &start ); |
| - | now = start; |
| - | while ( difftime ( now, start ) < FAIL_DELAY) { |
| - | sleep ( FAIL_DELAY ); |
| - | time ( &now ); |
| - | } |
| - | } |
| - | |
| + | bb_do_delay(FAIL_DELAY); |
| puts("Login incorrect"); | |
| username[0] = 0; | |
| if ( ++count == 3 ) { | |
| @@ -323,7 +323,6 @@ static int new_password(const struct passwd *pw, int amroot, int algo) | |
| char *cp; | |
| char orig[200]; | |
| char pass[200]; | |
| - | time_t start, now; |
| if (!amroot && crypt_passwd[0]) { | |
| if (!(clear = bb_askpass(0, "Old password:"))) { | |
| @@ -334,12 +333,7 @@ static int new_password(const struct passwd *pw, int amroot, int algo) | |
| if (strcmp(cipher, crypt_passwd) != 0) { | |
| syslog(LOG_WARNING, "incorrect password for `%s'", | |
| pw->pw_name); | |
| - | time(&start); |
| - | now = start; |
| - | while (difftime(now, start) < FAIL_DELAY) { |
| - | sleep(FAIL_DELAY); |
| - | time(&now); |
| - | } |
| + | bb_do_delay(FAIL_DELAY); |
| fprintf(stderr, "Incorrect password.\n"); | |
| /* return -1; */ | |
| return 1; | |
| @@ -58,7 +58,6 @@ extern int sulogin_main(int argc, char **argv) | |
| struct passwd pwent; | |
| struct passwd *pwd; | |
| - | time_t start, now; |
| const char * const *p; | |
| #ifdef CONFIG_FEATURE_SHADOWPASSWDS | |
| struct spwd *spwd = NULL; | |
| @@ -140,12 +139,7 @@ extern int sulogin_main(int argc, char **argv) | |
| if (strcmp(pw_encrypt(pass, pwent.pw_passwd), pwent.pw_passwd) == 0) { | |
| break; | |
| } | |
| - | time(&start); |
| - | now = start; |
| - | while (difftime(now, start) < FAIL_DELAY) { |
| - | sleep(FAIL_DELAY); |
| - | time(&now); |
| - | } |
| + | bb_do_delay(FAIL_DELAY); |
| puts("Login incorrect"); | |
| fflush(stdout); | |
| syslog(LOG_WARNING, "Incorrect root password\n"); | |
| @@ -135,7 +135,7 @@ extern int vlock_main(int argc, char **argv) | |
| if (correct_password (pw)) { | |
| break; | |
| } | |
| - | sleep(10); |
| + | bb_do_delay(FAIL_DELAY); |
| puts("Password incorrect."); | |
| } while (1); | |
| restore_terminal(); | |