summaryrefslogtreecommitdiffstats
path: root/ark/rar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ark/rar.cpp')
-rw-r--r--ark/rar.cpp32
1 files changed, 13 insertions, 19 deletions
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 )