- std::string path = getPathFromChecksum(name, checksum);
- return updateByPath(name, data, path);
+ std::ostringstream tmp_os(std::ios_base::binary);
+ if(!load(hex_encode(sha1_raw), tmp_os))
+ return false;
+ SHA1 sha1;
+ sha1.addBytes(tmp_os.str().c_str(), tmp_os.str().length());
+ unsigned char *digest = sha1.getDigest();
+ std::string sha1_real_raw((char*)digest, 20);
+ free(digest);
+ if(sha1_real_raw != sha1_raw){
+ verbosestream<<"FileCache["<<m_dir<<"]: filename "<<sha1_real_raw
+ <<" mismatches actual checksum"<<std::endl;
+ return false;
+ }
+ os<<tmp_os.str();
+ return true;