blob: f86e98e4321c6b19f780364149d705caa67e11d4 [file] [log] [blame]
/*
* Copyright (C) 2017 bigbiff/Dees_Troy TeamWin
* This file is part of TWRP/TeamWin Recovery Project.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __ZIPWRAP_HPP
#define __ZIPWRAP_HPP
#include <string>
#ifdef USE_MINZIP
#include "minzip/Zip.h"
#include "minzip/SysUtil.h"
#else
#include <ziparchive/zip_archive.h>
#include "otautil/SysUtil.h"
#endif
using namespace std;
class ZipWrap {
public:
ZipWrap();
~ZipWrap();
bool Open(const char* file, MemMapping* map);
void Close();
bool EntryExists(const string& filename);
bool ExtractEntry(const string& source_file, const string& target_file, mode_t mode);
long GetUncompressedSize(const string& filename);
bool ExtractToBuffer(const string& filename, uint8_t* begin);
bool ExtractRecursive(const string& source_dir, const string& target_dir);
#ifdef USE_MINZIP
loff_t GetEntryOffset(const string& filename);
#else
off64_t GetEntryOffset(const string& filename);
ZipArchiveHandle GetZipArchiveHandle();
#endif
private:
#ifdef USE_MINZIP
ZipArchive Zip;
#else
ZipArchiveHandle Zip;
#endif
string zip_file;
bool zip_open;
};
#endif //__ZIPWRAP_HPP