From c55d4df4a9b97f63761abaeec83208735902f009 Mon Sep 17 00:00:00 2001 From: Ilkka Ollakka Date: Tue, 18 Aug 2009 17:52:01 +0300 Subject: [PATCH] taglib: decode psz_file so taglib gets normal path/filename to write metadata --- modules/meta_engine/taglib.cpp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/modules/meta_engine/taglib.cpp b/modules/meta_engine/taglib.cpp index 43ac697460..56d7be7bc2 100644 --- a/modules/meta_engine/taglib.cpp +++ b/modules/meta_engine/taglib.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #ifdef WIN32 # include @@ -529,21 +530,34 @@ static int WriteMeta( vlc_object_t *p_this ) return VLC_EGENERIC; } + char *export_file = strdup(p_export->psz_file); + if( decode_URI( export_file ) == NULL ) + { + free( export_file ); + return VLC_EGENERIC; + } + #if defined(WIN32) || defined (UNDER_CE) if(GetVersion() < 0x80000000) { wchar_t wpath[MAX_PATH + 1]; - if( !MultiByteToWideChar( CP_UTF8, 0, p_export->psz_file, -1, wpath, MAX_PATH) ) + if( !MultiByteToWideChar( CP_UTF8, 0, export_file , -1, wpath, MAX_PATH) ) return VLC_EGENERIC; wpath[MAX_PATH] = L'\0'; f = FileRef( wpath ); } else + { + free( export_file ); return VLC_EGENERIC; + } #else - const char* local_name = ToLocale( p_export->psz_file ); + const char* local_name = ToLocale( export_file ); if( !local_name ) + { + free( export_file ); return VLC_EGENERIC; + } f = FileRef( local_name ); LocaleFree( local_name ); #endif @@ -551,11 +565,13 @@ static int WriteMeta( vlc_object_t *p_this ) if( f.isNull() || !f.tag() || f.file()->readOnly() ) { msg_Err( p_this, "File %s can't be opened for tag writing", - p_export->psz_file ); + export_file ); + free( export_file ); return VLC_EGENERIC; } - msg_Dbg( p_this, "Writing metadata for %s", p_export->psz_file ); + msg_Dbg( p_this, "Writing metadata for %s", export_file ); + free( export_file ); Tag *p_tag = f.tag(); -- 2.39.2