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

CZipFileHeader Class Reference

#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 (ZIP_SIZE_TYPE &uLocalComprSize)
void AdjustLocalComprSize ()
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 ( ZIP_SIZE_TYPE &  uLocalComprSize  )  [inline, protected]

Adjusts the local compressed size.

Parameters:
uLocalComprSize The value to adjust.

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

Adjusts the local compressed size.

bool CZipFileHeader::CheckDataDescriptor ( CZipStorage pStorage  )  const [protected]

Validates an existing data descriptor after file decompression.

Parameters:
pStorage The 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:
bClearBuffer If 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 ( 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:
bConsiderSignature true, if the data descriptor signature is needed; false otherwise.
Returns:
The required data descriptor size in bytes.

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:
pStorage The storage to test for the segmentation type.
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:
bReal Set 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:
bClearBuffer If 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:
bReal If 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:
pStorage The 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:
iLevel The compression level.
bSegm Set 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:
bReadSignature true, 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:
pCentralDir Used 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:
lpszComment The 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:
lpszFileName The 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.
See also:
Modification of Archives: Replacing, Renaming, Deleting and Changing Data

GetFileName

CZipArchive::CommitChanges

bool CZipFileHeader::SetSystemAttr ( DWORD  uAttr  ) 

Sets the file attributes.

Parameters:
uAttr The 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:
iSystemID The file system compatibility. It can be one of the ZipCompatibility::ZipPlatforms values.
bUpdateAttr If 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:
ttime The 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:
bSegm true, 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:
pStorage The 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:
bAdjustLocalComprSize true, 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:
buf The 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:
pStorage The 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:
pBuf The 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:
pStorage The 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:
pStorage The storage to write the local file header to.

void CZipFileHeader::WriteSmallDataDescriptor ( char *  pDest,
bool  bLocal = true 
) [protected]

Writes the data descriptor.

Parameters:
pDest The buffer to receive the data.
bLocal Set 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