#ifndef UNZIP_H
#define UNZIP_H

#include <zlib.h>
#include <apps.h>



#define ZIP_HEADER_SIZE					30

#define ZIP_HEADER_OFF_PACK_SIZE		0x0012
#define ZIP_HEADER_OFF_UNPACK_SIZE		0x0016
#define ZIP_HEADER_OFF_FILENAME_LEN		0x001A

#define ZIP_HEADER_OFF_MAGIC			0x0000
#define ZIP_HEADER_MAGIC_DATA			0x04034b50		// 'P','K',0x03,0x04 in LittleEndian

#define ZLIB_IN_BUF_SIZE				4*1024					// размер буфера для пак данных
#define ZLIB_OUT_BUF_SIZE				ZLIB_IN_BUF_SIZE*2		// ............. для распак данных

#define ZIP_END_HEADER_SIZE				22				// End header
#define ZIP_MID_HEADER_SIZE				46				// Middle header
#define ZIP_MID_HEADER_MAGIC_DATA		0x02014b50		// 'P','K',0x01,0x02 in LittleEndian
#define ZIP_END_MAGIC_DATA				0x06054b50

UINT32 getint( const char * ptr );
UINT16 get_UINT16( const char * ptr );
void * zcalloc( void * opaque, UINT32 items, UINT32 size );
void   zcfree( void * opaque, void * ptr );

UINT32  UnpackFile(WCHAR *uri_zip, WCHAR *src_file, WCHAR *dst_file);


#endif