]> granicus.if.org Git - taglib/commitdiff
Simplify extension checking in FileRef
authorLukáš Lalinský <lalinsky@gmail.com>
Wed, 29 Apr 2009 16:00:39 +0000 (16:00 +0000)
committerLukáš Lalinský <lalinsky@gmail.com>
Wed, 29 Apr 2009 16:00:39 +0000 (16:00 +0000)
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@961189 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

taglib/fileref.cpp

index 1f368533391d946f0e7da4021d4684c2a5ef6c48..0e1ce57e6d0ec482a37d870b9ee79c98ea18700e 100644 (file)
@@ -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);
   }