Skip to content

Commit

Permalink
[settings] Prefill existing setting value in "read" command
Browse files Browse the repository at this point in the history
When prompting the user to enter a setting value via the "read"
command, prefill the input buffer with the setting's current value.

Requested-by: Ján Ondrej (SAL) <ondrejj@salstar.ks>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Oct 25, 2012
1 parent 4dedccf commit 34863a5
Showing 1 changed file with 22 additions and 8 deletions.
30 changes: 22 additions & 8 deletions src/hci/commands/nvo_cmd.c
Expand Up @@ -109,7 +109,8 @@ static struct command_descriptor clear_read_cmd =
*/
static int set_core_exec ( int argc, char **argv,
struct command_descriptor *cmd,
int ( * get_value ) ( char **args, char **value ) ) {
int ( * get_value ) ( const char *name,
char **args, char **value ) ) {
struct set_core_options opts;
const char *name;
char *value;
Expand All @@ -123,7 +124,7 @@ static int set_core_exec ( int argc, char **argv,
name = argv[optind];

/* Parse setting value */
if ( ( rc = get_value ( &argv[ optind + 1 ], &value ) ) != 0 )
if ( ( rc = get_value ( name, &argv[ optind + 1 ], &value ) ) != 0 )
goto err_get_value;

/* Determine total length of command line */
Expand All @@ -147,11 +148,12 @@ static int set_core_exec ( int argc, char **argv,
/**
* Get setting value for "set" command
*
* @v name Setting name
* @v args Remaining arguments
* @ret value Setting value
* @ret rc Return status code
*/
static int set_value ( char **args, char **value ) {
static int set_value ( const char *name __unused, char **args, char **value ) {

*value = concat_args ( args );
if ( ! *value )
Expand All @@ -174,11 +176,13 @@ static int set_exec ( int argc, char **argv ) {
/**
* Get setting value for "clear" command
*
* @v name Setting name
* @v args Remaining arguments
* @ret value Setting value
* @ret rc Return status code
*/
static int clear_value ( char **args __unused, char **value ) {
static int clear_value ( const char *name __unused, char **args __unused,
char **value ) {

*value = NULL;
return 0;
Expand All @@ -198,14 +202,24 @@ static int clear_exec ( int argc, char **argv ) {
/**
* Get setting value for "read" command
*
* @v name Setting name
* @v args Remaining arguments
* @ret value Setting value
* @ret rc Return status code
*/
static int read_value ( char **args __unused, char **value ) {
static int read_value ( const char *name, char **args __unused, char **value ) {
char *existing;
int rc;

*value = readline ( NULL );
if ( ! *value )
return -ENOMEM;
/* Read existing value */
if ( ( rc = fetchf_named_setting_copy ( name, &existing ) ) < 0 )
return rc;

/* Read new value */
*value = readline_history ( NULL, existing, NULL );

/* Free existing value */
free ( existing );

return 0;
}
Expand Down

0 comments on commit 34863a5

Please sign in to comment.