#pragma once #include #include typedef struct download_file_t { //char name[64]; char name[256]; int length; //char md5[16]; char md5[32]; }download_file_t; // xml must be have array_header_t* download_parse_filelist(const char *xml, int n); void download_free_filelist(array_header_t* arr); //int download_check_filelist(const char *base_dir, array_header_t* arr); //0:表示下载的文件在文件列表里不存在 1:需要下载 2:下载完成 int new_download_check_filelist(const char *base_dir, array_header_t* arr,download_file_t *downloadFile); //0:删除失败,1删除成功 int download_delete_file(const char *base_dir,download_file_t *downloadFile); typedef struct download_storage_t { char temp_path[MAX_PATH]; char info_path[MAX_PATH]; #ifdef RVC_OS_WIN HANDLE temp_handle; HANDLE info_handle; #else FILE* temp_handle; FILE* info_handle; #endif int offset_block_id; int length; }download_storage_t; //null表示开打失败,否则打开成功 download_storage_t *download_storage_open(const char *base_dir, download_file_t *file); void download_storage_close(download_storage_t *storage,bool renameFlag,bool deleteFlag); int download_storage_update(download_storage_t *storage, char *buf, int n); //0:md5一致,1,2不一致 int download_check_MD5(download_storage_t *storage,download_file_t *dfile); //int download_get_storage_block_id(const char *base_dir, download_file_t *file, int *block_id); #ifdef RVC_OS_WIN #else //获取出来的字符数组注意释放 unsigned char* GBKToUTF8(const char* string); char* UTF8ToGBK(const char* string); int changeFileAtt(const char* path); #endif // RVC_OS_WIN