• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 API Reference
  • KDE Home
  • Contact Us
 

KDECore

  • kdecore
  • io
karchive.h
Go to the documentation of this file.
1/* This file is part of the KDE libraries
2 Copyright (C) 2000-2005 David Faure <faure@kde.org>
3 Copyright (C) 2003 Leo Savernik <l.savernik@aon.at>
4
5 Moved from ktar.h by Roberto Teixeira <maragato@kde.org>
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Library General Public
9 License version 2 as published by the Free Software Foundation.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details.
15
16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA.
20*/
21#ifndef KARCHIVE_H
22#define KARCHIVE_H
23
24#include <sys/stat.h>
25#include <sys/types.h>
26
27#include <QtCore/QDate>
28#include <QtCore/QString>
29#include <QtCore/QStringList>
30#include <QtCore/QHash>
31
32#include <kdecore_export.h>
33
34class KArchiveDirectory;
35class KArchiveFile;
36
37class KArchivePrivate;
43class KDECORE_EXPORT KArchive
44{
45protected:
52 KArchive( const QString& fileName );
53
61 KArchive( QIODevice * dev );
62
63public:
64 virtual ~KArchive();
65
72 virtual bool open( QIODevice::OpenMode mode );
73
81 virtual bool close();
82
87 bool isOpen() const;
88
94 QIODevice::OpenMode mode() const;
95
100 QIODevice * device() const;
101
107 QString fileName() const;
108
114 const KArchiveDirectory* directory() const;
115
126 bool addLocalFile( const QString& fileName, const QString& destName );
127
139 bool addLocalDirectory( const QString& path, const QString& destName );
140
141 enum { UnknownTime = static_cast<time_t>( -1 ) };
142
158 virtual bool writeDir( const QString& name, const QString& user, const QString& group,
159 mode_t perm = 040755, time_t atime = UnknownTime,
160 time_t mtime = UnknownTime, time_t ctime = UnknownTime );
161
175 virtual bool writeSymLink(const QString &name, const QString &target,
176 const QString &user, const QString &group,
177 mode_t perm = 0120755, time_t atime = UnknownTime,
178 time_t mtime = UnknownTime, time_t ctime = UnknownTime );
179
199 virtual bool writeFile( const QString& name, const QString& user, const QString& group,
200 const char* data, qint64 size,
201 mode_t perm = 0100644, time_t atime = UnknownTime,
202 time_t mtime = UnknownTime, time_t ctime = UnknownTime );
203
223 virtual bool prepareWriting( const QString& name, const QString& user,
224 const QString& group, qint64 size,
225 mode_t perm = 0100644, time_t atime = UnknownTime,
226 time_t mtime = UnknownTime, time_t ctime = UnknownTime );
227
231 virtual bool writeData( const char* data, qint64 size );
232
238 virtual bool finishWriting( qint64 size );
239
240protected:
246 virtual bool openArchive( QIODevice::OpenMode mode ) = 0;
247
252 virtual bool closeArchive() = 0;
253
261 virtual KArchiveDirectory* rootDir();
262
278 virtual bool doWriteDir( const QString& name, const QString& user, const QString& group,
279 mode_t perm, time_t atime, time_t mtime, time_t ctime ) = 0;
280
295 virtual bool doWriteSymLink(const QString &name, const QString &target,
296 const QString &user, const QString &group,
297 mode_t perm, time_t atime, time_t mtime, time_t ctime) = 0;
298
314 virtual bool doPrepareWriting( const QString& name, const QString& user,
315 const QString& group, qint64 size, mode_t perm,
316 time_t atime, time_t mtime, time_t ctime ) = 0;
317
325 virtual bool doFinishWriting( qint64 size ) = 0;
326
333 KArchiveDirectory * findOrCreate( const QString & path );
334
341 virtual bool createDevice( QIODevice::OpenMode mode );
342
347 void setDevice( QIODevice *dev );
348
353 void setRootDir( KArchiveDirectory *rootDir );
354
355protected:
356 virtual void virtual_hook( int id, void* data );
357private:
358 KArchivePrivate* const d;
359};
360
361class KArchiveEntryPrivate;
369class KDECORE_EXPORT KArchiveEntry
370{
371public:
382 KArchiveEntry( KArchive* archive, const QString& name, int access, int date,
383 const QString& user, const QString& group,
384 const QString& symlink );
385
386 virtual ~KArchiveEntry();
387
392 QDateTime datetime() const;
393
398 int date() const;
399
404 QString name() const;
410 mode_t permissions() const;
415 QString user() const;
420 QString group() const;
421
426 QString symLinkTarget() const;
427
432 virtual bool isFile() const;
433
438 virtual bool isDirectory() const;
439
440protected:
441 KArchive* archive() const;
442
443protected:
444 virtual void virtual_hook( int id, void* data );
445private:
446 KArchiveEntryPrivate* const d;
447};
448
449class KArchiveFilePrivate;
457class KDECORE_EXPORT KArchiveFile : public KArchiveEntry
458{
459public:
472 KArchiveFile( KArchive* archive, const QString& name, int access, int date,
473 const QString& user, const QString& group, const QString &symlink,
474 qint64 pos, qint64 size );
475
479 virtual ~KArchiveFile();
480
485 qint64 position() const;
490 qint64 size() const;
495 void setSize( qint64 s );
496
502 virtual QByteArray data() const;
503
514 virtual QIODevice *createDevice() const;
515
520 virtual bool isFile() const;
521
526 void copyTo(const QString& dest) const;
527
528protected:
529 virtual void virtual_hook( int id, void* data );
530private:
531 KArchiveFilePrivate* const d;
532};
533
534class KArchiveDirectoryPrivate;
542class KDECORE_EXPORT KArchiveDirectory : public KArchiveEntry
543{
544public:
555 KArchiveDirectory( KArchive* archive, const QString& name, int access, int date,
556 const QString& user, const QString& group,
557 const QString& symlink);
558
559 virtual ~KArchiveDirectory();
560
568 QStringList entries() const;
574 const KArchiveEntry* entry( const QString& name ) const;
575
580 void addEntry( KArchiveEntry* );
581
586 void removeEntry( KArchiveEntry* );
587
592 virtual bool isDirectory() const;
593
600 void copyTo(const QString& dest, bool recursive = true) const;
601
602protected:
603 virtual void virtual_hook( int id, void* data );
604private:
605 KArchiveDirectoryPrivate* const d;
606};
607
608#endif
KArchiveDirectory
Represents a directory entry in a KArchive.
Definition karchive.h:543
KArchiveDirectory::addEntry
void addEntry(KArchiveEntry *)
Definition karchive.cpp:757
KArchiveDirectory::virtual_hook
virtual void virtual_hook(int id, void *data)
Definition karchive.cpp:880
KArchiveDirectory::entries
QStringList entries() const
Returns a list of sub-entries.
Definition karchive.cpp:716
KArchiveDirectory::removeEntry
void removeEntry(KArchiveEntry *)
Definition karchive.cpp:770
KArchiveDirectory::entry
const KArchiveEntry * entry(const QString &name) const
Returns the entry with the given name.
Definition karchive.cpp:721
KArchiveDirectory::KArchiveDirectory
KArchiveDirectory(KArchive *archive, const QString &name, int access, int date, const QString &user, const QString &group, const QString &symlink)
Creates a new directory entry.
Definition karchive.cpp:702
KArchiveDirectory::copyTo
void copyTo(const QString &dest, bool recursive=true) const
Extracts all entries in this archive directory to the directory dest.
Definition karchive.cpp:800
KArchiveDirectory::isDirectory
virtual bool isDirectory() const
Checks whether this entry is a directory.
Definition karchive.cpp:791
KArchiveEntry::date
int date() const
Creation date of the file.
Definition karchive.cpp:546
KArchiveEntry::permissions
mode_t permissions() const
The permissions and mode flags as returned by the stat() function in st_mode.
Definition karchive.cpp:556
KArchiveEntry::user
QString user() const
User who created the file.
Definition karchive.cpp:561
KArchiveEntry::virtual_hook
virtual void virtual_hook(int id, void *data)
Definition karchive.cpp:874
KArchiveEntry::archive
KArchive * archive() const
Definition karchive.cpp:586
KArchiveEntry::isDirectory
virtual bool isDirectory() const
Checks whether the entry is a directory.
Definition karchive.cpp:581
KArchiveEntry::group
QString group() const
Group of the user who created the file.
Definition karchive.cpp:566
KArchiveEntry::name
QString name() const
Name of the file without path.
Definition karchive.cpp:551
KArchiveEntry::symLinkTarget
QString symLinkTarget() const
Symlink if there is one.
Definition karchive.cpp:571
KArchiveEntry::datetime
QDateTime datetime() const
Creation date of the file.
Definition karchive.cpp:539
KArchiveEntry::KArchiveEntry
KArchiveEntry(KArchive *archive, const QString &name, int access, int date, const QString &user, const QString &group, const QString &symlink)
Creates a new entry.
Definition karchive.cpp:527
KArchiveEntry::isFile
virtual bool isFile() const
Checks whether the entry is a file.
Definition karchive.cpp:576
KArchiveFile
Represents a file entry in a KArchive.
Definition karchive.h:458
KArchiveFile::virtual_hook
virtual void virtual_hook(int id, void *data)
Definition karchive.cpp:877
KArchiveFile::size
qint64 size() const
Size of the data.
Definition karchive.cpp:625
KArchiveFile::createDevice
virtual QIODevice * createDevice() const
This method returns QIODevice (internal class: KLimitedIODevice) on top of the underlying QIODevice.
Definition karchive.cpp:652
KArchiveFile::data
virtual QByteArray data() const
Returns the data of the file.
Definition karchive.cpp:635
KArchiveFile::setSize
void setSize(qint64 s)
Set size of data, usually after writing the file.
Definition karchive.cpp:630
KArchiveFile::copyTo
void copyTo(const QString &dest) const
Extracts the file to the directory dest.
Definition karchive.cpp:662
KArchiveFile::position
qint64 position() const
Position of the data in the [uncompressed] archive.
Definition karchive.cpp:620
KArchiveFile::KArchiveFile
KArchiveFile(KArchive *archive, const QString &name, int access, int date, const QString &user, const QString &group, const QString &symlink, qint64 pos, qint64 size)
Creates a new file entry.
Definition karchive.cpp:606
KArchiveFile::isFile
virtual bool isFile() const
Checks whether this entry is a file.
Definition karchive.cpp:657
KArchive
KArchive is a base class for reading and writing archives.
Definition karchive.h:44
KArchive::device
QIODevice * device() const
The underlying device.
Definition karchive.cpp:475
KArchive::createDevice
virtual bool createDevice(QIODevice::OpenMode mode)
Can be reimplemented in order to change the creation of the device (when using the fileName construct...
Definition karchive.cpp:131
KArchive::close
virtual bool close()
Closes the archive.
Definition karchive.cpp:164
KArchive::doFinishWriting
virtual bool doFinishWriting(qint64 size)=0
Called after writing the data.
KArchive::UnknownTime
@ UnknownTime
Definition karchive.h:141
KArchive::addLocalFile
bool addLocalFile(const QString &fileName, const QString &destName)
Writes a local file into the archive.
Definition karchive.cpp:205
KArchive::rootDir
virtual KArchiveDirectory * rootDir()
Retrieves or create the root directory.
Definition karchive.cpp:391
KArchive::doWriteDir
virtual bool doWriteDir(const QString &name, const QString &user, const QString &group, mode_t perm, time_t atime, time_t mtime, time_t ctime)=0
Write a directory to the archive.
KArchive::KArchive
KArchive(const QString &fileName)
Base constructor (protected since this is a pure virtual class).
Definition karchive.cpp:81
KArchive::virtual_hook
virtual void virtual_hook(int id, void *data)
Definition karchive.cpp:871
KArchive::open
virtual bool open(QIODevice::OpenMode mode)
Opens the archive for reading or writing.
Definition karchive.cpp:104
KArchive::closeArchive
virtual bool closeArchive()=0
Closes the archive.
KArchive::directory
const KArchiveDirectory * directory() const
If an archive is opened for reading, then the contents of the archive can be accessed via this functi...
Definition karchive.cpp:198
KArchive::openArchive
virtual bool openArchive(QIODevice::OpenMode mode)=0
Opens an archive for reading or writing.
KArchive::doWriteSymLink
virtual bool doWriteSymLink(const QString &name, const QString &target, const QString &user, const QString &group, mode_t perm, time_t atime, time_t mtime, time_t ctime)=0
Writes a symbolic link to the archive.
KArchive::findOrCreate
KArchiveDirectory * findOrCreate(const QString &path)
Ensures that path exists, create otherwise.
Definition karchive.cpp:406
KArchive::addLocalDirectory
bool addLocalDirectory(const QString &path, const QString &destName)
Writes a local directory into the archive, including all its contents, recursively.
Definition karchive.cpp:293
KArchive::mode
QIODevice::OpenMode mode() const
Returns the mode in which the archive was opened.
Definition karchive.cpp:470
KArchive::doPrepareWriting
virtual bool doPrepareWriting(const QString &name, const QString &user, const QString &group, qint64 size, mode_t perm, time_t atime, time_t mtime, time_t ctime)=0
This virtual method must be implemented by subclasses.
KArchive::fileName
QString fileName() const
The name of the archive file, as passed to the constructor that takes a fileName, or an empty string ...
Definition karchive.cpp:485
KArchive::setRootDir
void setRootDir(KArchiveDirectory *rootDir)
Derived classes call setRootDir from openArchive, to set the root directory after parsing an existing...
Definition karchive.cpp:464
KArchive::isOpen
bool isOpen() const
Checks whether the archive is open.
Definition karchive.cpp:480
KArchive::setDevice
void setDevice(QIODevice *dev)
Can be called by derived classes in order to set the underlying device.
Definition karchive.cpp:456
QDateTime
QIODevice
QStringList
QString
qint64
kdecore_export.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Jan 17 2025 00:00:00 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDECore

Skip menu "KDECore"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdelibs-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal