X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=store.cc;h=930794d50d12beccaa4caa5d223d82bea2b3b0e8;hb=ed9f6041c4c8c653e44a8edeeaa846e5db01587b;hp=9d4d1bd8b0ec59c701021f98f2a9d2c7d5dc8dbc;hpb=4c7c830e38130011d1f5cc68934a31619e3b8a85;p=cumulus.git diff --git a/store.cc b/store.cc index 9d4d1bd..930794d 100644 --- a/store.cc +++ b/store.cc @@ -230,11 +230,10 @@ ObjectReference TarSegmentStore::write_object(const char *data, size_t len, segment = new segment_info; segment->name = generate_uuid(); - - string filename = path + "/" + segment->name + ".tar"; - filename += filter_extension; - segment->file = new Tarfile(filename, segment->name); - + segment->basename = segment->name + ".tar"; + segment->basename += filter_extension; + segment->fullname = path + "/" + segment->basename; + segment->file = new Tarfile(segment->fullname, segment->name); segment->count = 0; segments[group] = segment; @@ -281,6 +280,15 @@ void TarSegmentStore::close_segment(const string &group) struct segment_info *segment = segments[group]; delete segment->file; + + if (db != NULL) { + SHA1Checksum segment_checksum; + if (segment_checksum.process_file(segment->fullname.c_str())) { + string checksum = segment_checksum.checksum_str(); + db->SetSegmentChecksum(segment->name, segment->basename, checksum); + } + } + segments.erase(segments.find(group)); delete segment; }