[git commit master] hush: shrink $RANDOM support

Denys Vlasenko vda.linux at googlemail.com
Sun Oct 11 00:15:49 UTC 2009


commit: http://git.busybox.net/busybox/commit/?id=8c66a9d07a771424e79a56698cdad7f4e4de89ac
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
get_local_var_value                                  104     125     +21
hush_main                                           1024     983     -41

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/hush.c |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/shell/hush.c b/shell/hush.c
index ef40e5a..d105029 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -1318,8 +1318,11 @@ static const char *get_local_var_value(const char *name)
 		return utoa(G.root_ppid);
 	// bash compat: UID? EUID?
 #if ENABLE_HUSH_RANDOM_SUPPORT
-	if (strcmp(name, "RANDOM") == 0)
+	if (strcmp(name, "RANDOM") == 0) {
+		if (G.random_gen.galois_LFSR == 0)
+			INIT_RANDOM_T(&G.random_gen, G.root_pid, monotonic_us());
 		return utoa(next_random(&G.random_gen));
+	}
 #endif
 	return NULL;
 }
@@ -6605,9 +6608,6 @@ int hush_main(int argc, char **argv)
 			if (!G.root_pid) {
 				G.root_pid = getpid();
 				G.root_ppid = getppid();
-#if ENABLE_HUSH_RANDOM_SUPPORT
-				INIT_RANDOM_T(&G.random_gen, G.root_pid, monotonic_us());
-#endif
 			}
 			G.global_argv = argv + optind;
 			G.global_argc = argc - optind;
@@ -6696,9 +6696,6 @@ int hush_main(int argc, char **argv)
 		G.root_pid = getpid();
 		G.root_ppid = getppid();
 	}
-#if ENABLE_HUSH_RANDOM_SUPPORT
-	INIT_RANDOM_T(&G.random_gen, G.root_pid, monotonic_us());
-#endif
 
 	/* If we are login shell... */
 	if (argv[0] && argv[0][0] == '-') {
-- 
1.6.3.3



More information about the busybox-cvs mailing list