1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-11 08:34:34 +02:00

Fix problems with reading files because of filename charsets.

This commit is contained in:
Dominik Schmidt
2011-01-16 17:41:38 +01:00
committed by Leo Franchi
parent b549ee24ac
commit f386de0f0d
3 changed files with 27 additions and 1 deletions

View File

@@ -14,6 +14,10 @@ ELSE()
ENDIF()
FIND_PACKAGE( Taglib 1.6.0 REQUIRED )
include(CheckTagLibFileName)
check_taglib_filename(COMPLEX_TAGLIB_FILENAME)
FIND_PACKAGE( LibLastFm REQUIRED )
FIND_PACKAGE( LibEchonest REQUIRED )

View File

@@ -0,0 +1,15 @@
# taglib changed filenames to be a char/wchar struct on some platforms, need to check for it
macro (CHECK_TAGLIB_FILENAME TAGLIB_FILENAME_COMPLEX)
include (CheckCXXSourceCompiles)
set (CMAKE_REQUIRED_FLAGS ${TAGLIB_CFLAGS})
set (CMAKE_REQUIRED_INCLUDES ${TAGLIB_INCLUDES})
set (CMAKE_REQUIRED_LIBRARIES ${TAGLIB_LIBRARIES})
check_cxx_source_compiles(
"#include <tfile.h>
int main()
{
TagLib::FileName fileName1("char");
TagLib::FileName fileName2(L"wchar");
return 0;
}" ${TAGLIB_FILENAME_COMPLEX})
endmacro (CHECK_TAGLIB_FILENAME)

View File

@@ -160,7 +160,14 @@ MusicScanner::readFile( const QFileInfo& fi )
if( m_scanned % 100 == 0 )
qDebug() << "SCAN" << m_scanned << fi.absoluteFilePath();
TagLib::FileRef f( fi.absoluteFilePath().toUtf8().constData() );
#ifdef COMPLEX_TAGLIB_FILENAME
const wchar_t *encodedName = reinterpret_cast< const wchar_t *>(fi.absoluteFilePath().utf16());
#else
QByteArray fileName = QFile::encodeName( fi.absoluteFilePath() );
const char *encodedName = fileName.constData();
#endif
TagLib::FileRef f( encodedName );
if ( f.isNull() || !f.tag() )
{
// qDebug() << "Doesn't seem to be a valid audiofile:" << fi.absoluteFilePath();