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 15 namespace courgette { 16 17 namespace { 18 19 Status 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 29 Status ApplySimpleDelta(SourceStream* old, SourceStream* delta, 30 SinkStream* target) { 31 return BSDiffStatusToStatus(ApplyBinaryPatch(old, delta, target)); 32 } 33 34 Status 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