QuaZip quazip-1-4
|
Information about a file inside archive (with zip64 support). More...
#include <quazipfileinfo.h>
Public Member Functions | |
QFile::Permissions | getPermissions () const |
Get the file permissions. | |
bool | isSymbolicLink () const |
Checks whether the file is a symbolic link. | |
bool | toQuaZipFileInfo (QuaZipFileInfo &info) const |
Converts to QuaZipFileInfo. | |
QDateTime | getNTFSmTime (int *fineTicks=nullptr) const |
Returns the NTFS modification time. | |
QDateTime | getNTFSaTime (int *fineTicks=nullptr) const |
Returns the NTFS access time. | |
QDateTime | getNTFScTime (int *fineTicks=nullptr) const |
Returns the NTFS creation time. | |
QDateTime | getExtModTime () const |
Returns the extended modification timestamp. | |
bool | isEncrypted () const |
Checks whether the file is encrypted. | |
Static Public Member Functions | |
static QuaExtraFieldHash | parseExtraField (const QByteArray &extraField) |
Parses extra field. | |
static QDateTime | getExtTime (const QByteArray &extra, int flag) |
Extracts extended time from the extra field. | |
Public Attributes | |
QString | name |
File name. | |
quint16 | versionCreated |
Version created by. | |
quint16 | versionNeeded |
Version needed to extract. | |
quint16 | flags |
General purpose flags. | |
quint16 | method |
Compression method. | |
QDateTime | dateTime |
Last modification date and time. | |
quint32 | crc |
CRC. | |
quint64 | compressedSize |
Compressed file size. | |
quint64 | uncompressedSize |
Uncompressed file size. | |
quint16 | diskNumberStart |
Disk number start. | |
quint16 | internalAttr |
Internal file attributes. | |
quint32 | externalAttr |
External file attributes. | |
QString | comment |
Comment. | |
QByteArray | extra |
Extra field. | |
Information about a file inside archive (with zip64 support).
Call QuaZip::getCurrentFileInfo() or QuaZipFile::getFileInfo() to fill this structure.
QFile::Permissions QuaZipFileInfo64::getPermissions | ( | ) | const |
Get the file permissions.
Returns the high 16 bits of external attributes converted to QFile::Permissions.
References externalAttr.
Referenced by JlCompress::extractFile().
bool QuaZipFileInfo64::isSymbolicLink | ( | ) | const |
Checks whether the file is a symbolic link.
Returns true iff the highest 16 bits of the external attributes indicate that the file is a symbolic link according to Unix file mode.
References externalAttr.
Referenced by JlCompress::extractFile().
bool QuaZipFileInfo64::toQuaZipFileInfo | ( | QuaZipFileInfo & | info | ) | const |
Converts to QuaZipFileInfo.
If any of the fields are greater than 0xFFFFFFFFu, they are set to 0xFFFFFFFFu exactly, not just truncated. This function should be mainly used for compatibility with the old code expecting QuaZipFileInfo, in the cases when it's impossible or otherwise unadvisable (due to ABI compatibility reasons, for example) to modify that old code to use QuaZipFileInfo64.
true
if all fields converted correctly, false
if an overflow occured. References QuaZipFileInfo::comment, comment, QuaZipFileInfo::compressedSize, compressedSize, QuaZipFileInfo::crc, crc, QuaZipFileInfo::dateTime, dateTime, QuaZipFileInfo::diskNumberStart, diskNumberStart, QuaZipFileInfo::externalAttr, externalAttr, QuaZipFileInfo::extra, extra, QuaZipFileInfo::flags, flags, QuaZipFileInfo::internalAttr, internalAttr, QuaZipFileInfo::method, method, QuaZipFileInfo::name, name, QuaZipFileInfo::uncompressedSize, uncompressedSize, QuaZipFileInfo::versionCreated, versionCreated, QuaZipFileInfo::versionNeeded, and versionNeeded.
Referenced by QuaZip::getCurrentFileInfo(), and QuaZipFile::getFileInfo().
QDateTime QuaZipFileInfo64::getNTFSmTime | ( | int * | fineTicks = nullptr | ) | const |
Returns the NTFS modification time.
The getNTFS*Time() functions only work if there is an NTFS extra field present. Otherwise, they all return invalid null timestamps.
fineTicks | If not null, the fractional part of milliseconds returned there, measured in 100-nanosecond ticks. Will be set to zero if there is no NTFS extra field. |
References extra.
QDateTime QuaZipFileInfo64::getNTFSaTime | ( | int * | fineTicks = nullptr | ) | const |
Returns the NTFS access time.
The getNTFS*Time() functions only work if there is an NTFS extra field present. Otherwise, they all return invalid null timestamps.
fineTicks | If not null, the fractional part of milliseconds returned there, measured in 100-nanosecond ticks. Will be set to zero if there is no NTFS extra field. |
References extra.
QDateTime QuaZipFileInfo64::getNTFScTime | ( | int * | fineTicks = nullptr | ) | const |
Returns the NTFS creation time.
The getNTFS*Time() functions only work if there is an NTFS extra field present. Otherwise, they all return invalid null timestamps.
fineTicks | If not null, the fractional part of milliseconds returned there, measured in 100-nanosecond ticks. Will be set to zero if there is no NTFS extra field. |
References extra.
QDateTime QuaZipFileInfo64::getExtModTime | ( | ) | const |
Returns the extended modification timestamp.
The getExt*Time() functions only work if there is an extended timestamp extra field (ID 0x5455) present. Otherwise, they all return invalid null timestamps.
QuaZipFileInfo64 only contains the modification time because it's extracted from extra, which contains the global extra field, and access and creation time are in the local header which can be accessed through QuaZipFile.
References extra, and getExtTime().
|
static |
Parses extra field.
The returned hash table contains a list of data blocks for every header ID in the provided extra field. The number of data blocks in a hash table value equals to the number of occurrences of the appropriate header id. In most cases, a block with a specific header ID only occurs once, and therefore the returned hash table will contain a list consisting of a single element for that header ID.
extraField | extra field to parse |
References QDataStream::atEnd(), QByteArray::data(), QDataStream::readRawData(), QByteArray::resize(), QDataStream::setByteOrder(), QByteArray::size(), and QDataStream::status().
Referenced by getExtTime().
|
static |
Extracts extended time from the extra field.
Utility function used by various getExt*Time() functions, but can be used directly if the extra field is obtained elsewhere (from a third party library, for example).
extra | the extra field for a file |
flag | 1 - modification time, 2 - access time, 4 - creation time |
References QDateTime::addSecs(), QList::at(), QDataStream::atEnd(), dateTime, extra, flags, QList::isEmpty(), QByteArray::length(), parseExtraField(), and QDataStream::setByteOrder().
Referenced by QuaZipFile::getExtAcTime(), QuaZipFile::getExtCrTime(), QuaZipFile::getExtModTime(), and getExtModTime().
QDateTime QuaZipFileInfo64::dateTime |
Last modification date and time.
This is the time stored in the standard ZIP header. This format only allows to store time with 2-second precision, so the seconds will always be even and the milliseconds will always be zero. If you need more precise date and time, you can try to call the getNTFSmTime() function or its siblings, provided that the archive itself contains these NTFS times.
Referenced by QuaZip::getCurrentFileInfo(), getExtTime(), and toQuaZipFileInfo().