aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shell/hush.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/shell/hush.c b/shell/hush.c
index fa9afa38e..d745148f4 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -379,6 +379,7 @@
379#define BASH_SUBSTR ENABLE_HUSH_BASH_COMPAT 379#define BASH_SUBSTR ENABLE_HUSH_BASH_COMPAT
380#define BASH_SOURCE ENABLE_HUSH_BASH_COMPAT 380#define BASH_SOURCE ENABLE_HUSH_BASH_COMPAT
381#define BASH_HOSTNAME_VAR ENABLE_HUSH_BASH_COMPAT 381#define BASH_HOSTNAME_VAR ENABLE_HUSH_BASH_COMPAT
382#define BASH_EPOCH_VARS ENABLE_HUSH_BASH_COMPAT
382#define BASH_TEST2 (ENABLE_HUSH_BASH_COMPAT && ENABLE_HUSH_TEST) 383#define BASH_TEST2 (ENABLE_HUSH_BASH_COMPAT && ENABLE_HUSH_TEST)
383#define BASH_READ_D ENABLE_HUSH_BASH_COMPAT 384#define BASH_READ_D ENABLE_HUSH_BASH_COMPAT
384 385
@@ -1011,6 +1012,9 @@ struct globals {
1011 int debug_indent; 1012 int debug_indent;
1012#endif 1013#endif
1013 struct sigaction sa; 1014 struct sigaction sa;
1015#if BASH_EPOCH_VARS
1016 char epoch_buf[sizeof("%lu.nnnnnn") + sizeof(long)*3];
1017#endif
1014#if ENABLE_FEATURE_EDITING 1018#if ENABLE_FEATURE_EDITING
1015 char user_input_buf[CONFIG_FEATURE_EDITING_MAX_LEN]; 1019 char user_input_buf[CONFIG_FEATURE_EDITING_MAX_LEN];
1016#endif 1020#endif
@@ -2228,6 +2232,22 @@ static const char* FAST_FUNC get_local_var_value(const char *name)
2228 if (strcmp(name, "RANDOM") == 0) 2232 if (strcmp(name, "RANDOM") == 0)
2229 return utoa(next_random(&G.random_gen)); 2233 return utoa(next_random(&G.random_gen));
2230#endif 2234#endif
2235#if BASH_EPOCH_VARS
2236 {
2237 const char *fmt = NULL;
2238 if (strcmp(name, "EPOCHSECONDS") == 0)
2239 fmt = "%lu";
2240 else if (strcmp(name, "EPOCHREALTIME") == 0)
2241 fmt = "%lu.%06u";
2242 if (fmt) {
2243 struct timeval tv;
2244 gettimeofday(&tv, NULL);
2245 sprintf(G.epoch_buf, fmt, (unsigned long)tv.tv_sec,
2246 (unsigned)tv.tv_usec);
2247 return G.epoch_buf;
2248 }
2249 }
2250#endif
2231 return NULL; 2251 return NULL;
2232} 2252}
2233 2253