// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Implementation of the byte-level differential compression used internally by // Courgette. #include "courgette/simple_delta.h" #include "base/logging.h" #include "courgette/third_party/bsdiff/bsdiff.h" namespace courgette { namespace { Status BSDiffStatusToStatus(bsdiff::BSDiffStatus status) { switch (status) { case bsdiff::OK: return C_OK; case bsdiff::CRC_ERROR: return C_BINARY_DIFF_CRC_ERROR; default: return C_GENERAL_ERROR; } } } Status ApplySimpleDelta(SourceStream* old, SourceStream* delta, SinkStream* target) { return BSDiffStatusToStatus(bsdiff::ApplyBinaryPatch(old, delta, target)); } Status GenerateSimpleDelta(SourceStream* old, SourceStream* target, SinkStream* delta) { VLOG(1) << "GenerateSimpleDelta " << old->Remaining() << " " << target->Remaining(); return BSDiffStatusToStatus(bsdiff::CreateBinaryPatch(old, target, delta)); } } // namespace courgette