summaryrefslogtreecommitdiffstats
path: root/src/hci
diff options
context:
space:
mode:
Diffstat (limited to 'src/hci')
-rw-r--r--src/hci/shell.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/hci/shell.c b/src/hci/shell.c
index f8b1ec27..e426ba94 100644
--- a/src/hci/shell.c
+++ b/src/hci/shell.c
@@ -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;
}