forked from len0rd/rockbox
settings set_file() cleanup unused maxlen and check for file exist
maxlen is set to MAX_FILENAME by all callers so lets just make that part of the deal check the file exists before we set it Change-Id: I3074f3164fcd4b8873b69612d5c1a51a39de4baf
This commit is contained in:
parent
14898bc19e
commit
bdf89bf4b0
4 changed files with 23 additions and 20 deletions
|
@ -461,15 +461,15 @@ static void ft_load_font(char *file)
|
|||
{
|
||||
case 0: /* main lcd */
|
||||
screen = SCREEN_MAIN;
|
||||
set_file(file, (char *)global_settings.font_file, MAX_FILENAME);
|
||||
set_file(file, (char *)global_settings.font_file);
|
||||
break;
|
||||
case 1: /* remote */
|
||||
screen = SCREEN_REMOTE;
|
||||
set_file(file, (char *)global_settings.remote_font_file, MAX_FILENAME);
|
||||
set_file(file, (char *)global_settings.remote_font_file);
|
||||
break;
|
||||
}
|
||||
#else
|
||||
set_file(file, (char *)global_settings.font_file, MAX_FILENAME);
|
||||
set_file(file, (char *)global_settings.font_file);
|
||||
#endif
|
||||
splash(0, ID2P(LANG_WAIT));
|
||||
current_font_id = screens[screen].getuifont();
|
||||
|
@ -480,10 +480,10 @@ static void ft_load_font(char *file)
|
|||
viewportmanager_theme_changed(THEME_UI_VIEWPORT);
|
||||
}
|
||||
|
||||
static void ft_apply_skin_file(char *buf, char *file, const int maxlen)
|
||||
static void ft_apply_skin_file(char *buf, char *file)
|
||||
{
|
||||
splash(0, ID2P(LANG_WAIT));
|
||||
set_file(buf, file, maxlen);
|
||||
set_file(buf, file);
|
||||
settings_apply_skins();
|
||||
}
|
||||
|
||||
|
@ -639,30 +639,30 @@ int ft_enter(struct tree_context* c)
|
|||
rc = GO_TO_FM;
|
||||
break;
|
||||
case FILE_ATTR_FMS:
|
||||
ft_apply_skin_file(buf, global_settings.fms_file, MAX_FILENAME);
|
||||
ft_apply_skin_file(buf, global_settings.fms_file);
|
||||
break;
|
||||
#ifdef HAVE_REMOTE_LCD
|
||||
case FILE_ATTR_RFMS:
|
||||
ft_apply_skin_file(buf, global_settings.rfms_file, MAX_FILENAME);
|
||||
ft_apply_skin_file(buf, global_settings.rfms_file);
|
||||
break;
|
||||
#endif
|
||||
#endif
|
||||
case FILE_ATTR_SBS:
|
||||
ft_apply_skin_file(buf, global_settings.sbs_file, MAX_FILENAME);
|
||||
ft_apply_skin_file(buf, global_settings.sbs_file);
|
||||
break;
|
||||
#ifdef HAVE_REMOTE_LCD
|
||||
case FILE_ATTR_RSBS:
|
||||
ft_apply_skin_file(buf, global_settings.rsbs_file, MAX_FILENAME);
|
||||
ft_apply_skin_file(buf, global_settings.rsbs_file);
|
||||
break;
|
||||
#endif
|
||||
/* wps config file */
|
||||
case FILE_ATTR_WPS:
|
||||
ft_apply_skin_file(buf, global_settings.wps_file, MAX_FILENAME);
|
||||
ft_apply_skin_file(buf, global_settings.wps_file);
|
||||
break;
|
||||
#if defined(HAVE_REMOTE_LCD) && (NB_SCREENS > 1)
|
||||
/* remote-wps config file */
|
||||
case FILE_ATTR_RWPS:
|
||||
ft_apply_skin_file(buf, global_settings.rwps_file, MAX_FILENAME);
|
||||
ft_apply_skin_file(buf, global_settings.rwps_file);
|
||||
break;
|
||||
#endif
|
||||
case FILE_ATTR_CFG:
|
||||
|
@ -685,8 +685,7 @@ int ft_enter(struct tree_context* c)
|
|||
splash(HZ, ID2P(LANG_FAILED));
|
||||
break;
|
||||
}
|
||||
set_file(buf, (char *)global_settings.lang_file,
|
||||
MAX_FILENAME);
|
||||
set_file(buf, (char *)global_settings.lang_file);
|
||||
talk_init(); /* use voice of same language */
|
||||
viewportmanager_theme_changed(THEME_LANGUAGE);
|
||||
settings_apply_skins();
|
||||
|
@ -701,7 +700,7 @@ int ft_enter(struct tree_context* c)
|
|||
splash(0, ID2P(LANG_WAIT));
|
||||
if (!load_kbd(buf))
|
||||
splash(HZ, ID2P(LANG_KEYBOARD_LOADED));
|
||||
set_file(buf, (char *)global_settings.kbd_file, MAX_FILENAME);
|
||||
set_file(buf, (char *)global_settings.kbd_file);
|
||||
break;
|
||||
|
||||
#if defined(HAVE_ROLO)
|
||||
|
|
|
@ -197,7 +197,7 @@ void radio_save_presets(void)
|
|||
close(fd);
|
||||
|
||||
if (strcasestr(filepreset, FMPRESET_PATH))
|
||||
set_file(filepreset, global_settings.fmr_file, MAX_FILENAME);
|
||||
set_file(filepreset, global_settings.fmr_file);
|
||||
presets_changed = false;
|
||||
}
|
||||
else
|
||||
|
@ -240,7 +240,7 @@ void radio_load_presets(const char *filename)
|
|||
|
||||
/* Preset inside the default folder? */
|
||||
if (strcasestr(filepreset, FMPRESET_PATH))
|
||||
set_file(filepreset, global_settings.fmr_file, MAX_FILENAME);
|
||||
set_file(filepreset, global_settings.fmr_file);
|
||||
/* else Temporary preset, loaded until player shuts down. */
|
||||
|
||||
fd = open_utf8(filepreset, O_RDONLY);
|
||||
|
|
|
@ -1284,8 +1284,9 @@ bool set_option(const char* string, const void* variable, enum optiontype type,
|
|||
* Takes filename, removes the directory and the extension,
|
||||
* and then copies the basename into setting, unless the basename exceeds maxlen
|
||||
**/
|
||||
void set_file(const char* filename, char* setting, const int maxlen)
|
||||
void set_file(const char* filename, char* setting)
|
||||
{
|
||||
const int maxlen = MAX_FILENAME;
|
||||
const char* fptr = strrchr(filename,'/');
|
||||
const char* extptr;
|
||||
int len;
|
||||
|
@ -1305,9 +1306,12 @@ void set_file(const char* filename, char* setting, const int maxlen)
|
|||
|
||||
len = strlen(fptr) - extlen + 1;
|
||||
|
||||
/* error if filename isn't in ROCKBOX_DIR */
|
||||
if (len > maxlen)
|
||||
/* error later if filename isn't in ROCKBOX_DIR */
|
||||
if (len > maxlen || !file_exists(filename))
|
||||
{
|
||||
DEBUGF("%s Error %s\n", __func__, filename);
|
||||
return;
|
||||
}
|
||||
|
||||
strmemccpy(setting, fptr, len);
|
||||
settings_save();
|
||||
|
|
|
@ -308,7 +308,7 @@ bool set_int_ex(const unsigned char* string, const char* unit, int voice_unit,
|
|||
const char* (*formatter)(char*, size_t, int, const char*),
|
||||
int32_t (*get_talk_id)(int, int));
|
||||
|
||||
void set_file(const char* filename, char* setting, const int maxlen);
|
||||
void set_file(const char* filename, char* setting);
|
||||
|
||||
bool set_option(const char* string, const void* variable, enum optiontype type,
|
||||
const struct opt_items* options, int numoptions, void (*function)(int));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue