void device_image_interface::run_hash(void (*partialhash)(hash_collection &, const unsigned char *, unsigned long, const char *), hash_collection &hashes, const char *types) { UINT32 size; UINT8 *buf = NULL; hashes.reset(); size = (UINT32) length(); buf = (UINT8*)malloc(size); memset(buf,0,size); /* read the file */ fseek(0, SEEK_SET); fread(buf, size); if (partialhash) partialhash(hashes, buf, size, types); else hashes.compute(buf, size, types); /* cleanup */ free(buf); fseek(0, SEEK_SET); }
void device_image_interface::run_hash(void (*partialhash)(hash_collection &, const unsigned char *, unsigned long, const char *), hash_collection &hashes, const char *types) { UINT32 size; dynamic_buffer buf; hashes.reset(); size = (UINT32) length(); buf.resize_and_clear(size); /* read the file */ fseek(0, SEEK_SET); fread(buf, size); if (partialhash) partialhash(hashes, buf, size, types); else hashes.compute(buf, size, types); /* cleanup */ fseek(0, SEEK_SET); }