From 058176316ee0b92a9d50d0c842690869af09e3de Mon Sep 17 00:00:00 2001 From: Fabio Rossi Date: Sat, 23 Apr 2016 22:19:52 +1000 Subject: Ark: info for folders in rar archives are now displayed as well. This relates to bug 2541. Signed-off-by: Fabio Rossi Patch updated and slightly reworked to fit TQt framework Signed-off-by: Michele Calgaro --- ark/rar.cpp | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) (limited to 'ark/rar.cpp') diff --git a/ark/rar.cpp b/ark/rar.cpp index e47c78a..103f4ce 100644 --- a/ark/rar.cpp +++ b/ark/rar.cpp @@ -133,13 +133,6 @@ bool RarArch::processLine( const TQCString &line ) if (m_version < VERSION_5) { - if( l2[5].startsWith("d") ) - { - // Folder item - m_isFirstLine = true; - return true; - } - list << m_entryFilename; // filename list << l2[ 0 ]; // size list << l2[ 1 ]; // packed @@ -151,19 +144,11 @@ bool RarArch::processLine( const TQCString &line ) list << l2[ 6 ]; // crc list << l2[ 7 ]; // method list << l2[ 8 ]; // Version - - m_gui->fileList()->addItem( list ); // send to GUI - + m_isFirstLine = true; } else { - if( l2[0].startsWith("d") ) - { - // Folder item - return true; - } - m_entryFilename = line.mid(line.find(l2[7])); list << m_entryFilename; // filename list << l2[ 1 ]; // size @@ -174,9 +159,18 @@ bool RarArch::processLine( const TQCString &line ) list << l2[ 4 ] + " " + l2[ 5 ]; // date and time list << l2[ 0 ]; // attributes list << l2[ 6 ]; // crc - - m_gui->fileList()->addItem( list ); // send to GUI } + // send to GUI + if ( l2[6] == "00000000" ) + { + // folders have CRC equal to 00000000 + // RAR utilities show the folders at the end of the listing so the folders + // have been already added to the listview at this point without specifying + // all the columns but the name. Update the item with the missing info + m_gui->fileList()->updateItem( list ); + } + else + m_gui->fileList()->addItem( list ); return true; } @@ -355,7 +349,7 @@ void RarArch::unarchFileInternal() bool RarArch::passwordRequired() { - return m_lastShellOutput.find("Enter password") >= 0; + return m_lastShellOutput.find("Enter password") >= 0 || m_lastShellOutput.find("encrypted") >= 0; } void RarArch::remove( TQStringList *list ) -- cgit v1.2.3