mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-09 21:22:39 -05:00
settings: More settings ID to pointer conversions
Convert cfg_int_to_string(), cfg_to_string(), settings_write_config(). Change-Id: Icb72d2ff874cf90ffe5fe14878aece0a53f6bd18
This commit is contained in:
parent
08aa09e15d
commit
4ff97ae07c
4 changed files with 39 additions and 52 deletions
|
|
@ -117,7 +117,6 @@ const char *option_get_valuestring(const struct settings_list *setting,
|
||||||
{
|
{
|
||||||
if (setting->flags & F_CHOICETALKS)
|
if (setting->flags & F_CHOICETALKS)
|
||||||
{
|
{
|
||||||
int setting_id;
|
|
||||||
const struct choice_setting *info = setting->choice_setting;
|
const struct choice_setting *info = setting->choice_setting;
|
||||||
if (info->talks[(int)temp_var] < LANG_LAST_INDEX_IN_ARRAY)
|
if (info->talks[(int)temp_var] < LANG_LAST_INDEX_IN_ARRAY)
|
||||||
{
|
{
|
||||||
|
|
@ -125,8 +124,7 @@ const char *option_get_valuestring(const struct settings_list *setting,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
find_setting(setting->setting, &setting_id);
|
cfg_int_to_string(setting, (int)temp_var, buffer, buf_len);
|
||||||
cfg_int_to_string(setting_id, (int)temp_var, buffer, buf_len);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -1442,7 +1442,7 @@ const char *get_token_value(struct gui_wps *gwps,
|
||||||
goto gtv_ret_numeric_tag_info;
|
goto gtv_ret_numeric_tag_info;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cfg_to_string(token->value.i,buf,buf_size);
|
cfg_to_string(s, buf, buf_size);
|
||||||
numeric_buf = buf;
|
numeric_buf = buf;
|
||||||
goto gtv_ret_numeric_tag_info;
|
goto gtv_ret_numeric_tag_info;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -401,17 +401,16 @@ bool settings_load_config(const char* file, bool apply)
|
||||||
|
|
||||||
/** Writing to a config file and saving settings **/
|
/** Writing to a config file and saving settings **/
|
||||||
|
|
||||||
bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len)
|
bool cfg_int_to_string(const struct settings_list *setting, int val, char* buf, int buf_len)
|
||||||
{
|
{
|
||||||
int flags = settings[setting_id].flags;
|
const char* start = setting->cfg_vals;
|
||||||
const char* start = settings[setting_id].cfg_vals;
|
|
||||||
char* end = NULL;
|
char* end = NULL;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|
||||||
if ((flags&F_T_MASK)==F_T_INT &&
|
if ((setting->flags & F_T_MASK) == F_T_INT &&
|
||||||
flags&F_TABLE_SETTING)
|
(setting->flags & F_TABLE_SETTING))
|
||||||
{
|
{
|
||||||
const int *value = settings[setting_id].table_setting->values;
|
const int *value = setting->table_setting->values;
|
||||||
while (start)
|
while (start)
|
||||||
{
|
{
|
||||||
end = strchr(start,',');
|
end = strchr(start,',');
|
||||||
|
|
@ -455,20 +454,19 @@ bool cfg_int_to_string(int setting_id, int val, char* buf, int buf_len)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cfg_to_string(int i/*setting_id*/, char* buf, int buf_len)
|
void cfg_to_string(const struct settings_list *setting, char* buf, int buf_len)
|
||||||
{
|
{
|
||||||
switch (settings[i].flags&F_T_MASK)
|
switch (setting->flags & F_T_MASK)
|
||||||
{
|
{
|
||||||
case F_T_CUSTOM:
|
case F_T_CUSTOM:
|
||||||
settings[i].custom_setting->write_to_cfg(settings[i].setting,
|
setting->custom_setting->write_to_cfg(setting->setting, buf, buf_len);
|
||||||
buf, buf_len);
|
|
||||||
break;
|
break;
|
||||||
case F_T_INT:
|
case F_T_INT:
|
||||||
case F_T_UINT:
|
case F_T_UINT:
|
||||||
#ifdef HAVE_LCD_COLOR
|
#ifdef HAVE_LCD_COLOR
|
||||||
if (settings[i].flags&F_RGB)
|
if (setting->flags & F_RGB)
|
||||||
{
|
{
|
||||||
int colour = *(int*)settings[i].setting;
|
int colour = *(int*)setting->setting;
|
||||||
snprintf(buf,buf_len,"%02x%02x%02x",
|
snprintf(buf,buf_len,"%02x%02x%02x",
|
||||||
(int)RGB_UNPACK_RED(colour),
|
(int)RGB_UNPACK_RED(colour),
|
||||||
(int)RGB_UNPACK_GREEN(colour),
|
(int)RGB_UNPACK_GREEN(colour),
|
||||||
|
|
@ -476,31 +474,28 @@ bool cfg_to_string(int i/*setting_id*/, char* buf, int buf_len)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
if (settings[i].cfg_vals == NULL)
|
if (setting->cfg_vals == NULL)
|
||||||
{
|
{
|
||||||
snprintf(buf,buf_len,"%d",*(int*)settings[i].setting);
|
snprintf(buf, buf_len, "%d", *(int*)setting->setting);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (cfg_int_to_string(i, *(int*)settings[i].setting,
|
if (!cfg_int_to_string(setting, *(int*)setting->setting,
|
||||||
buf, buf_len) == false)
|
buf, buf_len))
|
||||||
{
|
snprintf(buf, buf_len, "%d", *(int*)setting->setting);
|
||||||
snprintf(buf,buf_len,"%d",*(int*)settings[i].setting);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_T_BOOL:
|
case F_T_BOOL:
|
||||||
cfg_int_to_string(i,
|
cfg_int_to_string(setting, *(bool*)setting->setting, buf, buf_len);
|
||||||
*(bool*)settings[i].setting==false?0:1, buf, buf_len);
|
|
||||||
break;
|
break;
|
||||||
case F_T_CHARPTR:
|
case F_T_CHARPTR:
|
||||||
case F_T_UCHARPTR:
|
case F_T_UCHARPTR:
|
||||||
if (((char*)settings[i].setting)[0]
|
|
||||||
&& settings[i].filename_setting->prefix)
|
|
||||||
{
|
{
|
||||||
if (((char*)settings[i].setting)[0] == '-')
|
char *value = setting->setting;
|
||||||
|
const struct filename_setting *fs = setting->filename_setting;
|
||||||
|
if (value[0] && fs->prefix)
|
||||||
|
{
|
||||||
|
if (value[0] == '-')
|
||||||
{
|
{
|
||||||
buf[0] = '-';
|
buf[0] = '-';
|
||||||
buf[1] = '\0';
|
buf[1] = '\0';
|
||||||
|
|
@ -508,25 +503,21 @@ bool cfg_to_string(int i/*setting_id*/, char* buf, int buf_len)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
snprintf(buf, buf_len, "%s%s%s",
|
snprintf(buf, buf_len, "%s%s%s",
|
||||||
settings[i].filename_setting->prefix,
|
fs->prefix, value, fs->suffix);
|
||||||
(char*)settings[i].setting,
|
|
||||||
settings[i].filename_setting->suffix);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int len = MIN(buf_len, settings[i].filename_setting->max_len);
|
strmemccpy(buf, value, buf_len);
|
||||||
strmemccpy(buf,(char*)settings[i].setting,len);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
} /* switch () */
|
} /* switch () */
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool is_changed(int setting_id)
|
static bool is_changed(const struct settings_list *setting)
|
||||||
{
|
{
|
||||||
const struct settings_list *setting = &settings[setting_id];
|
|
||||||
switch (setting->flags&F_T_MASK)
|
switch (setting->flags&F_T_MASK)
|
||||||
{
|
{
|
||||||
case F_T_CUSTOM:
|
case F_T_CUSTOM:
|
||||||
|
|
@ -574,40 +565,38 @@ static bool settings_write_config(const char* filename, int options)
|
||||||
"http://www.rockbox.org\r\n\r\n", rbversion);
|
"http://www.rockbox.org\r\n\r\n", rbversion);
|
||||||
for(i=0; i<nb_settings; i++)
|
for(i=0; i<nb_settings; i++)
|
||||||
{
|
{
|
||||||
if (settings[i].cfg_name == NULL)
|
const struct settings_list *setting = &settings[i];
|
||||||
continue;
|
if (!setting->cfg_name || (setting->flags & F_DEPRECATED))
|
||||||
value[0] = '\0';
|
|
||||||
if (settings[i].flags & F_DEPRECATED)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
switch (options)
|
switch (options)
|
||||||
{
|
{
|
||||||
case SETTINGS_SAVE_CHANGED:
|
case SETTINGS_SAVE_CHANGED:
|
||||||
if (!is_changed(i))
|
if (!is_changed(setting))
|
||||||
continue;
|
continue;
|
||||||
break;
|
break;
|
||||||
case SETTINGS_SAVE_SOUND:
|
case SETTINGS_SAVE_SOUND:
|
||||||
if ((settings[i].flags&F_SOUNDSETTING) == 0)
|
if (!(setting->flags & F_SOUNDSETTING))
|
||||||
continue;
|
continue;
|
||||||
break;
|
break;
|
||||||
case SETTINGS_SAVE_THEME:
|
case SETTINGS_SAVE_THEME:
|
||||||
if ((settings[i].flags&F_THEMESETTING) == 0)
|
if (!(setting->flags & F_THEMESETTING))
|
||||||
continue;
|
continue;
|
||||||
break;
|
break;
|
||||||
#ifdef HAVE_RECORDING
|
#ifdef HAVE_RECORDING
|
||||||
case SETTINGS_SAVE_RECPRESETS:
|
case SETTINGS_SAVE_RECPRESETS:
|
||||||
if ((settings[i].flags&F_RECSETTING) == 0)
|
if (!(setting->flags & F_RECSETTING))
|
||||||
continue;
|
continue;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case SETTINGS_SAVE_EQPRESET:
|
case SETTINGS_SAVE_EQPRESET:
|
||||||
if ((settings[i].flags&F_EQSETTING) == 0)
|
if (!(setting->flags & F_EQSETTING))
|
||||||
continue;
|
continue;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg_to_string(i, value, MAX_PATH);
|
cfg_to_string(setting, value, MAX_PATH);
|
||||||
fdprintf(fd,"%s: %s\r\n",settings[i].cfg_name,value);
|
fdprintf(fd,"%s: %s\r\n",setting->cfg_name,value);
|
||||||
} /* for(...) */
|
} /* for(...) */
|
||||||
close(fd);
|
close(fd);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -265,9 +265,9 @@ enum optiontype { INT, BOOL };
|
||||||
|
|
||||||
const struct settings_list* find_setting(const void* variable, int *id);
|
const struct settings_list* find_setting(const void* variable, int *id);
|
||||||
const struct settings_list* find_setting_by_cfgname(const char* name, 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_int_to_string(const struct settings_list *setting, int val, char* buf, int buf_len);
|
||||||
bool cfg_string_to_int(const struct settings_list *setting, int* out, const char* str);
|
bool cfg_string_to_int(const struct settings_list *setting, int* out, const char* str);
|
||||||
bool cfg_to_string(int setting_id, char* buf, int buf_len);
|
void cfg_to_string(const struct settings_list *setting, char* buf, int buf_len);
|
||||||
bool copy_filename_setting(char *buf, size_t buflen, const char *input,
|
bool copy_filename_setting(char *buf, size_t buflen, const char *input,
|
||||||
const struct filename_setting *fs);
|
const struct filename_setting *fs);
|
||||||
bool set_bool_options(const char* string, const bool* variable,
|
bool set_bool_options(const char* string, const bool* variable,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue