#include <iostream>
#include <list>
#include <map>
+#include <memory>
#include <set>
#include <sstream>
#include <string>
#include <vector>
-#include "cumulus.h"
#include "exclude.h"
#include "hash.h"
#include "localdb.h"
using std::string;
using std::vector;
using std::ostream;
+using std::unique_ptr;
/* Version information. This will be filled in by the Makefile. */
#ifndef CUMULUS_VERSION
/* If the file is new or changed, we must read in the contents a block at a
* time. */
if (!cached) {
- scoped_ptr<Hash> file_hash(Hash::New());
+ unique_ptr<Hash> file_hash(Hash::New());
Subfile subfile(db);
subfile.load_old_blocks(old_blocks);
double block_age = 0.0;
ObjectReference ref;
- scoped_ptr<Hash> block_hash(Hash::New());
+ unique_ptr<Hash> block_hash(Hash::New());
block_hash->update(block_buf, bytes);
string block_csum = block_hash->digest_str();
while (!refs.empty()) {
ref = refs.front(); refs.pop_front();
+
+ // The file-level checksum guarantees integrity of the data.
+ // To reduce the metadata log size, do not include checksums on
+ // individual objects.
+ ref.clear_checksum();
+
object_list.push_back(ref.to_string());
db->UseObject(ref);
}
file_info["checksum"] = file_hash->digest_str();
}
- // Sanity check: if we are rebuilding the statcache, but the file looks
- // like it hasn't changed, then the newly-computed checksum should match
- // the checksum in the statcache. If not, we have possible disk corruption
- // and report a warning.
- if (flag_rebuild_statcache) {
- if (found
- && metawriter->is_unchanged(&stat_buf)
- && file_info["checksum"] != metawriter->get_checksum()) {
- fprintf(stderr,
- "Warning: Checksum for %s does not match expected value\n"
- " expected: %s\n"
- " actual: %s\n",
- path.c_str(),
- metawriter->get_checksum().c_str(),
- file_info["checksum"].c_str());
- }
+ // Sanity check: if the file looks like it hasn't changed, then the
+ // newly-computed checksum should match the checksum in the statcache. If
+ // not, we have possible disk corruption and report a warning.
+ if (found
+ && metawriter->is_unchanged(&stat_buf)
+ && file_info["checksum"] != metawriter->get_checksum()) {
+ fprintf(stderr,
+ "Warning: Checksum for %s does not match expected value\n"
+ " expected: %s\n"
+ " actual: %s\n",
+ path.c_str(),
+ metawriter->get_checksum().c_str(),
+ file_info["checksum"].c_str());
}
if (verbose && status != NULL)
dbmeta_filename += backup_scheme + "-";
dbmeta_filename += timestamp + ".meta" + filter_extension;
RemoteFile *dbmeta_file = remote->alloc_file(dbmeta_filename, "meta");
- scoped_ptr<FileFilter> dbmeta_filter(FileFilter::New(dbmeta_file->get_fd(),
+ unique_ptr<FileFilter> dbmeta_filter(FileFilter::New(dbmeta_file->get_fd(),
filter_program));
if (dbmeta_filter == NULL) {
fprintf(stderr, "Unable to open descriptor output file: %m\n");
RemoteFile *descriptor_file = remote->alloc_file(desc_filename,
"snapshots");
- scoped_ptr<FileFilter> descriptor_filter(
+ unique_ptr<FileFilter> descriptor_filter(
FileFilter::New(descriptor_file->get_fd(), signature_filter.c_str()));
if (descriptor_filter == NULL) {
fprintf(stderr, "Unable to open descriptor output file: %m\n");