summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ark/tarlistingthread.cpp16
-rw-r--r--ark/tarlistingthread.h3
2 files changed, 12 insertions, 7 deletions
diff --git a/ark/tarlistingthread.cpp b/ark/tarlistingthread.cpp
index 83154c4..9d903c3 100644
--- a/ark/tarlistingthread.cpp
+++ b/ark/tarlistingthread.cpp
@@ -79,29 +79,33 @@ static char *makeAccessString(mode_t mode)
}
TarListingThread::TarListingThread( TQObject *parent, const TQString& filename )
- : TQThread(), m_parent( parent )
+ : TQThread(), m_parent( parent ), m_archive(NULL)
{
Q_ASSERT( m_parent );
- m_archive = new KTar( filename );
+ m_archiveFileName = filename;
}
TarListingThread::~TarListingThread()
{
- delete m_archive;
- m_archive = 0;
+ if (m_archive) {
+ delete m_archive;
+ m_archive = 0;
+ }
}
void TarListingThread::run()
{
+ m_archive = new KTar( m_archiveFileName );
+
if (!m_archive->open( IO_ReadOnly ))
{
ListingEvent *ev = new ListingEvent( TQStringList(), ListingEvent::Error );
tqApp->postEvent( m_parent, ev );
return;
}
-
+
processDir( m_archive->directory(), TQString() );
-
+
// Send an empty TQStringList in an Event to signal the listing end.
ListingEvent *ev = new ListingEvent( TQStringList(), ListingEvent::ListingFinished );
tqApp->postEvent( m_parent, ev );
diff --git a/ark/tarlistingthread.h b/ark/tarlistingthread.h
index 070b483..ab675f1 100644
--- a/ark/tarlistingthread.h
+++ b/ark/tarlistingthread.h
@@ -55,7 +55,8 @@ class TarListingThread: public TQThread
private:
void processDir( const KTarDirectory *tardir, const TQString & root );
-
+
+ TQString m_archiveFileName;
KArchive *m_archive;
TQObject *m_parent;
};