diff options
author | Michael Brown | 2012-10-25 05:16:15 +0200 |
---|---|---|
committer | Michael Brown | 2012-10-25 05:42:42 +0200 |
commit | 4dedccfa1fece8d8e2d6d22c81023817aebd7e2e (patch) | |
tree | bd448b2fce7ae26286df576241d6e170464a2d9f /src/hci | |
parent | [settings] Add fetchf_named_setting_copy() (diff) | |
download | ipxe-4dedccfa1fece8d8e2d6d22c81023817aebd7e2e.tar.gz ipxe-4dedccfa1fece8d8e2d6d22c81023817aebd7e2e.tar.xz ipxe-4dedccfa1fece8d8e2d6d22c81023817aebd7e2e.zip |
[readline] Allow a prefilled input string to be provided
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/hci')
-rw-r--r-- | src/hci/readline.c | 11 | ||||
-rw-r--r-- | src/hci/shell.c | 2 |
2 files changed, 10 insertions, 3 deletions
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 ); |