From 0974882ecd58bc28cdd2bad45be3dff9802f954d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Lalinsk=C3=BD?= Date: Wed, 29 Apr 2009 16:00:39 +0000 Subject: [PATCH] Simplify extension checking in FileRef git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@961189 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- taglib/fileref.cpp | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/taglib/fileref.cpp b/taglib/fileref.cpp index 1f368533..0e1ce57e 100644 --- a/taglib/fileref.cpp +++ b/taglib/fileref.cpp @@ -202,44 +202,38 @@ File *FileRef::create(FileName fileName, bool readAudioProperties, // updated. However at some point that list should be created at the same time // that a default file type resolver is created. - if(s.size() > 4) { - if(s.substr(s.size() - 4, 4).upper() == ".OGG") + int pos = s.rfind("."); + if(pos != -1) { + String ext = s.substr(pos + 1).upper(); + if(ext == "OGG") return new Ogg::Vorbis::File(fileName, readAudioProperties, audioPropertiesStyle); - if(s.substr(s.size() - 4, 4).upper() == ".MP3") + if(ext == "MP3") return new MPEG::File(fileName, readAudioProperties, audioPropertiesStyle); - if(s.substr(s.size() - 4, 4).upper() == ".OGA") + if(ext == "OGA") return new Ogg::FLAC::File(fileName, readAudioProperties, audioPropertiesStyle); - if(s.substr(s.size() - 5, 5).upper() == ".FLAC") + if(ext == "FLAC") return new FLAC::File(fileName, readAudioProperties, audioPropertiesStyle); - if(s.substr(s.size() - 4, 4).upper() == ".MPC") + if(ext == "MPC") return new MPC::File(fileName, readAudioProperties, audioPropertiesStyle); - if(s.substr(s.size() - 3, 3).upper() == ".WV") + if(ext == "WV") return new WavPack::File(fileName, readAudioProperties, audioPropertiesStyle); - if(s.substr(s.size() - 4, 4).upper() == ".SPX") + if(ext == "SPX") return new Ogg::Speex::File(fileName, readAudioProperties, audioPropertiesStyle); - if(s.substr(s.size() - 4, 4).upper() == ".TTA") + if(ext == "TTA") return new TrueAudio::File(fileName, readAudioProperties, audioPropertiesStyle); #ifdef WITH_MP4 - if(s.substr(s.size() - 4, 4).upper() == ".M4A" || - s.substr(s.size() - 4, 4).upper() == ".M4B" || - s.substr(s.size() - 4, 4).upper() == ".M4P" || - s.substr(s.size() - 4, 4).upper() == ".MP4" || - s.substr(s.size() - 4, 4).upper() == ".3G2") + if(ext == "M4A" || ext == "M4B" || ext == "M4P" || ext == "MP4" || ext == "3G2") return new MP4::File(fileName, readAudioProperties, audioPropertiesStyle); #endif #ifdef WITH_ASF - if(s.substr(s.size() - 4, 4).upper() == ".WMA") - return new ASF::File(fileName, readAudioProperties, audioPropertiesStyle); - if(s.substr(s.size() - 4, 4).upper() == ".ASF") + if(ext == "WMA" || ext == "ASF") return new ASF::File(fileName, readAudioProperties, audioPropertiesStyle); #endif - if(s.substr(s.size() - 4, 4).upper() == ".AIF") + if(ext == "AIF") return new RIFF::AIFF::File(fileName, readAudioProperties, audioPropertiesStyle); - if(s.substr(s.size() - 4, 4).upper() == ".WAV") + if(ext == "WAV") return new RIFF::WAV::File(fileName, readAudioProperties, audioPropertiesStyle); - } - if(s.size() > 5) { - if(s.substr(s.size() - 5, 5).upper() == ".AIFF") + if(ext == "AIFF") return new RIFF::AIFF::File(fileName, readAudioProperties, audioPropertiesStyle); }