kio Library API Documentation

KArchive Class Reference

generic class for reading/writing archives More...

#include <karchive.h>

Inheritance diagram for KArchive:

Inheritance graph
[legend]
Collaboration diagram for KArchive:

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual bool open (int mode)
 Opens the archive for reading or writing.

virtual void close ()
 Closes the archive.

bool isOpened () const
int mode () const
QIODevicedevice () const
 The underlying device.

const KArchiveDirectorydirectory () const
 If an archive is opened for reading, then the contents of the archive can be accessed via this function.

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.

virtual bool writeFile (const QString &name, const QString &user, const QString &group, uint size, const char *data)
 If an archive is opened for writing then you can add a new file using this function.

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 device()->writeBlock() (for tar files) or writeData (for zip files) [NEW VIRTUAL METHOD NEEDED] as many times as wanted then call doneWriting( totalSize ) For tar.gz files, you need to know the size before hand, it is needed in the header! For zip files, size isn't used.

virtual bool doneWriting (uint size)=0
 Call doneWriting after writing the data.


Protected Member Functions

 KArchive (QIODevice *dev)
 Base constructor (protected since this is a pure virtual class).

virtual bool openArchive (int mode)=0
 Opens an archive for reading or writing.

virtual bool closeArchive ()=0
 Closes the archive.

virtual KArchiveDirectoryrootDir ()
 Retrieves or create the root directory.

KArchiveDirectoryfindOrCreate (const QString &path)
 Ensures that path exists, create otherwise.

void setDevice (QIODevice *dev)
void setRootDir (KArchiveDirectory *rootDir)
virtual void virtual_hook (int id, void *data)

Detailed Description

generic class for reading/writing archives

Author:
David Faure <faure@kde.org>

Definition at line 38 of file karchive.h.


Constructor & Destructor Documentation

KArchive::KArchive QIODevice dev  )  [protected]
 

Base constructor (protected since this is a pure virtual class).

Parameters:
dev the I/O device where the archive reads its data Note that this can be a file, but also a data buffer, a compression filter, etc.

Definition at line 69 of file karchive.cpp.


Member Function Documentation

bool KArchive::open int  mode  )  [virtual]
 

Opens the archive for reading or writing.

Parameters:
mode may be IO_ReadOnly or IO_WriteOnly Inherited classes might want to reimplement openArchive instead.
See also:
close

Definition at line 85 of file karchive.cpp.

References close(), QIODevice::open(), and openArchive().

void KArchive::close  )  [virtual]
 

Closes the archive.

Inherited classes might want to reimplement closeArchive instead.

See also:
open

Definition at line 105 of file karchive.cpp.

References QIODevice::close(), and closeArchive().

Referenced by open(), KAr::~KAr(), KTar::~KTar(), and KZip::~KZip().

bool KArchive::isOpened  )  const [inline]
 

Returns:
true if the archive is opened

Definition at line 70 of file karchive.h.

Referenced by KZip::prepareWriting(), KTar::prepareWriting(), KTar::setOrigFileName(), KTar::writeDir(), KAr::~KAr(), KTar::~KTar(), and KZip::~KZip().

int KArchive::mode  )  const [inline]
 

Returns:
the mode in which the archive was opened (IO_ReadOnly or IO_WriteOnly)

Definition at line 75 of file karchive.h.

Referenced by KZip::closeArchive(), KZip::prepareWriting(), KTar::prepareWriting(), KTar::setOrigFileName(), and KTar::writeDir().

QIODevice* KArchive::device  )  const [inline]
 

The underlying device.

Definition at line 80 of file karchive.h.

Referenced by KZip::closeArchive(), KArchiveFile::data(), KZip::doneWriting(), KTar::doneWriting(), KZip::openArchive(), KTar::openArchive(), KAr::openArchive(), KZip::prepareWriting(), KTar::prepareWriting(), KTar::setOrigFileName(), KTar::writeDir(), KZip::writeFile(), writeFile(), KAr::~KAr(), KTar::~KTar(), and KZip::~KZip().

const KArchiveDirectory * KArchive::directory  )  const
 

If an archive is opened for reading, then the contents of the archive can be accessed via this function.

Definition at line 120 of file karchive.cpp.

virtual bool KArchive::writeDir const QString name,
const QString user,
const QString group
[pure virtual]
 

If an archive is opened for writing then you can add new directories using this function.

KArchive won't write one directory twice.

Implemented in KAr, KTar, and KZip.

bool KArchive::writeFile const QString name,
const QString user,
const QString group,
uint  size,
const char *  data
[virtual]
 

If an archive is opened for writing then you can add a new file using this function.

If the file name is for example "mydir/test1" then the directory "mydir" is automatically appended first if that did not happen yet.

Reimplemented in KZip.

Definition at line 126 of file karchive.cpp.

References device(), doneWriting(), KStdAccel::name(), prepareWriting(), and QIODevice::writeBlock().

virtual bool KArchive::prepareWriting const QString name,
const QString user,
const QString group,
uint  size
[pure virtual]
 

Here's another way of writing a file into an archive: Call prepareWriting, then call device()->writeBlock() (for tar files) or writeData (for zip files) [NEW VIRTUAL METHOD NEEDED] as many times as wanted then call doneWriting( totalSize ) For tar.gz files, you need to know the size before hand, it is needed in the header! For zip files, size isn't used.

Implemented in KAr, KTar, and KZip.

Referenced by writeFile().

virtual bool KArchive::doneWriting uint  size  )  [pure virtual]
 

Call doneWriting after writing the data.

See also:
prepareWriting

Implemented in KAr, KTar, and KZip.

Referenced by writeFile().

virtual bool KArchive::openArchive int  mode  )  [protected, pure virtual]
 

Opens an archive for reading or writing.

Called by open.

Implemented in KAr, KTar, and KZip.

Referenced by open().

virtual bool KArchive::closeArchive  )  [protected, pure virtual]
 

Closes the archive.

Called by close.

Implemented in KAr, KTar, and KZip.

Referenced by close().

KArchiveDirectory * KArchive::rootDir  )  [protected, virtual]
 

Retrieves or create the root directory.

The default implementation assumes that openArchive() did the parsing, so it creates a dummy rootdir if none was set (write mode, or no '/' in the archive). Reimplement this to provide parsing/listing on demand.

Definition at line 151 of file karchive.cpp.

References QFile::decodeName(), QString::fromLatin1(), and QString::number().

Referenced by findOrCreate(), KZip::openArchive(), KTar::openArchive(), KAr::openArchive(), and KZip::prepareWriting().

KArchiveDirectory * KArchive::findOrCreate const QString path  )  [protected]
 

Ensures that path exists, create otherwise.

This handles e.g. tar files missing directory entries, like mico-2.3.0.tar.gz :)

Definition at line 166 of file karchive.cpp.

References KArchiveDirectory::addEntry(), KArchiveDirectory::entry(), QString::findRev(), KArchiveEntry::isDirectory(), QString::left(), QString::mid(), and rootDir().

Referenced by KZip::openArchive(), KTar::openArchive(), and KZip::prepareWriting().


The documentation for this class was generated from the following files:
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.5.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Wed Jan 28 13:14:58 2004 by doxygen 1.3.4 written by Dimitri van Heesch, © 1997-2001