equal
deleted
inserted
replaced
18 #include "gfx_func.h" |
18 #include "gfx_func.h" |
19 #include <string.h> |
19 #include <string.h> |
20 |
20 |
21 struct MD5File { |
21 struct MD5File { |
22 const char * filename; ///< filename |
22 const char * filename; ///< filename |
23 md5_byte_t hash[16]; ///< md5 sum of the file |
23 uint8 hash[16]; ///< md5 sum of the file |
24 }; |
24 }; |
25 |
25 |
26 struct FileList { |
26 struct FileList { |
27 MD5File basic[2]; ///< GRF files that always have to be loaded |
27 MD5File basic[2]; ///< GRF files that always have to be loaded |
28 MD5File landscape[3]; ///< Landscape specific grf files |
28 MD5File landscape[3]; ///< Landscape specific grf files |
106 { |
106 { |
107 size_t size; |
107 size_t size; |
108 FILE *f = FioFOpenFile(file.filename, "rb", DATA_DIR, &size); |
108 FILE *f = FioFOpenFile(file.filename, "rb", DATA_DIR, &size); |
109 |
109 |
110 if (f != NULL) { |
110 if (f != NULL) { |
111 md5_state_t filemd5state; |
111 Md5 checksum; |
112 md5_byte_t buffer[1024]; |
112 uint8 buffer[1024]; |
113 md5_byte_t digest[16]; |
113 uint8 digest[16]; |
114 size_t len; |
114 size_t len; |
115 |
115 |
116 md5_init(&filemd5state); |
|
117 while ((len = fread(buffer, 1, (size > sizeof(buffer)) ? sizeof(buffer) : size, f)) != 0 && size != 0) { |
116 while ((len = fread(buffer, 1, (size > sizeof(buffer)) ? sizeof(buffer) : size, f)) != 0 && size != 0) { |
118 size -= len; |
117 size -= len; |
119 md5_append(&filemd5state, buffer, len); |
118 checksum.Append(buffer, len); |
120 } |
119 } |
121 |
120 |
122 FioFCloseFile(f); |
121 FioFCloseFile(f); |
123 |
122 |
124 md5_finish(&filemd5state, digest); |
123 checksum.Finish(digest); |
125 return memcmp(file.hash, digest, sizeof(file.hash)) == 0; |
124 return memcmp(file.hash, digest, sizeof(file.hash)) == 0; |
126 } else { // file not found |
125 } else { // file not found |
127 return false; |
126 return false; |
128 } |
127 } |
129 } |
128 } |