diff --git a/src/hci/readline.c b/src/hci/readline.c index 2ecb8f27..a199fb0e 100644 --- a/src/hci/readline.c +++ b/src/hci/readline.c @@ -241,13 +241,14 @@ void history_free ( struct readline_history *history ) { * Read line from console (with history) * * @v prompt Prompt string + * @v prefill Prefill string, or NULL for no prefill * @v history History buffer, or NULL for no history * @ret line Line read from console (excluding terminating newline) * * The returned line is allocated with malloc(); the caller must * eventually call free() to release the storage. */ -char * readline_history ( const char *prompt, +char * readline_history ( const char *prompt, const char *prefill, struct readline_history *history ) { char buf[READLINE_MAX]; struct edit_string string; @@ -265,6 +266,12 @@ char * readline_history ( const char *prompt, init_editstring ( &string, buf, sizeof ( buf ) ); buf[0] = '\0'; + /* Prefill string, if applicable */ + if ( prefill ) { + replace_string ( &string, prefill ); + sync_console ( &string ); + } + while ( 1 ) { /* Handle keypress */ key = edit_string ( &string, getkey ( 0 ) ); @@ -321,5 +328,5 @@ char * readline_history ( const char *prompt, * eventually call free() to release the storage. */ char * readline ( const char *prompt ) { - return readline_history ( prompt, NULL ); + return readline_history ( prompt, NULL, NULL ); } diff --git a/src/hci/shell.c b/src/hci/shell.c index 33438da0..f4cf9bc8 100644 --- a/src/hci/shell.c +++ b/src/hci/shell.c @@ -86,7 +86,7 @@ int shell ( void ) { /* Read and execute commands */ do { - line = readline_history ( shell_prompt, &history ); + line = readline_history ( shell_prompt, NULL, &history ); if ( line ) { rc = system ( line ); free ( line ); diff --git a/src/include/readline/readline.h b/src/include/readline/readline.h index 42dfd8c4..8b159975 100644 --- a/src/include/readline/readline.h +++ b/src/include/readline/readline.h @@ -51,6 +51,7 @@ struct readline_history { extern void history_free ( struct readline_history *history ); extern char * __malloc readline_history ( const char *prompt, + const char *prefill, struct readline_history *history ); extern char * __malloc readline ( const char *prompt );