diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 2bda8f7717adf28da4af0d34fb82f63d2868c31d (patch) | |
tree | 8d927b7b47a90c4adb646482a52613f58acd6f8c /ark/tar.h | |
download | tdeutils-2bda8f7717adf28da4af0d34fb82f63d2868c31d.tar.gz tdeutils-2bda8f7717adf28da4af0d34fb82f63d2868c31d.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeutils@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'ark/tar.h')
-rw-r--r-- | ark/tar.h | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/ark/tar.h b/ark/tar.h new file mode 100644 index 0000000..544949a --- /dev/null +++ b/ark/tar.h @@ -0,0 +1,135 @@ +/* + +ark -- archiver for the KDE project + +Copyright (C) + +1997-1999: Rob Palmbos palm9744@kettering.edu +1999: Francois-Xavier Duranceau duranceau@kde.org +1999-2000: Corel Corporation (author: Emily Ezust, emilye@corel.com) +2001: Corel Corporation (author: Michael Jarrett, michaelj@corel.com) +2001: Roberto Selbach Teixeira <maragato@conectiva.com> +2003: Georg Robbers <Georg.Robbers@urz.uni-hd.de> +2006: Henrique Pinto <henrique.pinto@kdemail.net> + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +*/ + +#ifndef TAR_H +#define TAR_H + +#include <unistd.h> + + +class QString; +class QStrList; + +class KProcess; +class KTempDir; +class KTarDirectory; +class KTar; + +class ArkWidget; +class Arch; +class TarListingThread; + +// TarArch can read Tar files and Tar files compressed with gzip. +// It doesn't yet know how to list Tar files compressed with other +// compressors because the listing part is done through KTar. +// If it could be listed though, the rest would work. +// The reason we use KTar for listing is that the output tar -tvf is +// of unreliable format. + +class TarArch : public Arch +{ + Q_OBJECT + public: + TarArch( ArkWidget *_gui, const QString & _filename, + const QString & _openAsMimeType ); + virtual ~TarArch(); + + virtual void open(); + virtual void create(); + + virtual void addFile( const QStringList & ); + virtual void addDir( const QString & ); + virtual void remove( QStringList* ); + virtual void unarchFileInternal(); + + virtual int getEditFlag(); + + QString getCompressor(); + QString getUnCompressor(); + + public slots: + void updateProgress( KProcess *_kp, char *_buffer, int _bufflen ); + void openFinished( KProcess * ); + void updateFinished( KProcess * ); + void createTmpFinished( KProcess * ); + void createTmpProgress( KProcess *_kp, char *_buffer, int _bufflen ); + void slotAddFinished( KProcess * ); + void slotListingDone( KProcess * ); + void slotDeleteExited( KProcess * ); + + signals: + void removeDone(); + void createTempDone(); + void updateDone(); + + private slots: + void openFirstCreateTempDone(); + void deleteOldFilesDone(); + void addFileCreateTempDone(); + void addFinishedUpdateDone(); + void removeCreateTempDone(); + void removeUpdateDone(); + + protected: + void customEvent( QCustomEvent * ); + + private: // methods + void updateArch(); + void createTmp(); + void setHeaders(); + void processDir( const KTarDirectory *tardir, const QString & root ); + void deleteOldFiles( const QStringList &list, bool bAddOnlyNew ); + QString getEntry( const QString & filename ); + + private: // data + // if the tar is compressed, this is the temporary uncompressed tar. + KTempDir * m_tmpDir; + QString tmpfile; + QString m_fileMimeType; + bool compressed; + + // for use with createTmp and updateArch + bool createTmpInProgress; + bool updateInProgress; + + // for use with deleteOldFiles + bool deleteInProgress; + FILE *fd; + QStringList m_filesToAdd; + QStringList m_filesToRemove; + KProcess * m_pTmpProc; + KProcess * m_pTmpProc2; + bool failed; + bool m_dotslash; + TarListingThread *m_listingThread; +}; + +#endif /* TAR_H */ + |