mirror of https://github.com/ipxe/ipxe.git
Merge 6733296243
into 7e64e9b670
commit
76f321c871
|
@ -63,6 +63,7 @@ static int show_exec ( int argc, char **argv ) {
|
|||
struct named_setting setting;
|
||||
struct settings *origin;
|
||||
struct setting fetched;
|
||||
struct setting *iter;
|
||||
char name_buf[32];
|
||||
char *value;
|
||||
int len;
|
||||
|
@ -76,6 +77,22 @@ static int show_exec ( int argc, char **argv ) {
|
|||
if ( ( rc = parse_existing_setting ( argv[optind], &setting ) ) != 0 )
|
||||
goto err_parse_setting;
|
||||
|
||||
if ( setting.settings && setting.setting.name[0] == 0 ) {
|
||||
/* The user requested a scope name (e.g. "show net1/"). Iterate
|
||||
* over all settings and show relevant ones, similar to how the
|
||||
* config interface would present it. */
|
||||
for_each_table_entry ( iter, SETTINGS ) {
|
||||
if ( ! setting_applies ( setting.settings, iter ) )
|
||||
continue;
|
||||
|
||||
if ( fetchf_setting_copy ( setting.settings, iter,
|
||||
&origin, &fetched, &value ) < 0 )
|
||||
continue;
|
||||
|
||||
setting_name ( origin, &fetched, name_buf, sizeof ( name_buf ) );
|
||||
printf ( "%s/%s = %s\n", setting.settings->name, iter->name, value );
|
||||
}
|
||||
} else {
|
||||
/* Fetch formatted setting value */
|
||||
if ( ( len = fetchf_setting_copy ( setting.settings, &setting.setting,
|
||||
&origin, &fetched, &value ) ) < 0 ) {
|
||||
|
@ -88,6 +105,7 @@ static int show_exec ( int argc, char **argv ) {
|
|||
/* Print setting value */
|
||||
setting_name ( origin, &fetched, name_buf, sizeof ( name_buf ) );
|
||||
printf ( "%s = %s\n", name_buf, value );
|
||||
}
|
||||
|
||||
/* Success */
|
||||
rc = 0;
|
||||
|
|
Loading…
Reference in New Issue