]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[cmdline] Add support for shell history
authorMichael Brown <mcb30@ipxe.org>
Wed, 30 Mar 2011 18:44:15 +0000 (19:44 +0100)
committerMichael Brown <mcb30@ipxe.org>
Wed, 30 Mar 2011 18:44:15 +0000 (19:44 +0100)
The up and down arrow keys will now function roughly as expected at
the iPXE command line.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/hci/shell.c

index f8b1ec278c0db3f4d871f8b029782acb81dbbcc8..e426ba946f8ee807c55d75e5522e45cd4709a332 100644 (file)
@@ -21,6 +21,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
 #include <stdint.h>
 #include <stdlib.h>
 #include <stdio.h>
+#include <string.h>
 #include <getopt.h>
 #include <readline/readline.h>
 #include <ipxe/command.h>
@@ -75,17 +76,25 @@ struct command help_command __command = {
  *
  */
 int shell ( void ) {
+       struct readline_history history;
        char *line;
        int rc = 0;
 
+       /* Initialise shell history */
+       memset ( &history, 0, sizeof ( history ) );
+
+       /* Read and execute commands */
        do {
-               line = readline ( shell_prompt );
+               line = readline_history ( shell_prompt, &history );
                if ( line ) {
                        rc = system ( line );
                        free ( line );
                }
        } while ( ! shell_stopped ( SHELL_STOP_COMMAND_SEQUENCE ) );
 
+       /* Discard shell history */
+       history_free ( &history );
+
        return rc;
 }