ReactOS 0.4.15-dev-5865-g640e228
CZipEnumerator Struct Reference

#include <CZipEnumerator.hpp>

Public Member Functions

 CZipEnumerator ()
 
bool initialize (IZip *zip)
 
bool reset ()
 
bool next_unique (const char *prefix, CStringA &name, bool &folder, unz_file_info64 &info)
 
bool next (CStringA &name, unz_file_info64 &info)
 

Private Attributes

CComPtr< IZipm_Zip
 
bool m_First
 
CAtlList< CStringA > m_Returned
 

Detailed Description

Definition at line 8 of file CZipEnumerator.hpp.

Constructor & Destructor Documentation

◆ CZipEnumerator()

CZipEnumerator::CZipEnumerator ( )
inline

Definition at line 15 of file CZipEnumerator.hpp.

16 :m_First(true)
17 {
18 }

Member Function Documentation

◆ initialize()

bool CZipEnumerator::initialize ( IZip zip)
inline

Definition at line 20 of file CZipEnumerator.hpp.

21 {
22 m_Zip = zip;
23 return reset();
24 }
CComPtr< IZip > m_Zip

Referenced by CZipExtract::Extract(), and CEnumZipContents::Initialize().

◆ next()

bool CZipEnumerator::next ( CStringA &  name,
unz_file_info64 info 
)
inline

Definition at line 69 of file CZipEnumerator.hpp.

70 {
71 int err;
72
73 unzFile uf = m_Zip->getZip();
74 if (!m_First)
75 {
76 err = unzGoToNextFile(uf);
78 {
79 return false;
80 }
81 }
82 m_First = false;
83
84 err = unzGetCurrentFileInfo64(uf, &info, NULL, 0, NULL, 0, NULL, 0);
85 if (err == UNZ_OK)
86 {
87 PSTR buf = name.GetBuffer(info.size_filename);
88 err = unzGetCurrentFileInfo64(uf, NULL, buf, name.GetAllocLength(), NULL, 0, NULL, 0);
89 name.ReleaseBuffer(info.size_filename);
90 name.Replace('\\', '/');
91 }
92 return err == UNZ_OK;
93 }
#define NULL
Definition: types.h:112
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define err(...)
Definition: name.c:39
char * PSTR
Definition: typedefs.h:51
int ZEXPORT unzGetCurrentFileInfo64(unzFile file, unz_file_info64 *pfile_info, char *szFileName, uLong fileNameBufferSize, void *extraField, uLong extraFieldBufferSize, char *szComment, uLong commentBufferSize)
Definition: unzip.c:1129
int ZEXPORT unzGoToNextFile(unzFile file)
Definition: unzip.c:1204
#define UNZ_END_OF_LIST_OF_FILE
Definition: unzip.h:75
voidp unzFile
Definition: unzip.h:70
#define UNZ_OK
Definition: unzip.h:74

Referenced by CZipExtract::Extract().

◆ next_unique()

bool CZipEnumerator::next_unique ( const char prefix,
CStringA &  name,
bool folder,
unz_file_info64 info 
)
inline

Definition at line 36 of file CZipEnumerator.hpp.

37 {
38 size_t len = strlen(prefix);
39 CStringA tmp;
40 while (next(tmp, info))
41 {
42 if (!_strnicmp(tmp, prefix, len))
43 {
44 int pos = tmp.Find('/', len);
45 if (pos < 0)
46 {
47 name = tmp.Mid(len);
48 folder = false;
49 }
50 else
51 {
52 name = tmp.Mid(len, pos - len);
53 folder = true;
54 }
55 tmp = name;
56 tmp.MakeLower();
57
58 POSITION it = m_Returned.Find(tmp);
59 if (!name.IsEmpty() && !it)
60 {
61 m_Returned.AddTail(tmp);
62 return true;
63 }
64 }
65 }
66 return false;
67 }
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
#define _strnicmp(_String1, _String2, _MaxCount)
Definition: compat.h:23
GLenum GLsizei len
Definition: glext.h:6722
CAtlStringA CStringA
Definition: atlstr.h:131
static unsigned __int64 next
Definition: rand_nt.c:6
CAtlList< CStringA > m_Returned
Definition: fci.c:116

Referenced by CEnumZipContents::Next(), and CEnumZipContents::Skip().

◆ reset()

bool CZipEnumerator::reset ( )
inline

Definition at line 26 of file CZipEnumerator.hpp.

27 {
28 unzFile uf = m_Zip->getZip();
29 m_First = true;
30 if (unzGoToFirstFile(uf) != UNZ_OK)
31 return false;
32 m_Returned.RemoveAll();
33 return true;
34 }
int ZEXPORT unzGoToFirstFile(unzFile file)
Definition: unzip.c:1183

Referenced by initialize(), and CEnumZipContents::Reset().

Member Data Documentation

◆ m_First

bool CZipEnumerator::m_First
private

Definition at line 12 of file CZipEnumerator.hpp.

Referenced by next(), and reset().

◆ m_Returned

CAtlList<CStringA> CZipEnumerator::m_Returned
private

Definition at line 13 of file CZipEnumerator.hpp.

Referenced by next_unique(), and reset().

◆ m_Zip

CComPtr<IZip> CZipEnumerator::m_Zip
private

Definition at line 11 of file CZipEnumerator.hpp.

Referenced by initialize(), next(), and reset().


The documentation for this struct was generated from the following file: