[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/multimedia/amarok
From:       Shane King <kde () dontletsstart ! com>
Date:       2007-11-22 12:26:33
Message-ID: 1195734393.623423.700.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 740046 by shakes:

TagLib classes should now handle wchar_t style unicode filenames on windows


 M  +1 -1      cmake/modules/CheckTagLibFileName.cmake  
 M  +1 -0      src/metadata/CMakeLists.txt  
 M  +1 -2      src/metadata/aac/aacfiletyperesolver.cpp  
 M  +1 -1      src/metadata/audible/taglib_audiblefile.cpp  
 M  +2 -3      src/metadata/audible/taglib_audiblefiletyperesolver.cpp  
 M  +4 -5      src/metadata/m4a/taglib_mp4filetyperesolver.cpp  
 M  +4 -5      src/metadata/mp4/taglib_mp4filetyperesolver.cpp  
 M  +2 -3      src/metadata/rmff/taglib_realmediafiletyperesolver.cpp  
 M  +1 -2      src/metadata/speex/taglib_speexfiletyperesolver.cpp  
 AM            src/metadata/tfile_helper.cpp   [License: LGPL (v2.1)]
 M  +13 -0     src/metadata/tfile_helper.h  
 M  +1 -2      src/metadata/trueaudio/taglib_trueaudiofiletyperesolver.cpp  
 M  +1 -1      src/metadata/wav/wavfile.cpp  
 M  +2 -3      src/metadata/wav/wavfiletyperesolver.cpp  
 M  +1 -2      src/metadata/wavpack/taglib_wavpackfiletyperesolver.cpp  
 M  +1 -2      src/metadata/wma/taglib_wmafiletyperesolver.cpp  


--- trunk/extragear/multimedia/amarok/cmake/modules/CheckTagLibFileName.cmake \
#740045:740046 @@ -8,7 +8,7 @@
 	"#include <tfile.h>
 	int main()
 	{
-		TagLib::FileName fileName;
+		TagLib::FileName fileName = \"char\";
 		return 0;
 	}" ${TAGLIB_FILENAME_EXISTS})
 	if (${TAGLIB_FILENAME_EXISTS})
--- trunk/extragear/multimedia/amarok/src/metadata/CMakeLists.txt #740045:740046
@@ -113,6 +113,7 @@
 
 SET(amarok_taglib_SRCS
         tplugins.cpp
+		tfile_helper.cpp
         ${libtagmp4_SRCS}
         ${libtagaudible_SRCS}
         ${libtagrealmedia_SRCS}
--- trunk/extragear/multimedia/amarok/src/metadata/aac/aacfiletyperesolver.cpp \
#740045:740046 @@ -28,8 +28,7 @@
         bool readProperties,
         TagLib::AudioProperties::ReadStyle propertiesStyle) const
 {
-    const char *ext = strrchr(fileName, '.');
-    if(ext && !strcasecmp(ext, ".aac"))
+    if(CheckExtension(fileName, ".aac"))
     {
         return new TagLib::MPEG::File(fileName, readProperties, propertiesStyle);
     }
--- trunk/extragear/multimedia/amarok/src/metadata/audible/taglib_audiblefile.cpp \
#740045:740046 @@ -54,7 +54,7 @@
     if(fp)
         audiblefile = fp;
     else
-        audiblefile = fopen(file, "rb");
+        audiblefile = TagLibOpenFile(file, "rb");
 
     if( isOpen() )
     {
--- trunk/extragear/multimedia/amarok/src/metadata/audible/taglib_audiblefiletyperesolver.cpp \
#740045:740046 @@ -28,10 +28,9 @@
         bool readProperties,
         TagLib::AudioProperties::ReadStyle propertiesStyle) const
 {
-    const char *ext = strrchr(fileName, '.');
-    if(ext && !strcasecmp(ext, ".aa"))
+    if(CheckExtension(fileName, ".aa"))
     {
-        FILE *fp = fopen(fileName, "rb");
+        FILE *fp = TagLibOpenFile(fileName, "rb");
         if(!fp)
             return 0;
 
--- trunk/extragear/multimedia/amarok/src/metadata/m4a/taglib_mp4filetyperesolver.cpp \
#740045:740046 @@ -29,11 +29,10 @@
         TagLib::AudioProperties::ReadStyle propertiesStyle) const
 {
 //     fprintf(stderr, "mp4?: %s\n", fileName);
-    const char *ext = strrchr(fileName, '.');
-    if(ext && (!strcasecmp(ext, ".m4a")
-                || !strcasecmp(ext, ".m4b") || !strcasecmp(ext, ".m4p")
-                || !strcasecmp(ext, ".mp4")
-                || !strcasecmp(ext, ".m4v") || !strcasecmp(ext, ".mp4v")))
+    if(CheckExtension(fileName, ".m4a")
+                || CheckExtension(fileName, ".m4b") || !CheckExtension(fileName, \
".m4p") +                || CheckExtension(fileName, ".mp4")
+                || CheckExtension(fileName, ".m4v") || CheckExtension(fileName, \
".mp4v"))  {
         return new TagLib::MP4::File(fileName, readProperties, propertiesStyle);
     }
--- trunk/extragear/multimedia/amarok/src/metadata/mp4/taglib_mp4filetyperesolver.cpp \
#740045:740046 @@ -29,11 +29,10 @@
         bool readProperties,
         TagLib::AudioProperties::ReadStyle propertiesStyle) const
 {
-    const char *ext = strrchr(fileName, '.');
-    if(ext && (!strcasecmp(ext, ".m4a")
-                || !strcasecmp(ext, ".m4b") || !strcasecmp(ext, ".m4p")
-                || !strcasecmp(ext, ".mp4")
-                || !strcasecmp(ext, ".m4v") || !strcasecmp(ext, ".mp4v")))
+    if(CheckExtension(fileName, ".m4a")
+                || CheckExtension(fileName, ".m4b") || CheckExtension(fileName, \
".m4p") +                || CheckExtension(fileName, ".mp4")
+                || CheckExtension(fileName, ".m4v") || CheckExtension(fileName, \
".mp4v"))  {
         MP4FileHandle h = MP4Read(fileName, 0);
         if(MP4_INVALID_FILE_HANDLE == h)
--- trunk/extragear/multimedia/amarok/src/metadata/rmff/taglib_realmediafiletyperesolver.cpp \
#740045:740046 @@ -36,9 +36,8 @@
                                                     bool readProperties,
                                                     \
TagLib::AudioProperties::ReadStyle propertiesStyle) const  {
-   const char *ext = strrchr(fileName, '.');
-   if(ext && (!strcasecmp(ext, ".ra") || !strcasecmp(ext, ".rv") || !strcasecmp(ext, \
                ".rm") || 
-         !strcasecmp(ext, ".rmj") || !strcasecmp(ext, ".rmvb") ))
+   if(CheckExtension(fileName, ".ra") || CheckExtension(fileName, ".rv") || \
CheckExtension(fileName, ".rm") ||  +         CheckExtension(fileName, ".rmj") || \
CheckExtension(fileName, ".rmvb"))  {
       TagLib::RealMedia::File *f = new TagLib::RealMedia::File(fileName, \
readProperties, propertiesStyle);  if(f->isValid())
--- trunk/extragear/multimedia/amarok/src/metadata/speex/taglib_speexfiletyperesolver.cpp \
#740045:740046 @@ -28,8 +28,7 @@
         bool readProperties,
         TagLib::AudioProperties::ReadStyle propertiesStyle) const
 {
-    const char *ext = strrchr(fileName, '.');
-    if(ext && !strcasecmp(ext, ".spx"))
+    if(CheckExtension(fileName, ".spx"))
     {
         TagLib::Speex::File *f = new TagLib::Speex::File(fileName, readProperties, \
propertiesStyle);  if(f->isValid())
** trunk/extragear/multimedia/amarok/src/metadata/tfile_helper.cpp #property \
svn:eol-style  + native
--- trunk/extragear/multimedia/amarok/src/metadata/tfile_helper.h #740045:740046
@@ -33,4 +33,17 @@
 #define TagLibFileName const char *
 #endif
 
+// need to be able to deal with either the straight forward char version
+// or a char/wchar hybrid version of the filename
+#ifdef COMPLEX_TAGLIB_FILENAME
+#define CheckExtension(filename, extension) ((const char *)filename == 0 ? \
CheckExtensionImpl((const wchar_t *)filename, L##extension) : \
CheckExtensionImpl((const char *)filename, extension)) +#define \
TagLibOpenFile(filename, mode) ((const char *)filename == 0 ? _wfopen(filename, \
L##mode) : fopen(filename, mode)) +#else
+#define CheckExtension(filename, extension) CheckExtensionImpl(filename, extension)
+#define TagLibOpenFile(filename, mode) fopen(filename, mode)
+#endif
+
+bool CheckExtensionImpl(const char *fileName, const char *extension);
+bool CheckExtensionImpl(const wchar_t *fileName, const wchar_t *extension);
+
 #endif // TFILE_HELPER_H
--- trunk/extragear/multimedia/amarok/src/metadata/trueaudio/taglib_trueaudiofiletyperesolver.cpp \
#740045:740046 @@ -28,8 +28,7 @@
         bool readProperties,
         TagLib::AudioProperties::ReadStyle propertiesStyle) const
 {
-    const char *ext = strrchr(fileName, '.');
-    if(ext && !strcasecmp(ext, ".tta"))
+    if(CheckExtension(fileName, ".tta"))
     {
         TagLib::TTA::File *f = new TagLib::TTA::File(fileName, readProperties, \
propertiesStyle);  if(f->isValid())
--- trunk/extragear/multimedia/amarok/src/metadata/wav/wavfile.cpp #740045:740046
@@ -53,7 +53,7 @@
     if(fp)
         wavfile = fp;
     else
-        wavfile = fopen(file, "rb");
+        wavfile = TagLibOpenFile(file, "rb");
 
     if( isOpen() )
     {
--- trunk/extragear/multimedia/amarok/src/metadata/wav/wavfiletyperesolver.cpp \
#740045:740046 @@ -28,10 +28,9 @@
         bool readProperties,
         TagLib::AudioProperties::ReadStyle propertiesStyle) const
 {
-    const char *ext = strrchr(fileName, '.');
-    if(ext && !strcasecmp(ext, ".wav"))
+    if(CheckExtension(fileName, ".wav"))
     {
-        FILE *fp = fopen(fileName, "rb");
+        FILE *fp = TagLibOpenFile(fileName, "rb");
         if(!fp)
             return 0;
 
--- trunk/extragear/multimedia/amarok/src/metadata/wavpack/taglib_wavpackfiletyperesolver.cpp \
#740045:740046 @@ -28,8 +28,7 @@
         bool readProperties,
         TagLib::AudioProperties::ReadStyle propertiesStyle) const
 {
-    const char *ext = strrchr(fileName, '.');
-    if(ext && !strcasecmp(ext, ".wv"))
+    if(CheckExtension(fileName, ".wv"))
     {
         TagLib::WavPack::File *f = new TagLib::WavPack::File(fileName, \
readProperties, propertiesStyle);  if(f->isValid())
--- trunk/extragear/multimedia/amarok/src/metadata/wma/taglib_wmafiletyperesolver.cpp \
#740045:740046 @@ -31,8 +31,7 @@
         bool readProperties,
         TagLib::AudioProperties::ReadStyle propertiesStyle) const
 {
-    const char *ext = strrchr(fileName, '.');
-    if(ext && (!strcasecmp(ext, ".wma") || !strcasecmp(ext, ".asf")))
+    if(CheckExtension(fileName, ".wma") || CheckExtension(fileName, ".asf"))
     {
         TagLib::WMA::File *f = new TagLib::WMA::File(fileName, readProperties, \
propertiesStyle);  if(f->isValid())


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic