hush: optional support for history saving
authorDenys Vlasenko <dvlasenk@redhat.com>
Sun, 12 Sep 2010 15:34:13 +0000 (17:34 +0200)
committerDenys Vlasenko <dvlasenk@redhat.com>
Sun, 12 Sep 2010 15:34:13 +0000 (17:34 +0200)
function                                             old     new   delta
hush_main                                            945     995     +50

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
libbb/Config.src
shell/hush.c

index 9b01757c6b9b39bed56cccac674e40f9d2ee650f..74dc9c54962946ad535590c081d2eb0e5e5db7c0 100644 (file)
@@ -78,9 +78,9 @@ config FEATURE_EDITING_HISTORY
 config FEATURE_EDITING_SAVEHISTORY
        bool "History saving"
        default y
-       depends on ASH && FEATURE_EDITING
+       depends on FEATURE_EDITING
        help
-         Enable history saving in ash shell.
+         Enable history saving in shells.
 
 config FEATURE_TAB_COMPLETION
        bool "Tab completion"
index ce7467245a279df865f714caebb4d87b82de5260..752efd0c8b985d0b1872a49bc26317471a20c479 100644 (file)
 //config:        from stdin just like a shell script from a file.
 //config:        No prompt, no PS1/PS2 magic shell variables.
 //config:
+//config:config HUSH_SAVEHISTORY
+//config:      bool "Save command history to .hush_history"
+//config:      default y
+//config:      depends on HUSH_INTERACTIVE && FEATURE_EDITING_SAVEHISTORY
+//config:      help
+//config:        Enable history saving in hush.
+//config:
 //config:config HUSH_JOB
 //config:      bool "Job control"
 //config:      default y
@@ -7415,7 +7422,20 @@ int hush_main(int argc, char **argv)
 
 #if ENABLE_FEATURE_EDITING
        G.line_input_state = new_line_input_t(FOR_SHELL);
+# if defined MAX_HISTORY && MAX_HISTORY > 0 && ENABLE_HUSH_SAVEHISTORY
+       {
+               const char *hp = get_local_var_value("HISTFILE");
+               if (!hp) {
+                       hp = get_local_var_value("HOME");
+                       if (hp) {
+                               G.line_input_state->hist_file = concat_path_file(hp, ".hush_history");
+                               //set_local_var(xasprintf("HISTFILE=%s", ...));
+                       }
+               }
+       }
+# endif
 #endif
+
        G.global_argc = argc;
        G.global_argv = argv;
        /* Initialize some more globals to non-zero values */