• 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
KArchiveEntry
A base class for entries in an KArchive.
Definition: karchive.h:370
KArchiveFile
Represents a file entry in a KArchive.
Definition: karchive.h:458
KArchive
KArchive is a base class for reading and writing archives.
Definition: karchive.h:44
KArchive::doFinishWriting
virtual bool doFinishWriting(qint64 size)=0
Called after writing the data.
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::closeArchive
virtual bool closeArchive()=0
Closes the archive.
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::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.
QDateTime
QIODevice
QStringList
QString
qint64
kdecore_export.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 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
  • Modules
  • 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