summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2011-09-04 13:17:09 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2011-09-04 13:17:09 +0000
commit89973217774f93f8dabcf41a559a5910b7b27f64 (patch)
tree316347c1fd4c1c0d063eead4b5e816e08f57f737 /apps
parent060b3fa4f12b3325f29ff8303e22dd318632bd87 (diff)
downloadrockbox-89973217774f93f8dabcf41a559a5910b7b27f64.zip
rockbox-89973217774f93f8dabcf41a559a5910b7b27f64.tar.gz
rockbox-89973217774f93f8dabcf41a559a5910b7b27f64.tar.bz2
rockbox-89973217774f93f8dabcf41a559a5910b7b27f64.tar.xz
Remove duplicated code to search for a setting by its cfg name
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30428 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/gui/skin_engine/skin_parser.c17
-rw-r--r--apps/settings.c14
-rw-r--r--apps/settings.h1
3 files changed, 19 insertions, 13 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index 59c7e92..adac487 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -620,13 +620,8 @@ static int parse_setting_and_lang(struct skin_element *element,
}
else
{
- /* Find the setting */
- for (i=0; i<nb_settings; i++)
- if (settings[i].cfg_name &&
- !strcmp(settings[i].cfg_name, temp))
- break;
#ifndef __PCTOOL__
- if (i == nb_settings)
+ if (find_setting_by_cfgname(temp, &i) == NULL)
return WPS_ERROR_INVALID_PARAM;
#endif
}
@@ -1148,14 +1143,10 @@ static int touchregion_setup_setting(struct skin_element *element, int param_no,
int p = param_no;
char *name = element->params[p++].data.text;
int j;
- /* Find the setting */
- for (j=0; j<nb_settings; j++)
- if (settings[j].cfg_name &&
- !strcmp(settings[j].cfg_name, name))
- break;
- if (j==nb_settings)
+
+ region->setting_data.setting = find_setting_by_cfgname(name, &j);
+ if (region->setting_data.setting == NULL)
return WPS_ERROR_INVALID_PARAM;
- region->setting_data.setting = (void*)&settings[j];
if (region->action == ACTION_SETTINGS_SET)
{
char* text;
diff --git a/apps/settings.c b/apps/settings.c
index 623bc5b..258face 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -1087,6 +1087,20 @@ const struct settings_list* find_setting(const void* variable, int *id)
}
return NULL;
}
+const struct settings_list* find_setting_by_cfgname(const char* name, int *id)
+{
+ int i;
+ for (i=0; i<nb_settings; i++)
+ {
+ if (settings[i].cfg_name &&
+ !strcmp(settings[i].cfg_name, name))
+ {
+ if (id) *id = i;
+ return &settings[i];
+ }
+ }
+ return NULL;
+}
bool set_bool(const char* string, const bool* variable )
{
diff --git a/apps/settings.h b/apps/settings.h
index 05965b3..f48dd5d 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -231,6 +231,7 @@ void settings_display(void);
enum optiontype { INT, BOOL };
const struct settings_list* find_setting(const void* variable, int *id);
+const struct settings_list* find_setting_by_cfgname(const char* name, int *id);
bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len);
bool cfg_string_to_int(int setting_id, int* out, const char* str);
bool cfg_to_string(int setting_id, char* buf, int buf_len);