#pragma once #define USEWIN32IOAPI /* #ifndef _WIN32 #ifndef __USE_FILE_OFFSET64 #define __USE_FILE_OFFSET64 #endif #ifndef __USE_LARGEFILE64 #define __USE_LARGEFILE64 #endif #ifndef _LARGEFILE64_SOURCE #define _LARGEFILE64_SOURCE #endif #ifndef _FILE_OFFSET_BIT #define _FILE_OFFSET_BIT 64 #endif #endif */ #include "zconf.h" #include "zip.h" #include "unzip.h" #ifdef _WIN32 #define USEWIN32IOAPI #include "iowin32.h" #endif #define WRITEBUFFERSIZE (8192) #define MAXFILENAME (256) #define CASESENSITIVITY (0) typedef struct Zip_struct { char nombre[256]; int size; int size_descom; int ratio; int compresion; BOOL encript; }Zip_struct; class Cigt_error; class C_zip { public: enum { READ, WRITE, OWERWRITE }; Cigt_error *igt_err; char nombre_zip[256]; zipFile *zf; unzFile *uf; Cigt_zip(void); Cigt_zip(Cigt_error *err); ~Cigt_zip(void); BOOL borrar_error; int nivel_compresion;//nivel de compresion BOOL abre_zip(char *filename,int parametro);//abre zip y deja el handle en zf BOOL addfile(char *newfile,char *dir_in_zip);//introduce el archivo newfile con dir dentro del zip dir_in_zip BOOL descomprimir2file(char *file,char *fileout);//descomprime el archivo file y lo pone en archivo fileout BOOL descomprimir2file(char *file);//Descomprime el archivo file y lo pone en la ruta relativa del zip BOOL descomprimir2buff(char *file,BYTE **buf,int *nb );//Descomprime el archivo file y lo carga en buf BOOL descomprimir();//Descomprime el zip entero y lo pone en la ruta relativa del zip; Zip_struct* listar(int* n);//devuelve una estructura con informacion del contenido del zip,sinedo n el numero de archivos en el zip BOOL cierra_zip();//Cierra handle BOOL abre_zip_temp();//Crea un archivo vacio en la carpeta temporal de windows (el Path del archivo se puede obtener de la variable nombre_zip) private: BOOL crea_dir(char *dir); BOOL descomprimir(char *file,char *fileout,BYTE **bufex,int *n);//descomprime del archivo filezip el archivo file y lo pone en dirout o en el bufex si dirout==NULL BOOL cierra_zip_zf();//cierra el handle escritura BOOL cierra_zip_uf();//cierra handle lectura //funciones auxiliares int isLargeFile(char* filename); int getFileCrc(const char* filenameinzip,void*buf,unsigned long size_buf,unsigned long* result_crc); int filetime(char *f, tm_zip *tmzip, long *dt_); void change_file_date(const char *filename,uLong dosdate,tm_unz tmu_date); }; BOOL lista_file_dir(char *dir,Cstr_array *lista_file,Cigt_error *err);//Lista todos los archivos que contiene la carpeta dir BOOL lista_file_dir(char *dir,char *omite, Cstr_array *lista_file,Cigt_error *err);//Lista todos los archivos que contiene la carpeta dir omitiendo "omite" BOOL es_dir(char *dir);//Comprueba si dir es una carpeta BOOL del_File(char *file,Cigt_error *err);//Borra todos los archivos que contiene la carpeta dir