ff7tk
0.02
Toolkit for making FF7 Tools
|
#include <IsoArchive.h>
Public Member Functions | |
IsoArchive () | |
IsoArchive (const QString &name) | |
virtual | ~IsoArchive () |
virtual bool | open (QIODevice::OpenMode mode) |
virtual bool | isOpen () const |
virtual void | close () |
QString | fileName () const |
void | setFileName (const QString &fileName) |
QString | errorString () const |
const IsoArchiveIO & | io () const |
bool | pack (IsoArchive *destination, ArchiveObserver *control=NULL, IsoDirectory *directory=NULL) |
void | applyModifications (IsoDirectory *directory) |
QByteArray | file (const QString &path, quint32 maxSize=0) const |
QIODevice * | fileDevice (const QString &path) const |
QByteArray | modifiedFile (const QString &path, quint32 maxSize=0) const |
QIODevice * | modifiedFileDevice (const QString &path) const |
bool | extract (const QString &path, const QString &destination, quint32 maxSize=0) const |
bool | extractDir (const QString &path, const QString &destination) const |
void | extractAll (const QString &destination) const |
qint32 | diffCountSectors (const QString &path, quint32 newSize) const |
IsoDirectory * | rootDirectory () const |
Archive::ArchiveError | error () const |
Returns the last error status. More... | |
Protected Member Functions | |
virtual bool | reorganizeModifiedFilesAfter (QMap< quint32, const IsoFile * > &writeToTheMain, QList< const IsoFile * > &writeToTheEnd) |
Used to extend IsoArchive. Called in pack() afer file reorganization. More... | |
void | setError (Archive::ArchiveError error, const QString &errorString=QString()) |
Sets the file's error type and text. More... | |
Private Member Functions | |
bool | openVolumeDescriptor (quint8 num=0) |
bool | openRootDirectory (quint32 sector, quint32 dataSize=SECTOR_SIZE_DATA) |
IsoDirectory * | _openDirectoryRecord (IsoDirectory *directories, QList< quint32 > &dirVisisted) |
QList< IsoFileOrDirectory * > | getIntegrity () |
bool | getIntegritySetPaddingAfter (IsoFileOrDirectory *prevFile, quint32 fileLocation) |
void | _extractAll (const QString &destination, IsoDirectory *directories, QString currentInternalDir=QString()) const |
void | _getIntegrity (QMap< quint32, IsoFileOrDirectory * > &files, IsoDirectory *directory) const |
QMap< quint32, IsoFile * > | getModifiedFiles (IsoDirectory *directory) const |
void | getModifiedFiles (QMap< quint32, IsoFile * > &files, IsoDirectory *directory) const |
bool | writeFile (QIODevice *in, quint32 sectorCount=0, ArchiveObserver *control=NULL) |
bool | copySectors (IsoArchiveIO *out, qint64 size, ArchiveObserver *control=NULL, bool repair=false) |
Static Private Member Functions | |
static int | findPadding (const QList< IsoFileOrDirectory * > &filesWithPadding, quint32 minSectorCount) |
static void | repairLocationSectors (IsoDirectory *directory, IsoArchive *newIso) |
Private Attributes | |
IsoArchiveIO | _io |
VolumeDescriptor | volume |
IsoDirectory * | _rootDirectory |
Archive::ArchiveError | _error |
Definition at line 303 of file IsoArchive.h.
IsoArchive::IsoArchive | ( | ) |
Definition at line 563 of file IsoArchive.cpp.
|
explicit |
Definition at line 568 of file IsoArchive.cpp.
|
virtual |
Definition at line 573 of file IsoArchive.cpp.
References _rootDirectory.
|
private |
Definition at line 1279 of file IsoArchive.cpp.
References extract(), IsoDirectory::filesAndDirectories(), IsoFileOrDirectory::isDirectory(), IsoFileOrDirectory::isSpecial(), and IsoFileOrDirectory::name().
Referenced by extractAll().
|
private |
Definition at line 1402 of file IsoArchive.cpp.
References IsoDirectory::filesAndDirectories(), IsoFileOrDirectory::isDirectory(), IsoFileOrDirectory::isSpecial(), and IsoFileOrDirectory::location().
Referenced by getIntegrity().
|
private |
Definition at line 1073 of file IsoArchive.cpp.
References _io, IsoDirectory::add(), IsoArchiveIO::currentSector(), DirectoryRecordHead::data_length, IsoDirectory::directories(), DirectoryRecord::drh, DirectoryRecord::extended_attr_record_length, DirectoryRecordHead::file_flags, IsoFileOrDirectory::isSpecial(), DirectoryRecord::length_dr, DirectoryRecordHead::length_fi, IsoFileOrDirectory::location(), DirectoryRecordHead::location_extent, MAX_FILENAME_LENGTH, DirectoryRecord::name, IsoFileOrDirectory::name(), IsoArchiveIO::posIso(), IsoArchiveIO::readIso(), IsoArchiveIO::sectorCountData(), IsoArchiveIO::seekIso(), IsoArchiveIO::seekToSector(), SEPARATOR_2, and IsoFileOrDirectory::size().
Referenced by openRootDirectory().
void IsoArchive::applyModifications | ( | IsoDirectory * | directory | ) |
Definition at line 1433 of file IsoArchive.cpp.
References IsoFileOrDirectory::applyModifications(), IsoDirectory::filesAndDirectories(), IsoFileOrDirectory::isDirectory(), and IsoFileOrDirectory::isModified().
|
virtual |
Definition at line 628 of file IsoArchive.cpp.
References _io, and _rootDirectory.
|
private |
Definition at line 846 of file IsoArchive.cpp.
References _io, Archive::AbortError, IsoArchiveIO::currentSector(), IsoArchiveIO::headerInfos(), Archive::InvalidError, ArchiveObserver::observerWasCanceled(), Archive::ReadError, SECTOR_SIZE, SECTOR_SIZE_DATA, SECTOR_SIZE_HEADER, setError(), ArchiveObserver::setObserverValue(), Archive::WriteError, and IsoArchiveIO::writeSector().
Referenced by pack().
qint32 IsoArchive::diffCountSectors | ( | const QString & | path, |
quint32 | newSize | ||
) | const |
Definition at line 1306 of file IsoArchive.cpp.
References _io, _rootDirectory, IsoDirectory::fileOrDirectory(), IsoArchiveIO::sectorCountData(), and IsoFileOrDirectory::size().
Archive::ArchiveError IsoArchive::error | ( | ) | const |
Returns the last error status.
Definition at line 1449 of file IsoArchive.cpp.
References _error.
Referenced by extractDir(), and setError().
|
inline |
Definition at line 321 of file IsoArchive.h.
bool IsoArchive::extract | ( | const QString & | path, |
const QString & | destination, | ||
quint32 | maxSize = 0 |
||
) | const |
Definition at line 1238 of file IsoArchive.cpp.
References _rootDirectory, IsoFile::extract(), IsoDirectory::file(), and file().
Referenced by _extractAll().
void IsoArchive::extractAll | ( | const QString & | destination | ) | const |
Definition at line 1271 of file IsoArchive.cpp.
References _extractAll(), and _rootDirectory.
bool IsoArchive::extractDir | ( | const QString & | path, |
const QString & | destination | ||
) | const |
Definition at line 1250 of file IsoArchive.cpp.
References _rootDirectory, IsoDirectory::directory(), error(), IsoFile::extract(), file(), IsoDirectory::files(), and IsoFileOrDirectory::name().
QByteArray IsoArchive::file | ( | const QString & | path, |
quint32 | maxSize = 0 |
||
) | const |
Definition at line 1190 of file IsoArchive.cpp.
References _rootDirectory, IsoFile::data(), and IsoDirectory::file().
Referenced by extract(), extractDir(), fileDevice(), getIntegrity(), modifiedFile(), and modifiedFileDevice().
QIODevice * IsoArchive::fileDevice | ( | const QString & | path | ) | const |
Definition at line 1202 of file IsoArchive.cpp.
References _rootDirectory, IsoFile::file(), IsoDirectory::file(), and file().
|
inline |
Definition at line 315 of file IsoArchive.h.
|
staticprivate |
Definition at line 637 of file IsoArchive.cpp.
References IsoFileOrDirectory::paddingAfter().
Referenced by pack().
|
private |
Definition at line 1374 of file IsoArchive.cpp.
References _getIntegrity(), _io, _rootDirectory, file(), getIntegritySetPaddingAfter(), IsoFileOrDirectory::location(), and IsoArchiveIO::sectorCount().
Referenced by pack().
|
private |
Definition at line 1335 of file IsoArchive.cpp.
References _io, IsoFileOrDirectory::locationAfter(), IsoFileOrDirectory::name(), IsoFileOrDirectory::paddingAfter(), IsoFileOrDirectory::sectorCount(), IsoArchiveIO::sectorHeader(), and IsoFileOrDirectory::setPaddingAfter().
Referenced by getIntegrity().
|
private |
Definition at line 1415 of file IsoArchive.cpp.
Referenced by getModifiedFiles(), and pack().
|
private |
Definition at line 1422 of file IsoArchive.cpp.
References IsoDirectory::filesAndDirectories(), getModifiedFiles(), IsoFileOrDirectory::isDirectory(), and IsoFileOrDirectory::newLocation().
|
inline |
Definition at line 324 of file IsoArchive.h.
References SECTOR_SIZE_DATA.
|
inlinevirtual |
Definition at line 311 of file IsoArchive.h.
QByteArray IsoArchive::modifiedFile | ( | const QString & | path, |
quint32 | maxSize = 0 |
||
) | const |
Definition at line 1214 of file IsoArchive.cpp.
References _rootDirectory, IsoDirectory::file(), file(), and IsoFile::modifiedData().
QIODevice * IsoArchive::modifiedFileDevice | ( | const QString & | path | ) | const |
Definition at line 1226 of file IsoArchive.cpp.
References _rootDirectory, IsoDirectory::file(), file(), and IsoFile::modifiedFile().
|
virtual |
Definition at line 578 of file IsoArchive.cpp.
References _io, DirectoryRecordHead::data_length, VolumeDescriptor::dr, DirectoryRecord::drh, VolumeDescriptor1::id, DirectoryRecordHead::location_extent, IsoArchiveIO::open(), openRootDirectory(), openVolumeDescriptor(), SECTOR_SIZE, IsoArchiveIO::sectorCount(), VolumeDescriptor::vd1, volume, and VolumeDescriptor1::volume_space_size.
|
private |
Definition at line 1066 of file IsoArchive.cpp.
References _openDirectoryRecord(), and _rootDirectory.
Referenced by open().
|
private |
Definition at line 1019 of file IsoArchive.cpp.
References _io, VolumeDescriptor::dr, DirectoryRecord::drh, DirectoryRecord::extended_attr_record_length, DirectoryRecord::length_dr, DirectoryRecordHead::length_fi, MAX_FILENAME_LENGTH, DirectoryRecord::name, SECTOR_SIZE, SECTOR_SIZE_HEADER, VolumeDescriptor::vd1, VolumeDescriptor::vd2, and volume.
Referenced by open().
bool IsoArchive::pack | ( | IsoArchive * | destination, |
ArchiveObserver * | control = NULL , |
||
IsoDirectory * | directory = NULL |
||
) |
Definition at line 662 of file IsoArchive.cpp.
References _io, _rootDirectory, Archive::AbortError, copySectors(), IsoArchiveIO::currentSector(), findPadding(), getIntegrity(), getModifiedFiles(), IsoFileOrDirectory::location(), IsoFileOrDirectory::locationAfter(), IsoFile::modifiedFile(), IsoFileOrDirectory::name(), IsoFileOrDirectory::newLocation(), IsoFileOrDirectory::newSectorCount(), ArchiveObserver::observerWasCanceled(), Archive::OpenError, IsoFileOrDirectory::paddingAfter(), reorganizeModifiedFilesAfter(), repairLocationSectors(), SECTOR_SIZE, SECTOR_SIZE_DATA, IsoFileOrDirectory::sectorCount(), IsoArchiveIO::sectorCount(), IsoArchiveIO::seekIso(), setError(), IsoFileOrDirectory::setLocation(), ArchiveObserver::setObserverMaximum(), ArchiveObserver::setObserverValue(), IsoFileOrDirectory::setPaddingAfter(), and writeFile().
|
protectedvirtual |
Used to extend IsoArchive. Called in pack() afer file reorganization.
directory |
Definition at line 655 of file IsoArchive.cpp.
Referenced by pack().
|
staticprivate |
Definition at line 952 of file IsoArchive.cpp.
References _io, IsoDirectory::filesAndDirectories(), IsoFileOrDirectory::isDirectory(), IsoFileOrDirectory::isModified(), IsoFileOrDirectory::location(), IsoFileOrDirectory::newLocation(), IsoFileOrDirectory::newSize(), IsoArchiveIO::seekIso(), IsoFileOrDirectory::size(), IsoFileOrDirectory::structPosition, and IsoArchiveIO::writeIso().
Referenced by pack().
IsoDirectory * IsoArchive::rootDirectory | ( | ) | const |
Definition at line 994 of file IsoArchive.cpp.
References _rootDirectory.
|
protected |
Sets the file's error type and text.
Definition at line 1458 of file IsoArchive.cpp.
References _error, _io, VolumeDescriptor2::abstract_file_id, VolumeDescriptor2::application_data, VolumeDescriptor2::application_id, VolumeDescriptor2::bibliographic_file_id, VolumeDescriptor2::copyright_file_id, VolumeDescriptor2::creation_date, DirectoryRecordHead::data_length, DirectoryRecordHead::data_length2, IsoTime::day, DirectoryRecordHead::day, VolumeDescriptor::dr, DirectoryRecord::drh, error(), PathTable::extended_attr_record_length, DirectoryRecord::extended_attr_record_length, DirectoryRecordHead::file_flags, VolumeDescriptor2::file_structure_version, DirectoryRecordHead::file_unit_size, IsoTime::GMT, DirectoryRecordHead::GMT, IsoTime::hour, DirectoryRecordHead::hour, VolumeDescriptor1::id, DirectoryRecordHead::interleave_grap_size, PathTable::length_di, DirectoryRecord::length_dr, DirectoryRecordHead::length_fi, PathTable::location_extent, DirectoryRecordHead::location_extent, DirectoryRecordHead::location_extent2, VolumeDescriptor1::logical_block_size, VolumeDescriptor1::logical_block_size2, IsoTime::millis, IsoTime::minute, DirectoryRecordHead::minute, IsoTime::month, DirectoryRecordHead::month, PathTable::name, DirectoryRecord::name, VolumeDescriptor1::opt_type_path_table, VolumeDescriptor1::opt_type_path_table2, PathTable::parent_directory_number, VolumeDescriptor1::path_table_size, VolumeDescriptor1::path_table_size2, VolumeDescriptor2::preparer_id, VolumeDescriptor2::publisher_id, IsoTime::second, DirectoryRecordHead::second, VolumeDescriptor1::system_id, VolumeDescriptor1::type, VolumeDescriptor1::type_path_table, VolumeDescriptor1::type_path_table2, VolumeDescriptor::vd1, VolumeDescriptor::vd2, VolumeDescriptor1::version, VolumeDescriptor1::volume_id, DirectoryRecordHead::volume_sequence_number, VolumeDescriptor1::volume_sequence_number, DirectoryRecordHead::volume_sequence_number2, VolumeDescriptor1::volume_sequence_number2, VolumeDescriptor2::volume_set_id, VolumeDescriptor1::volume_set_size, VolumeDescriptor1::volume_set_size2, VolumeDescriptor1::volume_space_size, VolumeDescriptor1::volume_space_size2, IsoTime::year, and DirectoryRecordHead::year.
Referenced by copySectors(), pack(), and writeFile().
|
inline |
Definition at line 318 of file IsoArchive.h.
|
private |
Definition at line 893 of file IsoArchive.cpp.
References _io, Archive::AbortError, IsoArchiveIO::currentSector(), ArchiveObserver::observerWasCanceled(), Archive::OpenError, Archive::ReadError, SECTOR_SIZE_DATA, setError(), Archive::WriteError, and IsoArchiveIO::writeSector().
Referenced by pack().
|
private |
Definition at line 374 of file IsoArchive.h.
Referenced by error(), and setError().
|
private |
Definition at line 371 of file IsoArchive.h.
Referenced by _openDirectoryRecord(), close(), copySectors(), diffCountSectors(), getIntegrity(), getIntegritySetPaddingAfter(), open(), openVolumeDescriptor(), pack(), repairLocationSectors(), setError(), and writeFile().
|
private |
Definition at line 373 of file IsoArchive.h.
Referenced by close(), diffCountSectors(), extract(), extractAll(), extractDir(), file(), fileDevice(), getIntegrity(), modifiedFile(), modifiedFileDevice(), openRootDirectory(), pack(), rootDirectory(), and ~IsoArchive().
|
private |
Definition at line 372 of file IsoArchive.h.
Referenced by open(), and openVolumeDescriptor().