Skip Navigation Links
Skip Navigation LinksHome > ZipArchive > How to Use > API Documentation

#include <ZipFileHeader.h>

List of all members.

Classes

struct  StringWithBuffer

Public Types

enum  StateFlags {
  sfNone = 0x00, sfFileNameExtra = 0x01, sfCommentExtra = 0x02, sfStringsUnicode = 0x04,
  sfCustomUnicode = 0x10, sfModified = 0x20
}

Public Member Functions

bool CompressionEfficient ()
 CZipFileHeader (const CZipFileHeader &header)
const CZipString & GetComment (bool bClearBuffer=false)
int GetCompressionLevel () const
float GetCompressionRatio ()
WORD GetDataDescriptorSize (bool bConsiderSignature=false) const
WORD GetDataDescriptorSize (const CZipStorage *pStorage) const
ZIP_SIZE_TYPE GetDataSize (bool bReal) const
DWORD GetEncryptedInfoSize () const
int GetEncryptionMethod () const
const CZipString & GetFileName (bool bClearBuffer=true)
DWORD GetLocalSize (bool bReal) const
DWORD GetOriginalAttributes () const
DWORD GetSize () const
const ZipArchiveLib::CBitFlagGetState () const
CZipStringStoreSettings GetStringStoreSettings ()
DWORD GetSystemAttr ()
int GetSystemCompatibility () const
time_t GetTime () const
bool HasTime () const
bool IsDataDescriptor () const
bool IsDirectory ()
bool IsEncrypted () const
bool IsModified () const
bool IsWinZipAesEncryption () const
CZipFileHeaderoperator= (const CZipFileHeader &header)
int PredictCommentSize () const
int PredictFileNameSize () const
bool SetComment (LPCTSTR lpszComment)
bool SetFileName (LPCTSTR lpszFileName)
bool SetSystemAttr (DWORD uAttr)
void SetTime (const time_t &ttime)

Public Attributes

CZipExtraField m_aCentralExtraData
 The central extra field.
CZipExtraField m_aLocalExtraData
 The local extra field. Do not modify it after you started compressing the file.
ZIP_SIZE_TYPE m_uComprSize
 The compressed size.
DWORD m_uCrc32
 The crc-32 value.
WORD m_uFlag
 A general purpose bit flag.
WORD m_uInternalAttr
 Internal file attributes.
ZIP_SIZE_TYPE m_uLocalComprSize
 The compressed size written in the local header.
ZIP_SIZE_TYPE m_uLocalUncomprSize
 The uncompressed size written in the local header.
WORD m_uMethod
 The compression method. It can be one of the CZipCompressor::CompressionMethod values.
WORD m_uModDate
 The file last modification date.
WORD m_uModTime
 The file last modification time.
ZIP_SIZE_TYPE m_uOffset
 Relative offset of the local header with respect to CZipFileHeader::m_uVolumeStart.
ZIP_SIZE_TYPE m_uUncomprSize
 The uncompressed size.
unsigned char m_uVersionMadeBy
 The version of the software that created the archive.
WORD m_uVersionNeeded
 The version needed to extract the file.
ZIP_VOLUME_TYPE m_uVolumeStart
 The volume number at which the compressed file starts.

Static Public Attributes

static char m_gszLocalSignature []
 The local file header signature.
static char m_gszSignature []
 The central file header signature.

Protected Member Functions

void AdjustLocalComprSize ()
void AdjustLocalComprSize (ZIP_SIZE_TYPE &uLocalComprSize)
bool CheckDataDescriptor (CZipStorage *pStorage) const
bool CheckLengths (bool local) const
 CZipFileHeader (CZipCentralDir *pCentralDir)
