mirror of
https://github.com/clearlinux/bsdiff.git
synced 2026-06-16 02:35:51 +00:00
Rename oldsize->old_size and newsize->new_size
To align better with variable renamings in the forthcoming commit, rename the two variables indicating size of the old and new files first. Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
This commit is contained in:
+63
-63
@@ -74,12 +74,12 @@ static int bsdiff_fulldl;
|
||||
#undef MIN
|
||||
#define MIN(x, y) (((x) < (y)) ? (x) : (y))
|
||||
|
||||
static int64_t matchlen(u_char *old, int64_t oldsize, u_char *new,
|
||||
int64_t newsize)
|
||||
static int64_t matchlen(u_char *old, int64_t old_size, u_char *new,
|
||||
int64_t new_size)
|
||||
{
|
||||
int64_t i;
|
||||
|
||||
for (i = 0; (i < oldsize) && (i < newsize); i++) {
|
||||
for (i = 0; (i < old_size) && (i < new_size); i++) {
|
||||
if (old[i] != new[i]) {
|
||||
break;
|
||||
}
|
||||
@@ -96,27 +96,27 @@ static int64_t matchlen(u_char *old, int64_t oldsize, u_char *new,
|
||||
* updated to the position of the match within OLD, and MAX_LEN is set to the
|
||||
* match length.
|
||||
*/
|
||||
static void search(int64_t *I, u_char *old, int64_t oldsize,
|
||||
u_char *new, int64_t newsize, int64_t st, int64_t en,
|
||||
static void search(int64_t *I, u_char *old, int64_t old_size,
|
||||
u_char *new, int64_t new_size, int64_t st, int64_t en,
|
||||
int64_t *pos, int64_t *max_len)
|
||||
{
|
||||
int64_t x, y;
|
||||
|
||||
/* Initialize max_len for the binary search */
|
||||
if (st == 0 && en == oldsize) {
|
||||
*max_len = matchlen(old, oldsize, new, newsize);
|
||||
if (st == 0 && en == old_size) {
|
||||
*max_len = matchlen(old, old_size, new, new_size);
|
||||
*pos = I[st];
|
||||
}
|
||||
|
||||
/* The binary search terminates here when "en" and "st" are adjacent
|
||||
* indices in the suffix-sorted array. */
|
||||
if (en - st < 2) {
|
||||
x = matchlen(old + I[st], oldsize - I[st], new, newsize);
|
||||
x = matchlen(old + I[st], old_size - I[st], new, new_size);
|
||||
if (x > *max_len) {
|
||||
*max_len = x;
|
||||
*pos = I[st];
|
||||
}
|
||||
y = matchlen(old + I[en], oldsize - I[en], new, newsize);
|
||||
y = matchlen(old + I[en], old_size - I[en], new, new_size);
|
||||
if (y > *max_len) {
|
||||
*max_len = y;
|
||||
*pos = I[en];
|
||||
@@ -127,7 +127,7 @@ static void search(int64_t *I, u_char *old, int64_t oldsize,
|
||||
|
||||
x = st + (en - st) / 2;
|
||||
|
||||
int64_t length = MIN(oldsize - I[x], newsize);
|
||||
int64_t length = MIN(old_size - I[x], new_size);
|
||||
u_char *oldoffset = old + I[x];
|
||||
|
||||
/* This match *could* be the longest one, so check for that here */
|
||||
@@ -139,9 +139,9 @@ static void search(int64_t *I, u_char *old, int64_t oldsize,
|
||||
|
||||
/* Determine how to continue the binary search */
|
||||
if (memcmp(oldoffset, new, length) < 0) {
|
||||
return search(I, old, oldsize, new, newsize, x, en, pos, max_len);
|
||||
return search(I, old, old_size, new, new_size, x, en, pos, max_len);
|
||||
} else {
|
||||
return search(I, old, oldsize, new, newsize, st, x, pos, max_len);
|
||||
return search(I, old, old_size, new, new_size, st, x, pos, max_len);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -386,7 +386,7 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena
|
||||
{
|
||||
int fd, efd;
|
||||
u_char *old_data, *new_data;
|
||||
int64_t oldsize, newsize;
|
||||
int64_t old_size, new_size;
|
||||
int64_t *I, *V;
|
||||
int64_t scan;
|
||||
int64_t pos = 0;
|
||||
@@ -439,12 +439,12 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena
|
||||
return -1;
|
||||
}
|
||||
|
||||
oldsize = old_stat.st_size;
|
||||
old_size = old_stat.st_size;
|
||||
|
||||
/* We may start with an empty file, if so, just mark it for full download
|
||||
* to throw into the pack. In the case that newfile is <200, it will quit
|
||||
* and ask for fulldownload, so we only need to check oldsize */
|
||||
if (oldsize == 0) {
|
||||
* and ask for fulldownload, so we only need to check old_size */
|
||||
if (old_size == 0) {
|
||||
memset(&small_header, 0, sizeof(struct header_v21));
|
||||
memcpy(&small_header.magic, BSDIFF_HDR_FULLDL, 8);
|
||||
|
||||
@@ -471,9 +471,9 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena
|
||||
/* TODO: investigate why this needs to be +1 to not overrun; coverity complains
|
||||
* that we overrun old_data when we calculate differences otherwise. Tenatively,
|
||||
* since this is used in qsufsort, it may need to be +1 like I and V because of
|
||||
* a sentinel byte when sorting. However, newsize does not cause any overruns
|
||||
* a sentinel byte when sorting. However, new_size does not cause any overruns
|
||||
* when created with the regular file size */
|
||||
old_data = mmap(NULL, oldsize + 1, PROT_READ, MAP_SHARED, fd, 0);
|
||||
old_data = mmap(NULL, old_size + 1, PROT_READ, MAP_SHARED, fd, 0);
|
||||
close(fd);
|
||||
|
||||
if (old_data == MAP_FAILED) {
|
||||
@@ -483,19 +483,19 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena
|
||||
|
||||
/* These arrays are size + 1 because suffix sort needs space for the
|
||||
* data + 1 sentinel element to actually do the sorting. Not because
|
||||
* oldsize might be 0. */
|
||||
if ((I = malloc((oldsize + 1) * sizeof(int64_t))) == NULL) {
|
||||
munmap(old_data, oldsize);
|
||||
* old_size might be 0. */
|
||||
if ((I = malloc((old_size + 1) * sizeof(int64_t))) == NULL) {
|
||||
munmap(old_data, old_size);
|
||||
return -1;
|
||||
}
|
||||
if ((V = malloc((oldsize + 1) * sizeof(int64_t))) == NULL) {
|
||||
munmap(old_data, oldsize);
|
||||
if ((V = malloc((old_size + 1) * sizeof(int64_t))) == NULL) {
|
||||
munmap(old_data, old_size);
|
||||
free(I);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (qsufsort(I, V, old_data, oldsize) != 0) {
|
||||
munmap(old_data, oldsize);
|
||||
if (qsufsort(I, V, old_data, old_size) != 0) {
|
||||
munmap(old_data, old_size);
|
||||
free(I);
|
||||
free(V);
|
||||
return -1;
|
||||
@@ -504,19 +504,19 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena
|
||||
free(V);
|
||||
|
||||
if ((fd = open(new_filename, O_RDONLY, 0)) < 0) {
|
||||
munmap(old_data, oldsize);
|
||||
munmap(old_data, old_size);
|
||||
free(I);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (fstat(fd, &new_stat) != 0) {
|
||||
munmap(old_data, oldsize);
|
||||
munmap(old_data, old_size);
|
||||
free(I);
|
||||
close(fd);
|
||||
return -1;
|
||||
}
|
||||
|
||||
newsize = new_stat.st_size;
|
||||
new_size = new_stat.st_size;
|
||||
|
||||
/* Note: testing this to see how diffs between small files affect
|
||||
* updates. Small files seem to cause some problems between certain
|
||||
@@ -526,76 +526,76 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena
|
||||
* the "is bsdiff < 90% of newfile size" check that would otherwise
|
||||
* be performed later on.
|
||||
*/
|
||||
if (newsize < 200) {
|
||||
if (new_size < 200) {
|
||||
memset(&small_header, 0, sizeof(struct header_v21));
|
||||
memcpy(&small_header.magic, BSDIFF_HDR_FULLDL, 8);
|
||||
|
||||
efd = open(delta_filename, O_CREAT | O_EXCL | O_WRONLY, 00644);
|
||||
if (efd < 0) {
|
||||
close(fd);
|
||||
munmap(old_data, oldsize);
|
||||
munmap(old_data, old_size);
|
||||
free(I);
|
||||
return -1;
|
||||
}
|
||||
if ((pf = fdopen(efd, "w")) == NULL) {
|
||||
close(efd);
|
||||
close(fd);
|
||||
munmap(old_data, oldsize);
|
||||
munmap(old_data, old_size);
|
||||
free(I);
|
||||
return -1;
|
||||
}
|
||||
if (fwrite(&small_header, 8, 1, pf) != 1) {
|
||||
fclose(pf);
|
||||
close(fd);
|
||||
munmap(old_data, oldsize);
|
||||
munmap(old_data, old_size);
|
||||
|
||||
free(I);
|
||||
return -1;
|
||||
}
|
||||
fclose(pf);
|
||||
close(fd);
|
||||
munmap(old_data, oldsize);
|
||||
munmap(old_data, old_size);
|
||||
free(I);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ((new_data = malloc(newsize)) == NULL) {
|
||||
if ((new_data = malloc(new_size)) == NULL) {
|
||||
close(fd);
|
||||
munmap(old_data, oldsize);
|
||||
munmap(old_data, old_size);
|
||||
free(I);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (pread(fd, new_data, newsize, 0) != newsize) {
|
||||
if (pread(fd, new_data, new_size, 0) != new_size) {
|
||||
close(fd);
|
||||
munmap(old_data, oldsize);
|
||||
munmap(old_data, old_size);
|
||||
free(new_data);
|
||||
free(I);
|
||||
return -1;
|
||||
}
|
||||
if (close(fd) == -1) {
|
||||
munmap(old_data, oldsize);
|
||||
munmap(old_data, old_size);
|
||||
free(new_data);
|
||||
free(I);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* we can write 3 8 byte tupples extra, so allocate some headroom */
|
||||
if ((cb = malloc(newsize + 25)) == NULL) {
|
||||
munmap(old_data, oldsize);
|
||||
if ((cb = malloc(new_size + 25)) == NULL) {
|
||||
munmap(old_data, old_size);
|
||||
free(new_data);
|
||||
free(I);
|
||||
return -1;
|
||||
}
|
||||
if ((db = malloc(newsize + 25)) == NULL) {
|
||||
munmap(old_data, oldsize);
|
||||
if ((db = malloc(new_size + 25)) == NULL) {
|
||||
munmap(old_data, old_size);
|
||||
free(new_data);
|
||||
free(cb);
|
||||
free(I);
|
||||
return -1;
|
||||
}
|
||||
if ((eb = malloc(newsize + 25)) == NULL) {
|
||||
munmap(old_data, oldsize);
|
||||
if ((eb = malloc(new_size + 25)) == NULL) {
|
||||
munmap(old_data, old_size);
|
||||
free(new_data);
|
||||
free(cb);
|
||||
free(db);
|
||||
@@ -612,15 +612,15 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena
|
||||
lastscan = 0;
|
||||
lastpos = 0;
|
||||
lastoffset = 0;
|
||||
while (scan < newsize) {
|
||||
while (scan < new_size) {
|
||||
oldscore = 0;
|
||||
|
||||
for (scsc = scan += len; scan < newsize; scan++) {
|
||||
search(I, old_data, oldsize, new_data + scan, newsize - scan,
|
||||
0, oldsize, &pos, &len);
|
||||
for (scsc = scan += len; scan < new_size; scan++) {
|
||||
search(I, old_data, old_size, new_data + scan, new_size - scan,
|
||||
0, old_size, &pos, &len);
|
||||
|
||||
for (; scsc < scan + len; scsc++) {
|
||||
if ((scsc + lastoffset < oldsize) &&
|
||||
if ((scsc + lastoffset < old_size) &&
|
||||
(old_data[scsc + lastoffset] == new_data[scsc])) {
|
||||
oldscore++;
|
||||
}
|
||||
@@ -631,18 +631,18 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena
|
||||
break;
|
||||
}
|
||||
|
||||
if ((scan + lastoffset < oldsize) &&
|
||||
if ((scan + lastoffset < old_size) &&
|
||||
(old_data[scan + lastoffset] == new_data[scan])) {
|
||||
oldscore--;
|
||||
}
|
||||
}
|
||||
|
||||
if ((len != oldscore) || (scan == newsize)) {
|
||||
if ((len != oldscore) || (scan == new_size)) {
|
||||
s = 0;
|
||||
Sf = 0;
|
||||
lenf = 0;
|
||||
for (i = 0;
|
||||
(lastscan + i < scan) && (lastpos + i < oldsize);) {
|
||||
(lastscan + i < scan) && (lastpos + i < old_size);) {
|
||||
if (old_data[lastpos + i] == new_data[lastscan + i]) {
|
||||
s++;
|
||||
}
|
||||
@@ -654,7 +654,7 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena
|
||||
}
|
||||
|
||||
lenb = 0;
|
||||
if (scan < newsize) {
|
||||
if (scan < new_size) {
|
||||
s = 0;
|
||||
Sb = 0;
|
||||
for (i = 1;
|
||||
@@ -707,8 +707,8 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena
|
||||
|
||||
/* checking for control block overflow...
|
||||
* See regression test #15 for an example */
|
||||
if ((int64_t)(cblen + 24) > (newsize + 25)) {
|
||||
munmap(old_data, oldsize);
|
||||
if ((int64_t)(cblen + 24) > (new_size + 25)) {
|
||||
munmap(old_data, old_size);
|
||||
free(new_data);
|
||||
free(cb);
|
||||
free(db);
|
||||
@@ -766,8 +766,8 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena
|
||||
small_header.control_length = cblen;
|
||||
small_header.diff_length = dblen;
|
||||
small_header.extra_length = eblen;
|
||||
small_header.old_file_length = oldsize;
|
||||
small_header.new_file_length = newsize;
|
||||
small_header.old_file_length = old_size;
|
||||
small_header.new_file_length = new_size;
|
||||
small_header.file_mode = new_stat.st_mode;
|
||||
small_header.file_owner = new_stat.st_uid;
|
||||
small_header.file_group = new_stat.st_gid;
|
||||
@@ -777,7 +777,7 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena
|
||||
eblock_set_enc(&small_header.encoding, e_enc);
|
||||
encodings = small_header.encoding;
|
||||
|
||||
if ((first_block + cblen + dblen + eblen > 0.90 * newsize) && (enc != BSDIFF_ENC_NONE)) { /* tune */
|
||||
if ((first_block + cblen + dblen + eblen > 0.90 * new_size) && (enc != BSDIFF_ENC_NONE)) { /* tune */
|
||||
memcpy(&small_header.magic, BSDIFF_HDR_FULLDL, 8);
|
||||
ret = 1;
|
||||
if (fwrite(&small_header, 8, 1, pf) != 1) {
|
||||
@@ -805,8 +805,8 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena
|
||||
large_header.control_length = cblen;
|
||||
large_header.diff_length = dblen;
|
||||
large_header.extra_length = eblen;
|
||||
large_header.old_file_length = oldsize;
|
||||
large_header.new_file_length = newsize;
|
||||
large_header.old_file_length = old_size;
|
||||
large_header.new_file_length = new_size;
|
||||
large_header.file_mode = new_stat.st_mode;
|
||||
large_header.file_owner = new_stat.st_uid;
|
||||
large_header.file_group = new_stat.st_gid;
|
||||
@@ -816,7 +816,7 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena
|
||||
eblock_set_enc(&large_header.encoding, e_enc);
|
||||
encodings = large_header.encoding;
|
||||
|
||||
if ((first_block + cblen + dblen + eblen > 0.90 * newsize) && (enc != BSDIFF_ENC_NONE)) { /* tune */
|
||||
if ((first_block + cblen + dblen + eblen > 0.90 * new_size) && (enc != BSDIFF_ENC_NONE)) { /* tune */
|
||||
memcpy(&large_header.magic, BSDIFF_HDR_FULLDL, 8);
|
||||
ret = 1;
|
||||
if (fwrite(&large_header, 8, 1, pf) != 1) {
|
||||
@@ -847,7 +847,7 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena
|
||||
}
|
||||
|
||||
bsdiff_files++;
|
||||
bsdiff_newbytes += newsize;
|
||||
bsdiff_newbytes += new_size;
|
||||
bsdiff_outputbytes += first_block + cblen + dblen + eblen;
|
||||
|
||||
if (cblock_get_enc(encodings) == BSDIFF_ENC_NONE) {
|
||||
@@ -901,7 +901,7 @@ fulldl_close_free:
|
||||
}
|
||||
fulldl_free:
|
||||
/* Free the memory we used */
|
||||
munmap(old_data, oldsize);
|
||||
munmap(old_data, old_size);
|
||||
free(new_data);
|
||||
free(cb);
|
||||
free(db);
|
||||
|
||||
+21
-21
@@ -544,7 +544,7 @@ static int apply_delta_v2(int subver, FILE *f,
|
||||
int i, ret, fd;
|
||||
off_t data_offset;
|
||||
off_t ctrllen, difflen, extralen;
|
||||
off_t oldsize, newsize;
|
||||
off_t old_size, new_size;
|
||||
mode_t mode;
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
@@ -561,8 +561,8 @@ static int apply_delta_v2(int subver, FILE *f,
|
||||
ctrllen = header.control_length;
|
||||
difflen = header.diff_length;
|
||||
extralen = header.extra_length;
|
||||
oldsize = header.old_file_length;
|
||||
newsize = header.new_file_length;
|
||||
old_size = header.old_file_length;
|
||||
new_size = header.new_file_length;
|
||||
mode = header.file_mode;
|
||||
uid = header.file_owner;
|
||||
gid = header.file_group;
|
||||
@@ -576,8 +576,8 @@ static int apply_delta_v2(int subver, FILE *f,
|
||||
ctrllen = header.control_length;
|
||||
difflen = header.diff_length;
|
||||
extralen = header.extra_length;
|
||||
oldsize = header.old_file_length;
|
||||
newsize = header.new_file_length;
|
||||
old_size = header.old_file_length;
|
||||
new_size = header.new_file_length;
|
||||
mode = header.file_mode;
|
||||
uid = header.file_owner;
|
||||
gid = header.file_group;
|
||||
@@ -588,7 +588,7 @@ static int apply_delta_v2(int subver, FILE *f,
|
||||
|
||||
if ((ret = check_header(f, encoding,
|
||||
ctrllen, difflen, extralen,
|
||||
oldsize, newsize, data_offset)) < 0) {
|
||||
old_size, new_size, data_offset)) < 0) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -597,29 +597,29 @@ static int apply_delta_v2(int subver, FILE *f,
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = read_file(old_filename, &old_data, oldsize);
|
||||
ret = read_file(old_filename, &old_data, old_size);
|
||||
if (ret < 0) {
|
||||
goto preperror;
|
||||
}
|
||||
|
||||
if (newsize > BSDIFF_MAX_FILESZ) {
|
||||
munmap(old_data, oldsize);
|
||||
if (new_size > BSDIFF_MAX_FILESZ) {
|
||||
munmap(old_data, old_size);
|
||||
ret = -1;
|
||||
goto preperror;
|
||||
}
|
||||
|
||||
/* Allocate newsize+1 bytes instead of newsize bytes to ensure
|
||||
/* Allocate new_size+1 bytes instead of new_size bytes to ensure
|
||||
that we never try to malloc(0) and get a NULL pointer */
|
||||
if ((new_data = malloc(newsize + 1)) == NULL) {
|
||||
munmap(old_data, oldsize);
|
||||
if ((new_data = malloc(new_size + 1)) == NULL) {
|
||||
munmap(old_data, old_size);
|
||||
ret = -1;
|
||||
goto preperror;
|
||||
}
|
||||
memset(new_data, 0, newsize + 1);
|
||||
memset(new_data, 0, new_size + 1);
|
||||
|
||||
oldpos = 0;
|
||||
newpos = 0;
|
||||
while (newpos < newsize) {
|
||||
while (newpos < new_size) {
|
||||
/* Read control data:
|
||||
* ctrl[0] == offset into diff block
|
||||
* ctrl[1] == offset into extra block
|
||||
@@ -641,7 +641,7 @@ static int apply_delta_v2(int subver, FILE *f,
|
||||
}
|
||||
|
||||
/* Sanity-check */
|
||||
if (newpos + ctrl[0] > newsize || ctrl[0] < 0 || newpos + ctrl[0] < 0) {
|
||||
if (newpos + ctrl[0] > new_size || ctrl[0] < 0 || newpos + ctrl[0] < 0) {
|
||||
ret = -1;
|
||||
goto readerror;
|
||||
}
|
||||
@@ -654,7 +654,7 @@ static int apply_delta_v2(int subver, FILE *f,
|
||||
|
||||
/* Add old data to diff string */
|
||||
for (i = 0; i < ctrl[0]; i++) {
|
||||
if ((oldpos + i >= 0) && (oldpos + i < oldsize)) {
|
||||
if ((oldpos + i >= 0) && (oldpos + i < old_size)) {
|
||||
new_data[newpos + i] += old_data[oldpos + i];
|
||||
}
|
||||
}
|
||||
@@ -664,11 +664,11 @@ static int apply_delta_v2(int subver, FILE *f,
|
||||
oldpos += ctrl[0];
|
||||
|
||||
/* Sanity-check */
|
||||
if (newpos + ctrl[1] > newsize || ctrl[1] < 0 || newpos + ctrl[1] < 0) {
|
||||
if (newpos + ctrl[1] > new_size || ctrl[1] < 0 || newpos + ctrl[1] < 0) {
|
||||
ret = -1;
|
||||
goto readerror;
|
||||
}
|
||||
if (oldpos + ctrl[2] > oldsize || oldpos + ctrl[2] < 0) {
|
||||
if (oldpos + ctrl[2] > old_size || oldpos + ctrl[2] < 0) {
|
||||
ret = -1;
|
||||
goto readerror;
|
||||
}
|
||||
@@ -696,7 +696,7 @@ static int apply_delta_v2(int subver, FILE *f,
|
||||
goto writeerror;
|
||||
}
|
||||
|
||||
if (write(fd, new_data, newsize) != newsize) {
|
||||
if (write(fd, new_data, new_size) != new_size) {
|
||||
unlink(new_filename);
|
||||
close(fd);
|
||||
ret = -1;
|
||||
@@ -719,12 +719,12 @@ static int apply_delta_v2(int subver, FILE *f,
|
||||
|
||||
writeerror:
|
||||
free(new_data);
|
||||
munmap(old_data, oldsize);
|
||||
munmap(old_data, old_size);
|
||||
return ret;
|
||||
|
||||
readerror:
|
||||
free(new_data);
|
||||
munmap(old_data, oldsize);
|
||||
munmap(old_data, old_size);
|
||||
preperror:
|
||||
cfclose(&cf);
|
||||
cfclose(&df);
|
||||
|
||||
+11
-11
@@ -126,8 +126,8 @@ static void split(int64_t *I, int64_t *V, int64_t arraylen, int64_t start, int64
|
||||
}
|
||||
|
||||
/* The old_data (previous file data) is passed into this suffix sort and sorted
|
||||
* accordingly using the I and V arrays, which are both of length oldsize +1. */
|
||||
int qsufsort(int64_t *I, int64_t *V, u_char *old, int64_t oldsize)
|
||||
* accordingly using the I and V arrays, which are both of length old_size +1. */
|
||||
int qsufsort(int64_t *I, int64_t *V, u_char *old, int64_t old_size)
|
||||
{
|
||||
int64_t buckets[QSUF_BUCKET_SIZE];
|
||||
int64_t i, h, len;
|
||||
@@ -135,7 +135,7 @@ int qsufsort(int64_t *I, int64_t *V, u_char *old, int64_t oldsize)
|
||||
for (i = 0; i < QSUF_BUCKET_SIZE; i++) {
|
||||
buckets[i] = 0;
|
||||
}
|
||||
for (i = 0; i < oldsize; i++) {
|
||||
for (i = 0; i < old_size; i++) {
|
||||
buckets[old[i]]++;
|
||||
}
|
||||
for (i = 1; i < QSUF_BUCKET_SIZE; i++) {
|
||||
@@ -146,17 +146,17 @@ int qsufsort(int64_t *I, int64_t *V, u_char *old, int64_t oldsize)
|
||||
}
|
||||
buckets[0] = 0;
|
||||
|
||||
for (i = 0; i < oldsize; i++) {
|
||||
if (buckets[old[i]] > oldsize + 1) {
|
||||
for (i = 0; i < old_size; i++) {
|
||||
if (buckets[old[i]] > old_size + 1) {
|
||||
return -1;
|
||||
}
|
||||
I[++buckets[old[i]]] = i;
|
||||
}
|
||||
|
||||
for (i = 0; i < oldsize; i++) {
|
||||
for (i = 0; i < old_size; i++) {
|
||||
V[i] = buckets[old[i]];
|
||||
}
|
||||
V[oldsize] = 0;
|
||||
V[old_size] = 0;
|
||||
for (i = 1; i < QSUF_BUCKET_SIZE; i++) {
|
||||
if (buckets[i] == buckets[i - 1] + 1) {
|
||||
I[buckets[i]] = -1;
|
||||
@@ -164,9 +164,9 @@ int qsufsort(int64_t *I, int64_t *V, u_char *old, int64_t oldsize)
|
||||
}
|
||||
I[0] = -1;
|
||||
|
||||
for (h = 1; I[0] != -(oldsize + 1); h += h) {
|
||||
for (h = 1; I[0] != -(old_size + 1); h += h) {
|
||||
len = 0;
|
||||
for (i = 0; i < oldsize + 1;) {
|
||||
for (i = 0; i < old_size + 1;) {
|
||||
if (I[i] < 0) {
|
||||
len -= I[i];
|
||||
i -= I[i];
|
||||
@@ -175,7 +175,7 @@ int qsufsort(int64_t *I, int64_t *V, u_char *old, int64_t oldsize)
|
||||
I[i - len] = -len;
|
||||
}
|
||||
len = V[I[i]] + 1 - i;
|
||||
split(I, V, oldsize, i, len, h);
|
||||
split(I, V, old_size, i, len, h);
|
||||
i += len;
|
||||
len = 0;
|
||||
}
|
||||
@@ -185,7 +185,7 @@ int qsufsort(int64_t *I, int64_t *V, u_char *old, int64_t oldsize)
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < oldsize + 1; i++) {
|
||||
for (i = 0; i < old_size + 1; i++) {
|
||||
I[V[i]] = i;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user