Path: blob/main/misc/bdelta/files/patch-bdelta.cpp
18160 views
--- bdelta.cpp.orig 2013-01-30 20:16:01 UTC1+++ bdelta.cpp2@@ -10,6 +10,8 @@3#include "file.h"4#include "compatibility.h"56+#define FEFE7+8const void *f_read(void *f, void *buf, unsigned place, unsigned num) {9fseek((FILE *)f, place, SEEK_SET);10fread_fixed((FILE *)f, buf, num);11@@ -103,9 +105,15 @@ int main(int argc, char **argv) {1213nummatches = bdelta_numMatches(b);1415+#ifdef FEFE16+ long long * copyloc1 = new long long[nummatches + 1];17+ long long * copyloc2 = new long long[nummatches + 1];18+ unsigned * copynum = new unsigned[nummatches + 1];19+#else20unsigned * copyloc1 = new unsigned[nummatches + 1];21unsigned * copyloc2 = new unsigned[nummatches + 1];22unsigned * copynum = new unsigned[nummatches + 1];23+#endif2425FILE *fout = fopen(argv[3], "wb");26if (!fout) {27@@ -115,7 +123,7 @@ int main(int argc, char **argv) {2829const char *magic = "BDT";30fwrite_fixed(fout, magic, 3);31- unsigned short version = 1;32+ unsigned short version = 2;33write_word(fout, version);34unsigned char intsize = 4;35fwrite_fixed(fout, &intsize, 1);36@@ -129,12 +137,22 @@ int main(int argc, char **argv) {37unsigned p1, p2, num;38bdelta_getMatch(b, i, &p1, &p2, &num);39// printf("%*x, %*x, %*x, %*x\n", 10, p1, 10, p2, 10, num, 10, p2-lastp2);40+#ifdef FEFE41+ copyloc1[i] = (long long)p1 - lastp1;42+ copyloc2[i] = (long long)p2 - lastp2;43+ copynum[i] = num;44+ write_varint(fout, copyloc1[i]);45+ write_varint(fout, copyloc2[i]);46+ write_varint(fout, copynum[i]);47+// printf("%u/%u: (%ld -> %u,%ld -> %u,%u)\n",i,nummatches,copyloc1[i],p1,copyloc2[i],p2,copynum[i]);48+#else49copyloc1[i] = p1 - lastp1;50write_dword(fout, copyloc1[i]);51copyloc2[i] = p2 - lastp2;52write_dword(fout, copyloc2[i]);53copynum[i] = num;54write_dword(fout, copynum[i]);55+#endif56lastp1 = p1 + num;57lastp2 = p2 + num;58}596061