bool NeedsDataDescriptor () const
bool NeedsSignatureInDataDescriptor (const CZipStorage *pStorage) const
void PrepareData (int iLevel, bool bSegm)
void PrepareStringBuffers ()
bool Read (bool bReadSignature)
bool ReadLocal (CZipCentralDir *pCentralDir)
void SetSystemCompatibility (int iSystemID, bool bUpdateAttr=false)
void UpdateFlag (bool bSegm)
void UpdateLocalHeader (CZipStorage *pStorage)
void UpdateLocalZip64 (bool bAdjustLocalComprSize)
DWORD Write (CZipStorage *pStorage)
void WriteCrc32 (char *pBuf) const
void WriteDataDescriptor (CZipStorage *pStorage)
void WriteLocal (CZipStorage *pStorage)
void WriteSmallDataDescriptor (char *pDest, bool bLocal=true)

Static Protected Member Functions

static bool VerifySignature (CZipAutoBuffer &buf)

Protected Attributes

bool m_bIgnoreCrc32
 The value indicating whether to ignore Crc32 checking.
CZipCentralDirm_pCentralDir
 The parent central directory. It can be NULL when the header is not a part of central directory.
BYTE m_uEncryptionMethod
 The file encryption method. It can be one of the CZipCryptograph::EncryptionMethod values.
DWORD m_uExternalAttr
 External file attributes.
WORD m_uLocalFileNameSize
 The local filename length.
DWORD m_uLocalHeaderSize

Friends

class CZipArchive
class CZipCentralDir

Detailed Description

Represents a single file stored in a zip archive.


Member Enumeration Documentation

File header state flags.

See also:
CZipArchive::UnicodeMode
Enumerator:
sfNone 

No special flags set.

sfFileNameExtra 

The header uses Unicode extra header to store the filename.

sfCommentExtra 

The header uses Unicode extra header to store the comment.

sfStringsUnicode 

The header uses UTF-8 encoding when storing the filename and comment.

sfCustomUnicode 

The header uses custom Unicode functionality.

sfModified 

The file has been modified.


Member Function Documentation

void CZipFileHeader::AdjustLocalComprSize (  ) [inline, protected]

Adjusts the local compressed size.

void CZipFileHeader::AdjustLocalComprSize ( ZIP_SIZE_TYPE &  uLocalComprSize ) [inline, protected]

Adjusts the local compressed size.

Parameters:
uLocalComprSizeThe value to adjust.
bool CZipFileHeader::CheckDataDescriptor ( CZipStorage pStorage ) const [protected]

Validates an existing data descriptor after file decompression.

Parameters:
pStorageThe storage to read the data descriptor from.
Returns:
true, if the data descriptor is valid; false otherwise.
bool CZipFileHeader::CheckLengths ( bool  local ) const [inline, protected]

Validates the member fields lengths. The tested fields are: filename, extra fields and comment.

Returns:
false, if any of the lengths exceeds the allowed value.
bool CZipFileHeader::CompressionEfficient (  ) [inline]

Returns the value indicating whether the compression is efficient.

Returns:
true if the compression is efficient; false if the file should be stored without the compression instead.
const CZipString& CZipFileHeader::GetComment ( bool  bClearBuffer = false )

Returns the file comment.

Parameters:
bClearBufferIf true, releases the internal buffer after performing the comment conversion. If false, the internal buffer is not released and both representations of the comment are kept in memory (converted and not converted). This takes more memory, but the conversion does not take place again when the central directory is written back to the archive.
Returns:
The file comment.
See also:
Modification of Archives: Replacing, Renaming, Deleting and Changing Data
SetComment
int CZipFileHeader::GetCompressionLevel (  ) const

Returns an approximate file compression level.

Returns:
The compression level. May not be the real value used when compressing the file.
float CZipFileHeader::GetCompressionRatio (  ) [inline]

Returns the compression ratio.

Returns:
The compression ratio of the file.
WORD CZipFileHeader::GetDataDescriptorSize ( const CZipStorage pStorage ) const [inline]

Returns the data descriptor size as it is required for the current file. Takes into account various factors, such as the archive segmentation type, encryption and the need for the Zip64 format.

Parameters:
pStorageThe storage to test for the segmentation type.
Returns:
The required data descriptor size in bytes.
WORD CZipFileHeader::GetDataDescriptorSize ( bool  bConsiderSignature = false ) const

