You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeutils/ark/tar.h

138 lines
3.7 KiB

/*
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 TQString;
class TQStrList;
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 TQString & _filename,
const TQString & _openAsMimeType );
virtual ~TarArch();
virtual void open();
virtual void create();
virtual void test();
virtual void addFile( const TQStringList & );
virtual void addDir( const TQString & );
virtual void remove( TQStringList* );
virtual void unarchFileInternal();
virtual int getEditFlag();
TQString getCompressor();
TQString 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( TQCustomEvent * );
private: // methods
void updateArch();
void createTmp();
void setHeaders();
void processDir( const KTarDirectory *tardir, const TQString & root );
void deleteOldFiles( const TQStringList &list, bool bAddOnlyNew );
TQString getEntry( const TQString & filename );
private: // data
// if the tar is compressed, this is the temporary uncompressed tar.
KTempDir * m_tmpDir;
TQString tmpfile;
TQString m_fileMimeType;
bool compressed;
// for use with createTmp and updateArch
bool createTmpInProgress;
bool updateInProgress;
// for use with deleteOldFiles
bool deleteInProgress;
FILE *fd;
TQStringList m_filesToAdd;
TQStringList m_filesToRemove;
KProcess * m_pTmpProc;
KProcess * m_pTmpProc2;
bool failed;
bool m_dotslash;
TarListingThread *m_listingThread;
};
#endif /* TAR_H */