forked from len0rd/rockbox
[bugfix] FS#13456 - Loaded FM preset list doesn't restore after restart
the fmr file wasn't being detected on multivolume targets the global preset list couldn't be cleared once set empty global preset file wasn't detected properly either Change-Id: I9c4b40ed0b6f3dbb0d38eb668fc74a512ea34062
This commit is contained in:
parent
277c66d9d2
commit
14898bc19e
3 changed files with 23 additions and 29 deletions
|
|
@ -196,7 +196,7 @@ void radio_save_presets(void)
|
|||
}
|
||||
close(fd);
|
||||
|
||||
if(!strncasecmp(FMPRESET_PATH, filepreset, strlen(FMPRESET_PATH)))
|
||||
if (strcasestr(filepreset, FMPRESET_PATH))
|
||||
set_file(filepreset, global_settings.fmr_file, MAX_FILENAME);
|
||||
presets_changed = false;
|
||||
}
|
||||
|
|
@ -206,7 +206,7 @@ void radio_save_presets(void)
|
|||
}
|
||||
}
|
||||
|
||||
void radio_load_presets(char *filename)
|
||||
void radio_load_presets(const char *filename)
|
||||
{
|
||||
int fd;
|
||||
int rc;
|
||||
|
|
@ -220,25 +220,35 @@ void radio_load_presets(char *filename)
|
|||
num_presets = 0;
|
||||
|
||||
/* No Preset in configuration. */
|
||||
if(filename[0] == '\0')
|
||||
if(filename[0] == '\0' || filename[0] == '-')
|
||||
{
|
||||
filepreset[0] = '\0';
|
||||
return;
|
||||
}
|
||||
/* Temporary preset, loaded until player shuts down. */
|
||||
else if(filename[0] == '/')
|
||||
strmemccpy(filepreset, filename, sizeof(filepreset));
|
||||
/* Preset from default directory. */
|
||||
else
|
||||
|
||||
splash(0, ID2P(LANG_WAIT));
|
||||
|
||||
if(filename[0] != '/') /* Preset within radio screen */
|
||||
{
|
||||
snprintf(filepreset, sizeof(filepreset), "%s/%s.fmr",
|
||||
FMPRESET_PATH, filename);
|
||||
FMPRESET_PATH, filename);;
|
||||
}
|
||||
else
|
||||
{
|
||||
strmemccpy(filepreset, filename, sizeof(filepreset));
|
||||
}
|
||||
|
||||
/* Preset inside the default folder? */
|
||||
if (strcasestr(filepreset, FMPRESET_PATH))
|
||||
set_file(filepreset, global_settings.fmr_file, MAX_FILENAME);
|
||||
/* else Temporary preset, loaded until player shuts down. */
|
||||
|
||||
fd = open_utf8(filepreset, O_RDONLY);
|
||||
if(fd >= 0)
|
||||
{
|
||||
while(!done && num_presets < MAX_PRESETS)
|
||||
{
|
||||
rc = read_line(fd, buf, 128);
|
||||
rc = read_line(fd, buf, sizeof(buf));
|
||||
if(rc > 0)
|
||||
{
|
||||
if(settings_parseline(buf, &freq, &name))
|
||||
|
|
@ -437,6 +447,7 @@ int preset_list_clear(void)
|
|||
radio_set_mode(RADIO_SCAN_MODE);
|
||||
curr_preset = -1;
|
||||
presets_changed = false; /* Don't ask to save when clearing the list. */
|
||||
global_settings.fmr_file[0] = '-';
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue