123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- #ifndef INCLUDED_THIRD_PARTY_IJAR_ZIP_H
- #define INCLUDED_THIRD_PARTY_IJAR_ZIP_H
- #include <sys/stat.h>
- #include "third_party/ijar/common.h"
- namespace devtools_ijar {
- inline bool zipattr_is_dir(u4 attr) { return (attr & 0x10) != 0; }
- inline mode_t zipattr_to_perm(u4 attr) {
- return ((mode_t)((attr >> 16) & 0777));
- }
- class ZipBuilder {
- public:
- virtual ~ZipBuilder() {}
-
- virtual const char* GetError() = 0;
-
-
-
-
-
-
-
- virtual u1* NewFile(const char* filename, const u4 attr) = 0;
-
-
-
-
-
-
- virtual int FinishFile(size_t filelength,
- bool compress = false,
- bool compute_crc = false) = 0;
-
-
-
-
- virtual int WriteEmptyFile(const char* filename) = 0;
-
-
-
-
-
-
-
- virtual int Finish() = 0;
-
-
-
- virtual size_t GetSize() = 0;
-
- virtual int GetNumberFiles() = 0;
-
-
-
-
-
- static ZipBuilder* Create(const char* zip_file, size_t estimated_size);
-
-
-
- static u8 EstimateSize(char const* const* files, char const* const* zip_paths,
- int nb_entries);
- };
- class ZipExtractorProcessor {
- public:
- virtual ~ZipExtractorProcessor() {}
-
-
-
-
- virtual bool Accept(const char* filename, const u4 attr) = 0;
-
-
-
- virtual void Process(const char* filename, const u4 attr,
- const u1* data, const size_t size) = 0;
- };
- class ZipExtractor {
- public:
- virtual ~ZipExtractor() {}
-
- virtual const char* GetError() = 0;
-
-
-
-
- virtual bool ProcessNext() = 0;
-
-
- virtual int ProcessAll();
-
- virtual void Reset() = 0;
-
- virtual size_t GetSize() = 0;
-
-
-
-
-
- virtual u8 CalculateOutputLength() = 0;
-
-
-
-
- static ZipExtractor* Create(const char* filename,
- ZipExtractorProcessor *processor);
- };
- }
- #endif
|