Returns the data descriptor size as it is required for the current file. Takes into account various factors, such as the need for the data descriptor signature or for the Zip64 format.

Parameters:
bConsiderSignaturetrue, if the data descriptor signature is needed; false otherwise.
Returns:
The required data descriptor size in bytes.
ZIP_SIZE_TYPE CZipFileHeader::GetDataSize ( bool  bReal ) const [inline]

Returns the size of the compressed data.

Parameters:
bRealSet to true when calling for a file already in an archive. Set to false when the header is not a part of the archive.
Returns:
The compressed data size in bytes.
See also:
GetEncryptedInfoSize
DWORD CZipFileHeader::GetEncryptedInfoSize (  ) const [inline]

Returns the encrypted information size. The returned value depends on the used encryption method.

Returns:
The encrypted information size in bytes.
int CZipFileHeader::GetEncryptionMethod (  ) const [inline]

Returns the encryption method of the file.

Returns:
The file encryption method. It can be one of the CZipCryptograph::EncryptionMethod values.
const CZipString& CZipFileHeader::GetFileName ( bool  bClearBuffer = true )

Returns the filename. If necessary, performs the conversion using the current filename code page. Caches the result of conversion for faster access the next time.

Parameters:
bClearBufferIf true, releases the internal buffer after performing the filename conversion. If false, the internal buffer is not released and both representations of the filename are kept in memory (converted and not converted). This takes more memory, but the conversion does not take place again when the central directory is written back to the archive.
Returns:
The converted filename.
See also:
Unicode Support: Using Non-English Characters in Filenames, Comments and Passwords
SetFileName
GetStringStoreSettings
CZipStringStoreSettings::m_uNameCodePage
DWORD CZipFileHeader::GetLocalSize ( bool  bReal ) const

Returns the local header size. Before calling this method, the local information must be up-to-date (see Requesting Information, Predicting Names and Sizes for more information).

Parameters:
bRealIf true, uses the real local filename size. If false, predicts the filename size.
Returns:
The local header size in bytes.
DWORD CZipFileHeader::GetOriginalAttributes (  ) const [inline]

Returns the file attributes exactly as they are stored in the archive.

Returns:
The file attributes as they are stored in the archive. No conversion is performed.
Note:
The attributes for Linux are stored shifted left by 16 bits in this field.
See also:
GetSystemAttr
DWORD CZipFileHeader::GetSize (  ) const

Returns the total size of this structure in the central directory.

Returns:
The total size in bytes.
const ZipArchiveLib::CBitFlag& CZipFileHeader::GetState (  ) const [inline]

Returns the state flags.

Returns:
State flags. It can be one or more of StateFlags values.
CZipStringStoreSettings CZipFileHeader::GetStringStoreSettings (  ) [inline]

Returns the current string store settings.

Returns:
The string store settings.
See also:
Unicode Support: Using Non-English Characters in Filenames, Comments and Passwords
CZipArchive::GetStringStoreSettings
DWORD CZipFileHeader::GetSystemAttr (  )

Returns the file attributes.

Returns:
The file attributes, converted if necessary to be compatible with the current system.
Note:
Throws an exception, if the archive system or the current system is not supported by the ZipArchive Library.
See also:
GetOriginalAttributes
int CZipFileHeader::GetSystemCompatibility (  ) const [inline]

Returns the file system compatibility. External software can use this information e.g. to determine end-of-line format for text files etc. The ZipArchive Library uses it to perform a proper file attributes conversion.

Returns:
The file system compatibility. It can be one of the ZipCompatibility::ZipPlatforms values.
See also:
CZipArchive::GetSystemComatibility
ZipPlatform::GetSystemID
time_t CZipFileHeader::GetTime (  ) const

Returns the file modification time.

Returns:
The modification time.
See also:
SetTime
bool CZipFileHeader::HasTime (  ) const [inline]

Returns the value indicating whether the current CZipFileHeader object has the time set.

Returns:
true, if the time is set; false otherwise.
bool CZipFileHeader::IsDataDescriptor (  ) const [inline]

Returns the value indicating whether the data descriptor is present.

Returns:
true, if the data descriptor is present; false otherwise.
bool CZipFileHeader::IsDirectory (  )

Returns the value indicating whether the file represents a directory. This method checks the file attributes. If the attributes value is zero, the method checks for the presence of a path separator at the end of the filename. If the path separator is present, the file is assumed to be a directory.

Returns:
true, if the file represents a directory; false otherwise.
bool CZipFileHeader::IsEncrypted (  ) const [inline]

Returns the value indicating whether the file is encrypted. If the file is encrypted, you need to set the password with the CZipArchive::SetPassword method before decompressing the file.

Returns:
true if the file is encrypted; false otherwise.
See also:
CZipArchive::SetPassword
bool CZipFileHeader::IsModified (  ) const [inline]

Returns the value indicating whether the file was modified.

Returns:
true, if the file was modified; false otherwise.
See also:
CZipArchive::CommitChanges
bool CZipFileHeader::IsWinZipAesEncryption (  ) const [inline]

Returns the value indicating whether the file is encrypted using WinZip AES encryption method.

Returns:
true, if the file is encrypted using WinZip AES encryption method; false otherwise.
bool CZipFileHeader::NeedsDataDescriptor (  ) const [protected]

Returns the value indicating whether the file needs the data descriptor. The data descriptor is needed when a file is encrypted or the Zip64 format needs to be used.

Returns:
true, if the data descriptor is needed; false otherwise.
bool CZipFileHeader::NeedsSignatureInDataDescriptor ( const CZipStorage pStorage ) const [inline, protected]

Returns the value indicating whether the signature in the data descriptor is needed.

Parameters:
pStorageThe current storage.
Returns:
true, if the signature is needed; false otherwise.
int CZipFileHeader::PredictCommentSize (  ) const [inline]

Predicts a file comment size.

Returns:
The number of characters in the comment not including a terminating NULL character.
int CZipFileHeader::PredictFileNameSize (  ) const [inline]

Predicts the filename size after conversion using the current filename code page.

Returns:
The number of characters not including a terminating NULL character.
void CZipFileHeader::PrepareData ( int  iLevel,
bool  bSegm 
) [protected]

Prepares the data for writing when adding a new file. When Zip64 extensions are required for this file, this method adds Zip64 extra data to m_aLocalExtraData.

Parameters:
iLevelThe compression level.
bSegmSet to true, if the archive is segmented; false otherwise.
void CZipFileHeader::PrepareStringBuffers (  ) [inline, protected]

Prepares the filename for writing to the archive.

bool CZipFileHeader::Read ( bool  bReadSignature ) [protected]

Reads the central file header from pStorage and validates the read data.

Parameters:
bReadSignaturetrue, if the the central header signature should be read; false otherwise.
Returns:
true, if the read data is consistent; false otherwise.
bool CZipFileHeader::ReadLocal ( CZipCentralDir pCentralDir ) [protected]

Reads the local file header from the archive and validates the read data.

Parameters:
pCentralDirUsed when the archive was opened with CZipArchive::OpenFrom method. Points to the original central directory.
Returns:
true, if the data read is consistent; false otherwise.
See also:
CZipArchive::SetIgnoredConsistencyChecks
bool CZipFileHeader::SetComment ( LPCTSTR  lpszComment )

Sets the file comment.

Parameters:
lpszCommentThe file comment.
Returns:
true, if the method succeeded; false, if the current state of the archive is invalid for this method to be called.
See also:
Modification of Archives: Replacing, Renaming, Deleting and Changing Data
GetComment
bool CZipFileHeader::SetFileName ( LPCTSTR  lpszFileName )

Sets the filename.

The actual renaming of the file inside of the archive depends on the current commit mode.

Parameters:
lpszFileNameThe filename to set.
Returns:
true, if the method succeeded; false, if the current state of the archive is invalid for this method to be called.
Note:
Leading path separators are removed from the filename unless the header is a directory and the filename contains of only one path separator (indicating a root path).
See also:
Modification of Archives: Replacing, Renaming, Deleting and Changing Data
GetFileName
CZipArchive::CommitChanges
bool CZipFileHeader::SetSystemAttr ( DWORD  uAttr )

Sets the file attributes.

Parameters:
uAttrThe attributes to set.
Note:
Throws an exception, if the archive system or the current system is not supported by the ZipArchive Library.
See also:
GetSystemAttr
void CZipFileHeader::SetSystemCompatibility ( int  iSystemID,
bool  bUpdateAttr = false 
) [inline, protected]

Sets the file system compatibility.

Parameters:
iSystemIDThe file system compatibility. It can be one of the ZipCompatibility::ZipPlatforms values.
bUpdateAttrIf true, the attributes will be converted to the new system; false otherwise.
See also:
GetSystemCompatibility
void CZipFileHeader::SetTime ( const time_t &  ttime )

Sets the file modification date.

Parameters:
ttimeThe date to set. If this value is incorrect, the date defaults to January 1, 1980.
See also:
GetTime
void CZipFileHeader::UpdateFlag ( bool  bSegm ) [inline, protected]

Updates the general purpose bit flag.

Parameters:
bSegmtrue, if the current archive is a segmented archive; false otherwise.
void CZipFileHeader::UpdateLocalHeader ( CZipStorage pStorage ) [protected]

Updates the local header in the archive after is has already been written.

Parameters:
pStorageThe storage to update the data descriptor in.
void CZipFileHeader::UpdateLocalZip64 ( bool  bAdjustLocalComprSize ) [protected]

Creates Zip64 extra data in the local extra field, if needed.

Parameters:
bAdjustLocalComprSizetrue, if the local compressed size needs to be adjusted; false otherwise.
static bool CZipFileHeader::VerifySignature ( CZipAutoBuffer &  buf ) [inline, static, protected]

Verifies the central header signature.

Parameters:
bufThe buffer that contains the signature to verify.
Returns:
true, if the signature is valid; false otherwise.
DWORD CZipFileHeader::Write ( CZipStorage pStorage ) [protected]

Writes the central file header to pStorage.

Parameters:
pStorageThe storage to write the central file header to.
Returns:
The size of the file header.
void CZipFileHeader::WriteCrc32 ( char *  pBuf ) const [protected]

Writes the Crc32 to pBuf.

Parameters:
pBufThe buffer to write the Crc32 to. Must have be of at least 4 bytes size.
void CZipFileHeader::WriteDataDescriptor ( CZipStorage pStorage ) [protected]

Writes the data descriptor taking into account the Zip64 format.

Parameters:
pStorageThe storage to write the data descriptor to.
void CZipFileHeader::WriteLocal ( CZipStorage pStorage ) [protected]

Writes the local file header to the pStorage. The filename and extra field are the same as those that will be stored in the central directory.

Parameters:
pStorageThe storage to write the local file header to.
void CZipFileHeader::WriteSmallDataDescriptor ( char *  pDest,
bool  bLocal = true 
) [protected]

Writes the data descriptor.

Parameters:
pDestThe buffer to receive the data.
bLocalSet to true, if the local sizes are used; false otherwise.

Member Data Documentation

The local extra field. Do not modify it after you started compressing the file.

The value indicating whether to ignore Crc32 checking.

The local file header signature.

The central file header signature.

The parent central directory. It can be NULL when the header is not a part of central directory.

The compressed size.

The crc-32 value.

The file encryption method. It can be one of the CZipCryptograph::EncryptionMethod values.

External file attributes.

A general purpose bit flag.

Internal file attributes.

The compressed size written in the local header.

The local filename length.

The uncompressed size written in the local header.

The compression method. It can be one of the CZipCompressor::CompressionMethod values.

The file last modification date.

The file last modification time.

Relative offset of the local header with respect to CZipFileHeader::m_uVolumeStart.

The uncompressed size.

The version of the software that created the archive.

The version needed to extract the file.

The volume number at which the compressed file starts.


The documentation for this class was generated from the following file:
Back To Top Up