src/gfxinit.cpp
changeset 7574 40e7c5575a2a
parent 6917 68ede6d8739e
child 7592 792daecf7c77
equal deleted inserted replaced
7573:505e9d05c10a 7574:40e7c5575a2a
   112 
   112 
   113 /* Calculate and check the MD5 hash of the supplied filename.
   113 /* Calculate and check the MD5 hash of the supplied filename.
   114  * returns true if the checksum is correct */
   114  * returns true if the checksum is correct */
   115 static bool FileMD5(const MD5File file, bool warn)
   115 static bool FileMD5(const MD5File file, bool warn)
   116 {
   116 {
   117 	FILE *f = FioFOpenFile(file.filename);
   117 	size_t size;
       
   118 	FILE *f = FioFOpenFile(file.filename, "rb", DATA_DIR, &size);
   118 
   119 
   119 	if (f != NULL) {
   120 	if (f != NULL) {
   120 		md5_state_t filemd5state;
   121 		md5_state_t filemd5state;
   121 		md5_byte_t buffer[1024];
   122 		md5_byte_t buffer[1024];
   122 		md5_byte_t digest[16];
   123 		md5_byte_t digest[16];
   123 		size_t len;
   124 		size_t len;
   124 
   125 
   125 		md5_init(&filemd5state);
   126 		md5_init(&filemd5state);
   126 		while ((len = fread(buffer, 1, sizeof(buffer), f)) != 0)
   127 		while ((len = fread(buffer, 1, (size > sizeof(buffer)) ? sizeof(buffer) : size, f)) != 0 && size != 0) {
       
   128 			size -= len;
   127 			md5_append(&filemd5state, buffer, len);
   129 			md5_append(&filemd5state, buffer, len);
       
   130 		}
   128 
   131 
   129 		if (ferror(f) && warn) ShowInfoF("Error Reading from %s \n", file.filename);
   132 		if (ferror(f) && warn) ShowInfoF("Error Reading from %s \n", file.filename);
   130 		fclose(f);
   133 		fclose(f);
   131 
   134 
   132 		md5_finish(&filemd5state, digest);
   135 		md5_finish(&filemd5state, digest);