diff options
Diffstat (limited to 'src/state_file.c')
-rw-r--r-- | src/state_file.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/state_file.c b/src/state_file.c index 3791c057d..18548d03c 100644 --- a/src/state_file.c +++ b/src/state_file.c @@ -63,6 +63,8 @@ static void state_file_read(void) { FILE *fp; + char line[1024]; + bool success; assert(state_file_path != NULL); @@ -75,11 +77,15 @@ state_file_read(void) return; } - read_sw_volume_state(fp); - rewind(fp); - readAudioDevicesState(fp); - rewind(fp); - playlist_state_restore(fp, &g_playlist); + while (fgets(line, sizeof(line), fp) != NULL) { + g_strchomp(line); + + success = read_sw_volume_state(line) || + readAudioDevicesState(line) || + playlist_state_restore(line, fp, &g_playlist); + if (!success) + g_warning("Unrecognized line in state file: %s", line); + } while(fclose(fp) && errno == EINTR) /* nothing */; } |