diff options
author | Michael Brown | 2011-03-22 22:24:54 +0100 |
---|---|---|
committer | Michael Brown | 2011-03-22 22:26:05 +0100 |
commit | 247ac8055667e3f6080c5ad5fb9942a90d1812af (patch) | |
tree | 7ffca93ec674f80f42af0f24aad8388c9a6beaab /src/core/settings.c | |
parent | [settings] Display only applicable settings in "config" user interface (diff) | |
download | ipxe-247ac8055667e3f6080c5ad5fb9942a90d1812af.tar.gz ipxe-247ac8055667e3f6080c5ad5fb9942a90d1812af.tar.xz ipxe-247ac8055667e3f6080c5ad5fb9942a90d1812af.zip |
[settings] Display canonical setting name in "config" user interface
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/core/settings.c')
-rw-r--r-- | src/core/settings.c | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/src/core/settings.c b/src/core/settings.c index 536a68d4..acd093f2 100644 --- a/src/core/settings.c +++ b/src/core/settings.c @@ -1061,6 +1061,27 @@ parse_setting_name ( const char *name, } /** + * Return full setting name + * + * @v settings Settings block, or NULL + * @v setting Setting + * @v buf Buffer + * @v len Length of buffer + * @ret len Length of setting name, or negative error + */ +int setting_name ( struct settings *settings, struct setting *setting, + char *buf, size_t len ) { + const char *name; + + if ( ! settings ) + settings = &settings_root; + + name = settings_name ( settings ); + return snprintf ( buf, len, "%s%s%s:%s", name, ( name[0] ? "/" : "" ), + setting->name, setting->type->name ); +} + +/** * Parse and store value of named setting * * @v name Name of setting @@ -1101,7 +1122,6 @@ int fetchf_named_setting ( const char *name, struct settings *settings; struct setting setting; struct settings *origin; - const char *origin_name; char tmp_name[ strlen ( name ) + 1 ]; int rc; @@ -1118,10 +1138,7 @@ int fetchf_named_setting ( const char *name, /* Construct setting name */ origin = fetch_setting_origin ( settings, &setting ); assert ( origin != NULL ); - origin_name = settings_name ( origin ); - snprintf ( name_buf, name_len, "%s%s%s:%s", - origin_name, ( origin_name[0] ? "/" : "" ), - setting.name, setting.type->name ); + setting_name ( origin, &setting, name_buf, name_len ); return 0; } |