ktar.h
/* This file is part of the KDE libraries
Copyright (C) 2000 David Faure <faure@kde.org>
Copyright (C) 2003 Leo Savernik <l.savernik@aon.at>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef __ktar_h
#define __ktar_h
#include <sys/stat.h>
#include <sys/types.h>
#include <qdatetime.h>
#include <qstring.h>
#include <qstringlist.h>
#include <qdict.h>
#include <karchive.h>
class KIO_EXPORT KTar : public KArchive
{
public:
KTar( const QString& filename, const QString & mimetype = QString::null );
KTar( QIODevice * dev );
virtual ~KTar();
QString fileName() { return m_filename; } // TODO KDE4 const
void setOrigFileName( const QCString & fileName );
// TODO(BIC) make virtual. For now it must be implemented by virtual_hook.
bool writeSymLink(const QString &name, const QString &target,
const QString &user, const QString &group,
mode_t perm, time_t atime, time_t mtime, time_t ctime);
virtual bool writeDir( const QString& name, const QString& user, const QString& group );
// TODO(BIC) make virtual. For now it must be implemented by virtual_hook.
bool writeDir( const QString& name, const QString& user, const QString& group,
mode_t perm, time_t atime, time_t mtime, time_t ctime );
virtual bool prepareWriting( const QString& name, const QString& user, const QString& group, uint size );
// TODO(BIC) make virtual. For now it must be implemented by virtual_hook.
bool prepareWriting( const QString& name, const QString& user,
const QString& group, uint size, mode_t perm,
time_t atime, time_t mtime, time_t ctime );
virtual bool doneWriting( uint size );
protected:
virtual bool openArchive( int mode );
virtual bool closeArchive();
private:
void prepareDevice( const QString & filename, const QString & mimetype, bool forced = false );
void fillBuffer( char * buffer, const char * mode, int size, time_t mtime,
char typeflag, const char * uname, const char * gname );
void writeLonglink(char *buffer, const QCString &name, char typeflag,
const char *uname, const char *gname);
Q_LONG readRawHeader(char *buffer);
bool readLonglink(char *buffer,QCString &longlink);
Q_LONG readHeader(char *buffer,QString &name,QString &symlink);
QString m_filename;
protected:
virtual void virtual_hook( int id, void* data );
bool prepareWriting_impl(const QString& name, const QString& user,
const QString& group, uint size, mode_t perm,
time_t atime, time_t mtime, time_t ctime);
bool writeDir_impl(const QString& name, const QString& user,
const QString& group, mode_t perm,
time_t atime, time_t mtime, time_t ctime );
bool writeSymLink_impl(const QString &name, const QString &target,
const QString &user, const QString &group,
mode_t perm, time_t atime, time_t mtime, time_t ctime);
private:
class KTarPrivate;
KTarPrivate * d;
};
#define KTarGz KTar
#define KTarEntry KArchiveEntry
#define KTarFile KArchiveFile
#define KTarDirectory KArchiveDirectory
#endif
KArchive
KArchive is a base class for reading and writing archives.
Definition: karchive.h:42
KArchive::doneWriting
virtual bool doneWriting(uint size)=0
Call doneWriting after writing the data.
KArchive::openArchive
virtual bool openArchive(int mode)=0
Opens an archive for reading or writing.
KTar
A class for reading / writing (optionally compressed) tar archives.
Definition: ktar.h:40
KTar::fileName
QString fileName()
The name of the tar file, as passed to the constructor Null if you used the QIODevice constructor...
Definition: ktar.h:76
KArchive::writeDir
virtual bool writeDir(const QString &name, const QString &user, const QString &group)=0
If an archive is opened for writing then you can add new directories using this function.
KArchive::writeSymLink
bool writeSymLink(const QString &name, const QString &target, const QString &user, const QString &group, mode_t perm, time_t atime, time_t mtime, time_t ctime)
Writes a symbolic link to the archive if the archive must be opened for writing.
Definition: karchive.cpp:327
KArchive::closeArchive
virtual bool closeArchive()=0
Closes the archive.
KArchive::prepareWriting
virtual bool prepareWriting(const QString &name, const QString &user, const QString &group, uint size)=0
Here's another way of writing a file into an archive: Call prepareWriting, then call writeData() as m...

KDE Home | KDE Accessibility Home | Description of Access Keys