From 8b9f540b428d5b2141c6f17893fc2cb0c9ecdbf2 Mon Sep 17 00:00:00 2001 From: tpearson Date: Tue, 7 Sep 2010 22:57:14 +0000 Subject: [PATCH] * Merged bugfix patches from Chakra project git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeutils@1172733 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- ark/arch.cpp | 10 ++++++++-- ark/arkwidget.cpp | 2 +- ark/rar.cpp | 18 +++++++++++++----- ark/zip.cpp | 10 +++++++--- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/ark/arch.cpp b/ark/arch.cpp index a08484c..92e7424 100644 --- a/ark/arch.cpp +++ b/ark/arch.cpp @@ -33,6 +33,7 @@ // QT includes #include #include +#include // KDE includes #include @@ -330,15 +331,20 @@ void Arch::slotReceivedTOC( KProcess*, char* data, int length ) bool Arch::processLine( const TQCString &line ) { TQString columns[ 11 ]; + TQString unicode_line; unsigned int pos = 0; int strpos, len; + TQTextCodec *codec = TQTextCodec::codecForLocale(); + unicode_line = codec->toUnicode( line ); + + // Go through our columns, try to pick out data, return silently on failure for ( TQPtrListIterator col( m_archCols ); col.current(); ++col ) { ArchColumns *curCol = *col; - strpos = curCol->pattern.search( line, pos ); + strpos = curCol->pattern.search( unicode_line, pos ); len = curCol->pattern.matchedLength(); if ( ( strpos == -1 ) || ( len > curCol->maxLength ) ) @@ -354,7 +360,7 @@ bool Arch::processLine( const TQCString &line ) pos = strpos + len; - columns[curCol->colRef] = TQString::fromLocal8Bit( line.mid(strpos, len) ); + columns[curCol->colRef] = TQString::fromLocal8Bit( unicode_line.mid(strpos, len) ); } diff --git a/ark/arkwidget.cpp b/ark/arkwidget.cpp index 4ced49a..0814b00 100644 --- a/ark/arkwidget.cpp +++ b/ark/arkwidget.cpp @@ -1533,7 +1533,7 @@ ArkWidget::action_extract() it != selectedFiles.constEnd(); ++it ) { - m_extractList->append( TQFile::encodeName( *it ) ); + m_extractList->append( *it ); } if (!bOvwrt) diff --git a/ark/rar.cpp b/ark/rar.cpp index 554fdfc..5219b08 100644 --- a/ark/rar.cpp +++ b/ark/rar.cpp @@ -32,6 +32,7 @@ // QT includes #include #include +#include // KDE includes #include @@ -89,9 +90,14 @@ RarArch::RarArch( ArkWidget *_gui, const TQString & _fileName ) bool RarArch::processLine( const TQCString &line ) { + TQString unicode_line; + + TQTextCodec *codec = TQTextCodec::codecForLocale(); + unicode_line = codec->toUnicode( line ); + if ( m_isFirstLine ) { - m_entryFilename = TQString::fromLocal8Bit( line ); + m_entryFilename = TQString::fromLocal8Bit( unicode_line ); m_entryFilename.remove( 0, 1 ); m_isFirstLine = false; return true; @@ -99,7 +105,7 @@ bool RarArch::processLine( const TQCString &line ) TQStringList list; - TQStringList l2 = TQStringList::split( ' ', line ); + TQStringList l2 = TQStringList::split( ' ', unicode_line ); list << m_entryFilename; // filename list << l2[ 0 ]; // size @@ -253,8 +259,10 @@ void RarArch::unarchFileInternal() { *kp << "-o-"; } + + TQTextCodec *codec = TQTextCodec::codecForLocale(); - *kp << m_filename; + *kp << codec->fromUnicode(m_filename); // if the file list is empty, no filenames go on the command line, // and we then extract everything in the archive. @@ -263,11 +271,11 @@ void RarArch::unarchFileInternal() TQStringList::Iterator it; for ( it = m_fileList->begin(); it != m_fileList->end(); ++it ) { - *kp << (*it); + *kp << codec->fromUnicode(*it); } } - *kp << m_destDir ; + *kp << codec->fromUnicode(m_destDir); connect( kp, TQT_SIGNAL( receivedStdout(KProcess*, char*, int) ), TQT_SLOT( slotReceivedOutput(KProcess*, char*, int) ) ); diff --git a/ark/zip.cpp b/ark/zip.cpp index f223016..ef66988 100644 --- a/ark/zip.cpp +++ b/ark/zip.cpp @@ -28,6 +28,7 @@ // Qt includes #include +#include // KDE includes #include @@ -207,8 +208,10 @@ void ZipArch::unarchFileInternal() *kp << "-o"; else *kp << "-n"; + + TQTextCodec *codec = TQTextCodec::codecForLocale(); - *kp << m_filename; + *kp << codec->fromUnicode(m_filename); // if the list is empty, no filenames go on the command line, // and we then extract everything in the archive. @@ -218,11 +221,12 @@ void ZipArch::unarchFileInternal() for ( it = m_fileList->begin(); it != m_fileList->end(); ++it ) { - *kp << (*it); + *kp << codec->fromUnicode(*it); } } - *kp << "-d" << m_destDir; + *kp << "-d"; + *kp << codec->fromUnicode(m_destDir); connect( kp, TQT_SIGNAL( receivedStdout(KProcess*, char*, int) ), TQT_SLOT( slotReceivedOutput(KProcess*, char*, int) ) );