Holds the meta-data for an entry in a zip.
Derived from
Include files
<wx/zipstrm.h>
Data structures
Constants for Get/SetMethod:
// Compression Method, only 0 (store) and 8 (deflate) are supported here // enum wxZipMethod { wxZIP_METHOD_STORE, wxZIP_METHOD_SHRINK, wxZIP_METHOD_REDUCE1, wxZIP_METHOD_REDUCE2, wxZIP_METHOD_REDUCE3, wxZIP_METHOD_REDUCE4, wxZIP_METHOD_IMPLODE, wxZIP_METHOD_TOKENIZE, wxZIP_METHOD_DEFLATE, wxZIP_METHOD_DEFLATE64, wxZIP_METHOD_BZIP2 = 12, wxZIP_METHOD_DEFAULT = 0xffff };Constants for Get/SetSystemMadeBy:
// Originating File-System. // // These are Pkware's values. Note that Info-zip disagree on some of them, // most notably NTFS. // enum wxZipSystem { wxZIP_SYSTEM_MSDOS, wxZIP_SYSTEM_AMIGA, wxZIP_SYSTEM_OPENVMS, wxZIP_SYSTEM_UNIX, wxZIP_SYSTEM_VM_CMS, wxZIP_SYSTEM_ATARI_ST, wxZIP_SYSTEM_OS2_HPFS, wxZIP_SYSTEM_MACINTOSH, wxZIP_SYSTEM_Z_SYSTEM, wxZIP_SYSTEM_CPM, wxZIP_SYSTEM_WINDOWS_NTFS, wxZIP_SYSTEM_MVS, wxZIP_SYSTEM_VSE, wxZIP_SYSTEM_ACORN_RISC, wxZIP_SYSTEM_VFAT, wxZIP_SYSTEM_ALTERNATE_MVS, wxZIP_SYSTEM_BEOS, wxZIP_SYSTEM_TANDEM, wxZIP_SYSTEM_OS_400 };Constants for Get/SetExternalAttributes:
// Dos/Win file attributes // enum wxZipAttributes { wxZIP_A_RDONLY = 0x01, wxZIP_A_HIDDEN = 0x02, wxZIP_A_SYSTEM = 0x04, wxZIP_A_SUBDIR = 0x10, wxZIP_A_ARCH = 0x20, wxZIP_A_MASK = 0x37 };Constants for Get/SetFlags:
// Values for the flags field in the zip headers // enum wxZipFlags { wxZIP_ENCRYPTED = 0x0001, wxZIP_DEFLATE_NORMAL = 0x0000, // normal compression wxZIP_DEFLATE_EXTRA = 0x0002, // extra compression wxZIP_DEFLATE_FAST = 0x0004, // fast compression wxZIP_DEFLATE_SUPERFAST = 0x0006, // superfast compression wxZIP_DEFLATE_MASK = 0x0006, wxZIP_SUMS_FOLLOW = 0x0008, // crc and sizes come after the data wxZIP_ENHANCED = 0x0010, wxZIP_PATCH = 0x0020, wxZIP_STRONG_ENC = 0x0040, wxZIP_UNUSED = 0x0F80, wxZIP_RESERVED = 0xF000 };See also
Archive formats such as zip
wxZipInputStream
wxZipOutputStream
wxZipNotifier
Field availability
When reading a zip from a stream that is seekable, GetNextEntry() returns a fully populated wxZipEntry object except for wxZipEntry::GetLocalExtra(). GetLocalExtra() becomes available when the entry is opened, either by calling wxZipInputStream::OpenEntry or by making an attempt to read the entry's data.
For zips on non-seekable streams, the following fields are always available when GetNextEntry() returns:
GetDateTime
GetInternalFormat
GetInternalName
GetFlags
GetLocalExtra
GetMethod
GetName
GetOffset
IsDir
The following fields are also usually available when GetNextEntry() returns, however, if the zip was also written to a non-seekable stream the zipper is permitted to store them after the entry's data. In that case they become available when the entry's data has been read to Eof(), or CloseEntry() has been called. (GetFlags() & wxZIP_SUMS_FOLLOW) != 0 indicates that one or more of these come after the data:
GetCompressedSize
GetCrc
GetSize
The following are stored at the end of the zip, and become available when the end of the zip has been reached, i.e. after GetNextEntry() returns NULL and Eof() is true:
GetComment
GetExternalAttributes
GetExtra
GetMode
GetSystemMadeBy
IsReadOnly
IsMadeByUnix
IsText
Members
wxZipEntry::wxZipEntry
wxZipEntry::Clone
wxZipEntry::Get/SetComment
wxZipEntry::GetCompressedSize
wxZipEntry::GetCrc
wxZipEntry::Get/SetExternalAttributes
wxZipEntry::Get/SetExtra
wxZipEntry::GetFlags
wxZipEntry::GetInternalName
wxZipEntry::Get/SetLocalExtra
wxZipEntry::Get/SetMethod
wxZipEntry::Get/SetMode
wxZipEntry::SetNotifier
wxZipEntry::Get/SetSystemMadeBy
wxZipEntry::IsMadeByUnix
wxZipEntry::IsText/SetIsText
wxZipEntry::operator=
wxZipEntry(const wxString& name = wxEmptyString, const wxDateTime& dt = wxDateTime::Now(), off_t size = wxInvalidOffset)
Constructor.
wxZipEntry(const wxZipEntry& entry)
Copy constructor.
wxZipEntry* Clone() const
Make a copy of this entry.
wxString GetComment() const
void SetComment(const wxString& comment)
A short comment for this entry.
off_t GetCompressedSize() const
The compressed size of this entry in bytes.
wxUint32 GetCrc() const
CRC32 for this entry's data.
wxUint32 GetExternalAttributes() const
void SetExternalAttributes(wxUint32 attr)
The low 8 bits are always the DOS/Windows file attributes for this entry. The values of these attributes are given in the enumeration wxZipAttributes.
The remaining bits can store platform specific permission bits or attributes, and their meaning depends on the value of SetSystemMadeBy(). If IsMadeByUnix() is true then the high 16 bits are unix mode bits.
The following other accessors access these bits:
IsReadOnly/SetIsReadOnly
IsDir/SetIsDir
Get/SetMode
const char* GetExtra() const
size_t GetExtraLen() const
void SetExtra(const char* extra, size_t len)
The extra field from the entry's central directory record.
The extra field is used to store platform or application specific data. See Pkware's document 'appnote.txt' for information on its format.
int GetFlags() const
Returns a combination of the bits flags in the enumeration wxZipFlags.
wxString GetInternalName() const
Returns the entry's filename in the internal format used within the archive. The name can include directory components, i.e. it can be a full path.
The names of directory entries are returned without any trailing path separator. This gives a canonical name that can be used in comparisons.
wxString GetInternalName(const wxString& name, wxPathFormat format = wxPATH_NATIVE, bool* pIsDir = NULL)
A static member that translates a filename into the internal format used within the archive. If the third parameter is provided, the bool pointed to is set to indicate whether the name looks like a directory name (i.e. has a trailing path separator).
See also
Looking up an archive entry by name
const char* GetLocalExtra() const
size_t GetLocalExtraLen() const
void SetLocalExtra(const char* extra, size_t len)
The extra field from the entry's local record.
The extra field is used to store platform or application specific data. See Pkware's document 'appnote.txt' for information on its format.
int GetMethod() const
void SetMethod(int method)
The compression method. The enumeration wxZipMethod lists the possible values.
The default constructor sets this to wxZIP_METHOD_DEFAULT, which allows wxZipOutputStream to choose the method when writing the entry.
int GetMode() const
If IsMadeByUnix() is true then returns the unix permission bits stored in GetExternalAttributes(). Otherwise synthesises them from the DOS attributes.
void SetMode(int mode)
Sets the DOS attributes in GetExternalAttributes() to be consistent with the mode given.
If IsMadeByUnix() is true then also stores mode in GetExternalAttributes().
Note that the default constructor sets GetSystemMadeBy() to wxZIP_SYSTEM_MSDOS by default. So to be able to store unix permissions when creating zips, call SetSystemMadeBy(wxZIP_SYSTEM_UNIX).
void SetNotifier(wxZipNotifier& notifier)
void UnsetNotifier()
Sets the notifier for this entry. Whenever the wxZipInputStream updates this entry, it will then invoke the associated notifier's OnEntryUpdated method.
Setting a notifier is not usually necessary. It is used to handle certain cases when modifying an zip in a pipeline (i.e. between non-seekable streams).
See also
Archives on non-seekable streams
wxZipNotifier
int GetSystemMadeBy() const
void SetSystemMadeBy(int system)
The originating file-system. The default constructor sets this to wxZIP_SYSTEM_MSDOS. Set it to wxZIP_SYSTEM_UNIX in order to be able to store unix permissions using SetMode().
bool IsMadeByUnix() const
Returns true if GetSystemMadeBy() is a flavour of unix.
bool IsText() const
void SetIsText(bool isText = true)
Indicates that this entry's data is text in an 8-bit encoding.
wxZipEntry& operator operator=(const wxZipEntry& entry)
Assignment operator.