1// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Implementation of the byte-level differential compression used internally by 6// Courgette. 7 8#include "courgette/simple_delta.h" 9 10#include "base/basictypes.h" 11#include "base/logging.h" 12 13#include "courgette/third_party/bsdiff.h" 14 15namespace courgette { 16 17namespace { 18 19Status BSDiffStatusToStatus(BSDiffStatus status) { 20 switch (status) { 21 case OK: return C_OK; 22 case CRC_ERROR: return C_BINARY_DIFF_CRC_ERROR; 23 default: return C_GENERAL_ERROR; 24 } 25} 26 27} 28 29Status ApplySimpleDelta(SourceStream* old, SourceStream* delta, 30 SinkStream* target) { 31 return BSDiffStatusToStatus(ApplyBinaryPatch(old, delta, target)); 32} 33 34Status GenerateSimpleDelta(SourceStream* old, SourceStream* target, 35 SinkStream* delta) { 36 VLOG(1) << "GenerateSimpleDelta " << old->Remaining() 37 << " " << target->Remaining(); 38 return BSDiffStatusToStatus(CreateBinaryPatch(old, target, delta)); 39} 40 41} // namespace courgette 42