download.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #pragma once
  2. #include <array.h>
  3. #include <string>
  4. typedef struct download_file_t {
  5. //char name[64];
  6. char name[256];
  7. int length;
  8. //char md5[16];
  9. char md5[32];
  10. }download_file_t;
  11. // xml must be have <?xml version="1.0" encoding="utf-8" ?>
  12. array_header_t* download_parse_filelist(const char *xml, int n);
  13. void download_free_filelist(array_header_t* arr);
  14. //int download_check_filelist(const char *base_dir, array_header_t* arr);
  15. //0:表示下载的文件在文件列表里不存在 1:需要下载 2:下载完成
  16. int new_download_check_filelist(const char *base_dir, array_header_t* arr,download_file_t *downloadFile);
  17. //0:删除失败,1删除成功
  18. int download_delete_file(const char *base_dir,download_file_t *downloadFile);
  19. typedef struct download_storage_t {
  20. char temp_path[MAX_PATH];
  21. char info_path[MAX_PATH];
  22. #ifdef RVC_OS_WIN
  23. HANDLE temp_handle;
  24. HANDLE info_handle;
  25. #else
  26. FILE* temp_handle;
  27. FILE* info_handle;
  28. #endif
  29. int offset_block_id;
  30. int length;
  31. }download_storage_t;
  32. //null表示开打失败,否则打开成功
  33. download_storage_t *download_storage_open(const char *base_dir, download_file_t *file);
  34. void download_storage_close(download_storage_t *storage,bool renameFlag,bool deleteFlag);
  35. int download_storage_update(download_storage_t *storage, char *buf, int n);
  36. //0:md5一致,1,2不一致
  37. int download_check_MD5(download_storage_t *storage,download_file_t *dfile);
  38. //int download_get_storage_block_id(const char *base_dir, download_file_t *file, int *block_id);
  39. #ifdef RVC_OS_WIN
  40. #else
  41. //获取出来的字符数组注意释放
  42. unsigned char* GBKToUTF8(const char* string);
  43. char* UTF8ToGBK(const char* string);
  44. int changeFileAtt(const char* path);
  45. #endif // RVC_OS_WIN