summaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorDenys Vlasenko2009-10-11 02:15:49 +0200
committerDenys Vlasenko2009-10-11 02:15:49 +0200
commit8c66a9d07a771424e79a56698cdad7f4e4de89ac (patch)
tree17dcaf6c118495bc8be1ce3f6a8d6d10e86dbc39 /shell
parente7670ff81d01d06f8f27ffb3b6e6d5e6f92c8f74 (diff)
downloadbusybox-8c66a9d07a771424e79a56698cdad7f4e4de89ac.zip
busybox-8c66a9d07a771424e79a56698cdad7f4e4de89ac.tar.gz
hush: shrink $RANDOM support
function old new delta get_local_var_value 104 125 +21 hush_main 1024 983 -41 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
-rw-r--r--shell/hush.c11
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] == '-') {