Index: courgette/third_party/bsdiff/bsdiff_create.cc |
diff --git a/courgette/third_party/bsdiff_create.cc b/courgette/third_party/bsdiff/bsdiff_create.cc |
similarity index 86% |
rename from courgette/third_party/bsdiff_create.cc |
rename to courgette/third_party/bsdiff/bsdiff_create.cc |
index 87b8ab4eca54b93710931f0eed926f4968f9e42e..46a32b8bda8ac659ec3294f735a14716ebbd6382 100644 |
--- a/courgette/third_party/bsdiff_create.cc |
+++ b/courgette/third_party/bsdiff/bsdiff_create.cc |
@@ -26,7 +26,7 @@ |
--Samuel Huang <huangs@chromium.org> |
*/ |
-#include "courgette/third_party/bsdiff.h" |
+#include "courgette/third_party/bsdiff/bsdiff.h" |
#include <stddef.h> |
#include <stdint.h> |
@@ -39,8 +39,8 @@ |
#include "courgette/crc.h" |
#include "courgette/streams.h" |
-#include "courgette/third_party/paged_array.h" |
-#include "courgette/third_party/qsufsort.h" |
+#include "courgette/third_party/bsdiff/paged_array.h" |
+#include "courgette/third_party/bsdiff/qsufsort.h" |
namespace courgette { |
@@ -54,8 +54,7 @@ static CheckBool WriteHeader(SinkStream* stream, MBSPatchHeader* header) { |
BSDiffStatus CreateBinaryPatch(SourceStream* old_stream, |
SourceStream* new_stream, |
- SinkStream* patch_stream) |
-{ |
+ SinkStream* patch_stream) { |
base::Time start_bsdiff_time = base::Time::Now(); |
VLOG(1) << "Start bsdiff"; |
size_t initial_patch_stream_length = patch_stream->Length(); |
@@ -140,7 +139,6 @@ BSDiffStatus CreateBinaryPatch(SourceStream* old_stream, |
// ssssssssssss |lastscan = scan - lenb| is new seed. |
// x Cases (1) and (3) .... |
- |
int lastscan = 0, lastpos = 0, lastoffset = 0; |
int scan = 0; |
@@ -152,11 +150,11 @@ BSDiffStatus CreateBinaryPatch(SourceStream* old_stream, |
// extend the match at |lastscan|. |
scan += match_length; |
- for (int scsc = scan; scan < newsize; ++scan) { |
+ for (int scsc = scan; scan < newsize; ++scan) { |
match_length = qsuf::search<PagedArray<int>&>( |
I, old, oldsize, newbuf + scan, newsize - scan, &pos); |
- for ( ; scsc < scan + match_length ; scsc++) |
+ for (; scsc < scan + match_length; scsc++) |
if ((scsc + lastoffset < oldsize) && |
(old[scsc + lastoffset] == newbuf[scsc])) |
oldscore++; |
@@ -185,9 +183,13 @@ BSDiffStatus CreateBinaryPatch(SourceStream* old_stream, |
int lenb = 0; |
if (scan < newsize) { // i.e. not case (4); there is a match to extend. |
int score = 0, Sb = 0; |
- for (int i = 1; (scan >= lastscan + i) && (pos >= i); i++) { |
- if (old[pos - i] == newbuf[scan - i]) score++; |
- if (score*2 - i > Sb*2 - lenb) { Sb = score; lenb = i; } |
+ for (int i = 1; (scan >= lastscan + i) && (pos >= i); i++) { |
+ if (old[pos - i] == newbuf[scan - i]) |
+ score++; |
+ if (score * 2 - i > Sb * 2 - lenb) { |
+ Sb = score; |
+ lenb = i; |
+ } |
} |
} |
@@ -200,10 +202,14 @@ BSDiffStatus CreateBinaryPatch(SourceStream* old_stream, |
int lenf = 0; |
{ |
int score = 0, Sf = 0; |
- for (int i = 0; (lastscan + i < scan) && (lastpos + i < oldsize); ) { |
- if (old[lastpos + i] == newbuf[lastscan + i]) score++; |
+ for (int i = 0; (lastscan + i < scan) && (lastpos + i < oldsize);) { |
+ if (old[lastpos + i] == newbuf[lastscan + i]) |
+ score++; |
i++; |
- if (score*2 - i > Sf*2 - lenf) { Sf = score; lenf = i; } |
+ if (score * 2 - i > Sf * 2 - lenf) { |
+ Sf = score; |
+ lenf = i; |
+ } |
} |
} |
@@ -213,18 +219,25 @@ BSDiffStatus CreateBinaryPatch(SourceStream* old_stream, |
int overlap = (lastscan + lenf) - (scan - lenb); |
int score = 0; |
int Ss = 0, lens = 0; |
- for (int i = 0; i < overlap; i++) { |
+ for (int i = 0; i < overlap; i++) { |
if (newbuf[lastscan + lenf - overlap + i] == |
- old[lastpos + lenf - overlap + i]) score++; |
- if (newbuf[scan - lenb + i] == old[pos - lenb + i]) score--; |
- if (score > Ss) { Ss = score; lens = i + 1; } |
+ old[lastpos + lenf - overlap + i]) { |
+ score++; |
+ } |
+ if (newbuf[scan - lenb + i] == old[pos - lenb + i]) { |
+ score--; |
+ } |
+ if (score > Ss) { |
+ Ss = score; |
+ lens = i + 1; |
+ } |
} |
lenf += lens - overlap; |
lenb -= lens; |
}; |
- for (int i = 0; i < lenf; i++) { |
+ for (int i = 0; i < lenf; i++) { |
uint8_t diff_byte = newbuf[lastscan + i] - old[lastpos + i]; |
if (diff_byte) { |
++diff_bytes_nonzero; |
@@ -238,7 +251,7 @@ BSDiffStatus CreateBinaryPatch(SourceStream* old_stream, |
} |
} |
int gap = (scan - lenb) - (lastscan + lenf); |
- for (int i = 0; i < gap; i++) { |
+ for (int i = 0; i < gap; i++) { |
if (!extra_bytes->Write(&newbuf[lastscan + lenf + i], 1)) |
return MEM_ERROR; |
} |
@@ -258,13 +271,13 @@ BSDiffStatus CreateBinaryPatch(SourceStream* old_stream, |
++control_length; |
#ifdef DEBUG_bsmedberg |
- VLOG(1) << StringPrintf("Writing a block: copy: %-8u extra: %-8u seek: " |
- "%+-9d", copy_count, extra_count, |
- seek_adjustment); |
+ VLOG(1) << StringPrintf( |
+ "Writing a block: copy: %-8u extra: %-8u seek: %+-9d", copy_count, |
+ extra_count, seek_adjustment); |
#endif |
- lastscan = scan - lenb; // Include the backward extension in seed. |
- lastpos = pos - lenb; // ditto. |
+ lastscan = scan - lenb; // Include the backward extension in seed. |
+ lastpos = pos - lenb; // ditto. |
lastoffset = lastpos - lastscan; |
} |
} |
@@ -279,9 +292,9 @@ BSDiffStatus CreateBinaryPatch(SourceStream* old_stream, |
static_assert(sizeof(MBS_PATCH_HEADER_TAG) - 1 == sizeof(header.tag), |
"MBS_PATCH_HEADER_TAG must match header field size"); |
memcpy(header.tag, MBS_PATCH_HEADER_TAG, sizeof(header.tag)); |
- header.slen = oldsize; |
- header.scrc32 = CalculateCrc(old, oldsize); |
- header.dlen = newsize; |
+ header.slen = oldsize; |
+ header.scrc32 = CalculateCrc(old, oldsize); |
+ header.dlen = newsize; |
if (!WriteHeader(patch_stream, &header)) |
return MEM_ERROR; |