12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #pragma once
- #include <array.h>
- #include <locale>
- #include <codecvt>
- #include <string>
- //GBK转UTF码类
- class chs_codecvt : public std::codecvt_byname<wchar_t, char, std::mbstate_t> {
- public:
- //因不同平台,名称不同,故这里做转换,统一取出不同平台下面的GBK码
- #ifdef RVC_OS_WIN
- chs_codecvt() : codecvt_byname("chs") { }//zh_CN.GBK or .936
- #else
- chs_codecvt() : codecvt_byname("zh_CN.GBK") { }
- #endif // RVC_OS_WIN
- };
- 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 <?xml version="1.0" encoding="utf-8" ?>
- 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);
|