[settings] Apply settings block name in register_settings()

Pass the settings block name as a parameter to register_settings(),
rather than defining it with settings_init() (and then possibly
changing it by directly manipulating settings->name).

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2010-12-01 16:34:23 +00:00
parent de6a59470b
commit 67b45186a5
10 changed files with 30 additions and 32 deletions

View File

@@ -281,9 +281,9 @@ static struct settings * autovivify_child_settings ( struct settings *parent,
return NULL;
}
memcpy ( new_child->name, name, sizeof ( new_child->name ) );
generic_settings_init ( &new_child->generic, NULL, new_child->name );
generic_settings_init ( &new_child->generic, NULL );
settings = &new_child->generic.settings;
register_settings ( settings, parent );
register_settings ( settings, parent, new_child->name );
return settings;
}
@@ -422,9 +422,11 @@ static void reprioritise_settings ( struct settings *settings ) {
*
* @v settings Settings block
* @v parent Parent settings block, or NULL
* @v name Settings block name
* @ret rc Return status code
*/
int register_settings ( struct settings *settings, struct settings *parent ) {
int register_settings ( struct settings *settings, struct settings *parent,
const char *name ) {
struct settings *old_settings;
/* NULL parent => add to settings root */
@@ -432,6 +434,9 @@ int register_settings ( struct settings *settings, struct settings *parent ) {
if ( parent == NULL )
parent = &settings_root;
/* Apply settings block name */
settings->name = name;
/* Remove any existing settings with the same name */
if ( ( old_settings = find_child_settings ( parent, settings->name ) ))
unregister_settings ( old_settings );