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 */
|
case 0: /* main lcd */
|
||||||
screen = SCREEN_MAIN;
|
screen = SCREEN_MAIN;
|
||||||
set_file(file, (char *)global_settings.font_file, MAX_FILENAME);
|
set_file(file, (char *)global_settings.font_file);
|
||||||
break;
|
break;
|
||||||
case 1: /* remote */
|
case 1: /* remote */
|
||||||
screen = SCREEN_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;
|
break;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
set_file(file, (char *)global_settings.font_file, MAX_FILENAME);
|
set_file(file, (char *)global_settings.font_file);
|
||||||
#endif
|
#endif
|
||||||
splash(0, ID2P(LANG_WAIT));
|
splash(0, ID2P(LANG_WAIT));
|
||||||
current_font_id = screens[screen].getuifont();
|
current_font_id = screens[screen].getuifont();
|
||||||
|
@ -480,10 +480,10 @@ static void ft_load_font(char *file)
|
||||||
viewportmanager_theme_changed(THEME_UI_VIEWPORT);
|
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));
|
splash(0, ID2P(LANG_WAIT));
|
||||||
set_file(buf, file, maxlen);
|
set_file(buf, file);
|
||||||
settings_apply_skins();
|
settings_apply_skins();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -639,30 +639,30 @@ int ft_enter(struct tree_context* c)
|
||||||
rc = GO_TO_FM;
|
rc = GO_TO_FM;
|
||||||
break;
|
break;
|
||||||
case FILE_ATTR_FMS:
|
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;
|
break;
|
||||||
#ifdef HAVE_REMOTE_LCD
|
#ifdef HAVE_REMOTE_LCD
|
||||||
case FILE_ATTR_RFMS:
|
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;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
case FILE_ATTR_SBS:
|
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;
|
break;
|
||||||
#ifdef HAVE_REMOTE_LCD
|
#ifdef HAVE_REMOTE_LCD
|
||||||
case FILE_ATTR_RSBS:
|
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;
|
break;
|
||||||
#endif
|
#endif
|
||||||
/* wps config file */
|
/* wps config file */
|
||||||
case FILE_ATTR_WPS:
|
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;
|
break;
|
||||||
#if defined(HAVE_REMOTE_LCD) && (NB_SCREENS > 1)
|
#if defined(HAVE_REMOTE_LCD) && (NB_SCREENS > 1)
|
||||||
/* remote-wps config file */
|
/* remote-wps config file */
|
||||||
case FILE_ATTR_RWPS:
|
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;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case FILE_ATTR_CFG:
|
case FILE_ATTR_CFG:
|
||||||
|
@ -685,8 +685,7 @@ int ft_enter(struct tree_context* c)
|
||||||
splash(HZ, ID2P(LANG_FAILED));
|
splash(HZ, ID2P(LANG_FAILED));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
set_file(buf, (char *)global_settings.lang_file,
|
set_file(buf, (char *)global_settings.lang_file);
|
||||||
MAX_FILENAME);
|
|
||||||
talk_init(); /* use voice of same language */
|
talk_init(); /* use voice of same language */
|
||||||
viewportmanager_theme_changed(THEME_LANGUAGE);
|
viewportmanager_theme_changed(THEME_LANGUAGE);
|
||||||
settings_apply_skins();
|
settings_apply_skins();
|
||||||
|
@ -701,7 +700,7 @@ int ft_enter(struct tree_context* c)
|
||||||
splash(0, ID2P(LANG_WAIT));
|
splash(0, ID2P(LANG_WAIT));
|
||||||
if (!load_kbd(buf))
|
if (!load_kbd(buf))
|
||||||
splash(HZ, ID2P(LANG_KEYBOARD_LOADED));
|
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;
|
break;
|
||||||
|
|
||||||
#if defined(HAVE_ROLO)
|
#if defined(HAVE_ROLO)
|
||||||
|
|
|
@ -197,7 +197,7 @@ void radio_save_presets(void)
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
if (strcasestr(filepreset, FMPRESET_PATH))
|
if (strcasestr(filepreset, FMPRESET_PATH))
|
||||||
set_file(filepreset, global_settings.fmr_file, MAX_FILENAME);
|
set_file(filepreset, global_settings.fmr_file);
|
||||||
presets_changed = false;
|
presets_changed = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -240,7 +240,7 @@ void radio_load_presets(const char *filename)
|
||||||
|
|
||||||
/* Preset inside the default folder? */
|
/* Preset inside the default folder? */
|
||||||
if (strcasestr(filepreset, FMPRESET_PATH))
|
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. */
|
/* else Temporary preset, loaded until player shuts down. */
|
||||||
|
|
||||||
fd = open_utf8(filepreset, O_RDONLY);
|
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,
|
* Takes filename, removes the directory and the extension,
|
||||||
* and then copies the basename into setting, unless the basename exceeds maxlen
|
* 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* fptr = strrchr(filename,'/');
|
||||||
const char* extptr;
|
const char* extptr;
|
||||||
int len;
|
int len;
|
||||||
|
@ -1305,9 +1306,12 @@ void set_file(const char* filename, char* setting, const int maxlen)
|
||||||
|
|
||||||
len = strlen(fptr) - extlen + 1;
|
len = strlen(fptr) - extlen + 1;
|
||||||
|
|
||||||
/* error if filename isn't in ROCKBOX_DIR */
|
/* error later if filename isn't in ROCKBOX_DIR */
|
||||||
if (len > maxlen)
|
if (len > maxlen || !file_exists(filename))
|
||||||
|
{
|
||||||
|
DEBUGF("%s Error %s\n", __func__, filename);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
strmemccpy(setting, fptr, len);
|
strmemccpy(setting, fptr, len);
|
||||||
settings_save();
|
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*),
|
const char* (*formatter)(char*, size_t, int, const char*),
|
||||||
int32_t (*get_talk_id)(int, int));
|
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,
|
bool set_option(const char* string, const void* variable, enum optiontype type,
|
||||||
const struct opt_items* options, int numoptions, void (*function)(int));
|
const struct opt_items* options, int numoptions, void (*function)(int));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue