version 1.8, 2007/05/28 23:02:40 |
version 1.9, 2007/05/29 00:19:10 |
|
|
{ |
{ |
FILE *f1, *f2; |
FILE *f1, *f2; |
int i, rval; |
int i, rval; |
void *tmp; |
|
|
|
f1 = f2 = NULL; |
f1 = f2 = NULL; |
rval = D_SAME; |
rval = D_SAME; |
|
|
|
|
member = (int *)file[1]; |
member = (int *)file[1]; |
equiv(sfile[0], slen[0], sfile[1], slen[1], member); |
equiv(sfile[0], slen[0], sfile[1], slen[1], member); |
tmp = xrealloc(member, slen[1] + 2, sizeof(*member)); |
member = xrealloc(member, slen[1] + 2, sizeof(*member)); |
member = tmp; |
|
|
|
class = (int *)file[0]; |
class = (int *)file[0]; |
unsort(sfile[0], slen[0], class); |
unsort(sfile[0], slen[0], class); |
tmp = xrealloc(class, slen[0] + 2, sizeof(*class)); |
class = xrealloc(class, slen[0] + 2, sizeof(*class)); |
class = tmp; |
|
|
|
klist = xcalloc(slen[0] + 2, sizeof(*klist)); |
klist = xcalloc(slen[0] + 2, sizeof(*klist)); |
clen = 0; |
clen = 0; |
|
|
xfree(member); |
xfree(member); |
xfree(class); |
xfree(class); |
|
|
tmp = xrealloc(J, diff_len[0] + 2, sizeof(*J)); |
J = xrealloc(J, diff_len[0] + 2, sizeof(*J)); |
J = tmp; |
|
unravel(klist[i]); |
unravel(klist[i]); |
xfree(clist); |
xfree(clist); |
xfree(klist); |
xfree(klist); |
|
|
tmp = xrealloc(ixold, diff_len[0] + 2, sizeof(*ixold)); |
ixold = xrealloc(ixold, diff_len[0] + 2, sizeof(*ixold)); |
ixold = tmp; |
|
|
|
tmp = xrealloc(ixnew, diff_len[1] + 2, sizeof(*ixnew)); |
ixnew = xrealloc(ixnew, diff_len[1] + 2, sizeof(*ixnew)); |
ixnew = tmp; |
|
check(f1, f2); |
check(f1, f2); |
output(f1, f2); |
output(f1, f2); |
|
|
|
|
static int |
static int |
prepare(int i, FILE *fd, off_t filesize) |
prepare(int i, FILE *fd, off_t filesize) |
{ |
{ |
void *tmp; |
|
struct line *p; |
struct line *p; |
int j, h; |
int j, h; |
size_t sz; |
size_t sz; |
|
|
for (j = 0; (h = readhash(fd));) { |
for (j = 0; (h = readhash(fd));) { |
if (j == (int)sz) { |
if (j == (int)sz) { |
sz = sz * 3 / 2; |
sz = sz * 3 / 2; |
tmp = xrealloc(p, sz + 3, sizeof(*p)); |
p = xrealloc(p, sz + 3, sizeof(*p)); |
p = tmp; |
|
} |
} |
p[++j].value = h; |
p[++j].value = h; |
} |
} |
|
|
static int |
static int |
newcand(int x, int y, int pred) |
newcand(int x, int y, int pred) |
{ |
{ |
struct cand *q, *tmp; |
struct cand *q; |
int newclistlen; |
int newclistlen; |
|
|
if (clen == clistlen) { |
if (clen == clistlen) { |
newclistlen = clistlen * 11 / 10; |
newclistlen = clistlen * 11 / 10; |
tmp = xrealloc(clist, newclistlen, sizeof(*clist)); |
clist = xrealloc(clist, newclistlen, sizeof(*clist)); |
clist = tmp; |
|
clistlen = newclistlen; |
clistlen = newclistlen; |
} |
} |
q = clist + clen; |
q = clist + clen; |
|
|
* Allocate change records as needed. |
* Allocate change records as needed. |
*/ |
*/ |
if (context_vec_ptr == context_vec_end - 1) { |
if (context_vec_ptr == context_vec_end - 1) { |
struct context_vec *tmp; |
|
ptrdiff_t offset = context_vec_ptr - context_vec_start; |
ptrdiff_t offset = context_vec_ptr - context_vec_start; |
max_context <<= 1; |
max_context <<= 1; |
tmp = xrealloc(context_vec_start, max_context, |
context_vec_start = xrealloc(context_vec_start, |
sizeof(*context_vec_start)); |
max_context, sizeof(*context_vec_start)); |
context_vec_start = tmp; |
|
context_vec_end = context_vec_start + max_context; |
context_vec_end = context_vec_start + max_context; |
context_vec_ptr = context_vec_start + offset; |
context_vec_ptr = context_vec_start + offset; |
} |
} |