Files

202 lines
6.7 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*================================================================
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 "quec_zip_com.h"
#ifdef __cplusplus
extern "C" {
#endif
/*===========================================================================
* Macro Definition
===========================================================================*/
#define QL_COMPONENT_STORAGE_ZIP (0x8306)
typedef enum
{
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
===========================================================================*/
#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;
/*===========================================================================
* 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_close
*
* Description:
* 关闭压缩文件。
*
* Parameters:
* hz [in] 要操作的zip文件指针。
*
* Return:
* 0 成功。
* other 错误码。
*
*****************************************************************/
int ql_fs_zip_close(HZIP hz);
#ifdef __cplusplus
} /*"C" */
#endif
#endif /* QL_ZIP_H */