From eaa86156484d72f50825fec3e313a732f258fd31 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Tue, 19 Nov 2013 15:34:58 +0000 Subject: [settings] Allow for multiple definitions of each predefined setting Allow for multiple setting definitions with the same name but different scopes and tags. For example, allow for a "filename" setting with default scope and tag value 67 (for DHCPv4) and a corresponding "filename" setting with IPv6 scope and tag value 59 (for DHCPv6). Signed-off-by: Michael Brown --- src/hci/tui/settings_ui.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/hci') diff --git a/src/hci/tui/settings_ui.c b/src/hci/tui/settings_ui.c index 8fe13ad8..87afc9ba 100644 --- a/src/hci/tui/settings_ui.c +++ b/src/hci/tui/settings_ui.c @@ -119,6 +119,7 @@ static unsigned int select_setting_row ( struct setting_widget *widget, unsigned int index ) { struct settings *settings; struct setting *setting; + struct setting *previous = NULL; unsigned int count = 0; /* Initialise structure */ @@ -146,11 +147,18 @@ static unsigned int select_setting_row ( struct setting_widget *widget, /* Include any applicable settings */ for_each_table_entry ( setting, SETTINGS ) { + + /* Skip inapplicable settings */ if ( ! setting_applies ( widget->settings, setting ) ) continue; - if ( count++ == index ) { - /* Read current setting value and origin */ + /* Skip duplicate settings */ + if ( previous && ( setting_cmp ( setting, previous ) == 0 ) ) + continue; + previous = setting; + + /* Read current setting value and origin */ + if ( count++ == index ) { fetchf_setting ( widget->settings, setting, &widget->row.origin, &widget->row.setting, -- cgit v1.2.3-55-g7522