Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[readline] Allow a prefilled input string to be provided
Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Oct 25, 2012
1 parent c86790d commit 4dedccf
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 3 deletions.
11 changes: 9 additions & 2 deletions src/hci/readline.c
Expand Up @@ -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;
Expand All @@ -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 ) );
Expand Down Expand Up @@ -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 );
}
2 changes: 1 addition & 1 deletion src/hci/shell.c
Expand Up @@ -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 );
Expand Down
1 change: 1 addition & 0 deletions src/include/readline/readline.h
Expand Up @@ -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 );

Expand Down

0 comments on commit 4dedccf

Please sign in to comment.