123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- /*================================================================
- Copyright (c) 2021, Quectel Wireless Solutions Co., Ltd. All rights reserved.
- Quectel Wireless Solutions Proprietary and Confidential.
- =================================================================*/
-
- /*=================================================================
- EDIT HISTORY FOR MODULE
- This section contains comments describing changes made to the module.
- Notice that changes are listed in reverse chronological order.
- WHEN WHO WHAT, WHERE, WHY
- ------------ ------- -------------------------------------------------------------------------------
- =================================================================*/
- #ifndef QL_ZIP_H
- #define QL_ZIP_H
- #include "ql_api_common.h"
- #include "ql_uart.h"
- #include "time.h"
- #include <time.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*===========================================================================
- * Macro Definition
- ===========================================================================*/
- typedef enum
- {
- QL_FILE_ZIP_OK = 0,
- QL_FILE_ZIP_INVALID_FILE_NAME = (QL_COMPONENT_STORAGE_ZIP << 16) | 400,
- QL_FILE_ZIP_FILE_NOT_FOUND = (QL_COMPONENT_STORAGE_ZIP << 16) | 401,
- QL_FILE_ZIP_DEL_ERROR = (QL_COMPONENT_STORAGE_ZIP << 16) | 402,
- QL_FILE_ZIP_UNZIP_ERROR = (QL_COMPONENT_STORAGE_ZIP << 16) | 403,
- QL_FILE_ZIP_CREATE_ZIP_ERROR = (QL_COMPONENT_STORAGE_ZIP << 16) | 404,
- QL_FILE_ZIP_ADD_FILE_ZIP_ERROR = (QL_COMPONENT_STORAGE_ZIP << 16) | 405,
- QL_FILE_ZIP_ADD_FOLDER_ZIP_ERROR = (QL_COMPONENT_STORAGE_ZIP << 16) | 406,
- QL_FILE_ZIP_CLOSE_ERROR = (QL_COMPONENT_STORAGE_ZIP << 16) | 407,
- QL_FILE_ZIP_UNZIP_NOSPACE = (QL_COMPONENT_STORAGE_ZIP << 16) | 408,
- QL_FILE_ZIP_PARAM_ERR = (QL_COMPONENT_STORAGE_ZIP << 16) | 409,
- }ql_zip_errcode_e;
- /*===========================================================================
- * Typedef
- ===========================================================================*/
- typedef unsigned long DWORD;
- typedef DWORD ZRESULT;
- typedef struct HZIP
- {
- int unused;
- }*HZIP;
- typedef enum
- {
- DELETE_COMPRESS_ENABLE,
- DELETE_COMPRESS_DISABLE
- }ql_unzip_del_type_e;
- typedef struct
- {
- ql_unzip_del_type_e delete_compress;
- }ql_zip_option_t;
- #define QL_UNZIP_ITEM_SIZE 32
- #define QL_UNZIP_FILE_PATH_LEN 128
- typedef enum
- {
- QL_UNZIP_FILE = 0, //当前的item是文件
- QL_UNZIP_DIR, //当前的item是目录
- }ql_unzip_file_type_e;
- typedef struct
- {
- void *item_data; //实际指向客户传入的内存地址
- int item_len; //当前item的长度
- char file_path[QL_UNZIP_FILE_PATH_LEN]; //当前文件的文件路径名称
- ql_unzip_file_type_e file_type; //item文件类型
- }ql_unzip_item_data_s;
- typedef enum
- {
- QL_UNZIP_TO_FILE = 0, //解压到文件系统里
- QL_UNZIP_TO_MEMERY, //解压到内存里
- }ql_unzip_type_e;
- //用来存储unzip过程中,解压数据到内存里
- typedef struct
- {
- void *data; //输入:使用解码到内存时,内存地址
- int total_len; //输入:内存总大小
- int used_len; //输出:当前内存已使用的长度
- ql_unzip_item_data_s item[QL_UNZIP_ITEM_SIZE]; //输出:保存的item信息,
- int item_num; //输出:实际item个数
- }ql_unzip_mem_data_s;
- typedef struct
- {
- char *path_name; //解压文件存放目录,默认解压到同级目录.
- int mode; //0不覆盖 1 覆盖.
- }ql_unzip_file_data_s;
- typedef enum
- {
- QL_FILE_ZIP_DELETE_COMPRESS_FILE=0,//设置解压完成后是否删除压缩文件
- }QL_ZIP_OPT_E;
- /*===========================================================================
- * Functions declaration
- ===========================================================================*/
-
- /*****************************************************************
- * Function: ql_fs_unzip
- *
- * Description: 对文件系统中的压缩文件进行解压
- *
- * Parameters:
- * unZipPath [in] 待解压的文件名.
- * path_name [in] 解压文件存放目录,默认解压到同级目录.
- * mode [in] 解压后有同名文件时是否覆盖
- 0不覆盖 1 覆盖.
- *
- * Return:
- * 0 解压成功。
- * other 错误码。
- *
- *****************************************************************/
- int ql_fs_unzip(const char *unZipPath,char *path_name,int mode);
- /*****************************************************************
- * Function: ql_fs_unzip_ex
- *
- * Description: 对文件系统中的压缩文件进行解压
- *
- * Parameters:
- * unZipPath [in] 待解压的文件名.
- * unzip_type [in] 为QL_UNZIP_TO_FILE时,unzip_data为ql_unzip_file_data_s结构体指针。为QL_UNZIP_TO_MEMERY,unzip_data为ql_unzip_mem_data_s结构体指针
- * unzip_data [in] 根据unzip_type的类型,传入不同的参数
- *
- * Return:
- * 0 解压成功。
- * other 错误码。
- *
- *****************************************************************/
- int ql_fs_unzip_ex(const char *unZipPath,ql_unzip_type_e unzip_type,void *unzip_data);
- /*****************************************************************
- * Function: ql_fs_zip_create
- *
- * Description:
- * 创建一个空的zip。
- *
- * Parameters:
- * fn [in] 某路径下压缩文件名,无路径默认当前工作目录。
- * password [in] password默认无效,无需关注。
- * errcode [in] 错误码。
- *
- * Return:
- * HZIP:zip的文件指针。
- *
- *****************************************************************/
- HZIP ql_fs_zip_create(const char *unZipPath,const char *password,int *errcode);
- /*****************************************************************
- * Function: ql_fs_zip_add_file
- *
- * Description:
- * 将一个文件添加进行压缩。
- *
- * Parameters:
- * hz [in] 创建或者打开zip的文件指针。
- * dstzn [in] 在zip文件中显示的文件名。
- * fn [in] 想要压缩的文件名。
- *
- * Return:
- * 0 成功。
- * other 错误码。
- *
- *****************************************************************/
- int ql_fs_zip_add_file(HZIP hz,const TCHAR *dstzn, const TCHAR *fn);
- /*****************************************************************
- * Function: ql_fs_zip_add_folder
- *
- * Description:
- * 将整个文件夹添加进行压缩。
- *
- * Parameters:
- * hz [in] 创建或者打开zip的文件指针。
- * dstzn [in] 添加压缩的文件夹名。
- *
- * Return:
- * 0 成功。
- * other 错误码。
- *
- *****************************************************************/
- int ql_fs_zip_add_folder(HZIP hz,const TCHAR *dstzn);
- /*****************************************************************
- * Function: ql_fs_zip_setopt
- *
- * Description:
- * 配置压缩功能参数。
- *
- * Parameters:
- * opt_tag [in] zip中配置的参数处理类型。
- * opt_val [in] 配置的参数。
- *
- * Return:
- * 0 成功。
- * other 错误码。
- *
- *****************************************************************/
- int ql_fs_zip_setopt(QL_ZIP_OPT_E opt_tag, void *opt_val);
- /*****************************************************************
- * Function: ql_fs_zip_close
- *
- * Description:
- * 关闭压缩文件。
- * 不可重复调用该函数去关闭一个已经成功关闭的hz。
- *
- * Parameters:
- * hz [in] 要操作的zip文件指针。
- *
- * Return:
- * 0 成功。
- * other 错误码。
- *
- *****************************************************************/
- int ql_fs_zip_close(HZIP hz);
- /*****************************************************************
- * Function: ql_fs_zip_close_ex
- *
- * Description:
- * 关闭压缩文件。
- * 不可重复调用该函数去关闭一个已经成功关闭的hz。
- *
- * Parameters:
- * hz [in] 要操作的zip文件指针的指针。
- *
- * Return:
- * 0 成功。
- * other 错误码。
- *
- *****************************************************************/
- int ql_fs_zip_close_ex(HZIP *hz);
- #ifdef __cplusplus
- } /*"C" */
- #endif
- #endif /* QL_ZIP_H */
|