diff options
Diffstat (limited to 'sound/flac.cpp')
-rw-r--r-- | sound/flac.cpp | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/sound/flac.cpp b/sound/flac.cpp index c1bfd396aa..94398a6946 100644 --- a/sound/flac.cpp +++ b/sound/flac.cpp @@ -933,31 +933,25 @@ FlacTrackInfo::~FlacTrackInfo() { } DigitalTrackInfo* getFlacTrack(int track) { - assert(track >=1); - char track_name[32]; + assert(track >= 1); + char trackName[4][32]; File *file = new File(); - sprintf(track_name, "track%d.flac", track); - file->open(track_name); + sprintf(trackName[0], "track%d.flac", track); + sprintf(trackName[1], "track%02d.flac", track); + sprintf(trackName[2], "track%d.fla", track); + sprintf(trackName[3], "track%02d.fla", track); - if (file->isOpen()) { - FlacTrackInfo *trackInfo = new FlacTrackInfo(file); - if (!trackInfo->error()) - return trackInfo; - delete trackInfo; - } - - sprintf(track_name, "track%d.fla", track); - file->open(track_name); - if (file->isOpen()) { - FlacTrackInfo *trackInfo = new FlacTrackInfo(file); - if (!trackInfo->error()) - return trackInfo; - delete trackInfo; + for (int i = 0; i < 4; ++i) { + if (file->open(trackName[i])) { + FlacTrackInfo *trackInfo = new FlacTrackInfo(file); + if (!trackInfo->error()) + return trackInfo; + delete trackInfo; + } } - delete file; return NULL; } |