version 1.70, 2005/12/05 19:53:00 |
version 1.71, 2005/12/10 20:27:45 |
|
|
{ |
{ |
int ch; |
int ch; |
|
|
dap = (struct diff_arg *)malloc(sizeof(*dap)); |
dap = (struct diff_arg *)xmalloc(sizeof(*dap)); |
if (dap == NULL) |
|
return (CVS_EX_DATA); |
|
dap->date1 = dap->date2 = dap->rev1 = dap->rev2 = NULL; |
dap->date1 = dap->date2 = dap->rev1 = dap->rev2 = NULL; |
strlcpy(diffargs, argv[0], sizeof(diffargs)); |
strlcpy(diffargs, argv[0], sizeof(diffargs)); |
|
|
|
|
cvs_diff_cleanup(void) |
cvs_diff_cleanup(void) |
{ |
{ |
if (dap != NULL) { |
if (dap != NULL) { |
free(dap); |
xfree(dap); |
dap = NULL; |
dap = NULL; |
} |
} |
return (0); |
return (0); |
|
|
|
|
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); |
if ((tmp = realloc(member, (slen[1] + 2) * sizeof(int))) == NULL) { |
tmp = xrealloc(member, (slen[1] + 2) * sizeof(int)); |
free(member); |
|
member = NULL; |
|
cvs_log(LP_ERRNO, "failed to resize member"); |
|
goto closem; |
|
} |
|
member = (int *)tmp; |
member = (int *)tmp; |
|
|
class = (int *)file[0]; |
class = (int *)file[0]; |
unsort(sfile[0], slen[0], class); |
unsort(sfile[0], slen[0], class); |
if ((tmp = realloc(class, (slen[0] + 2) * sizeof(int))) == NULL) { |
tmp = xrealloc(class, (slen[0] + 2) * sizeof(int)); |
free(class); |
|
class = NULL; |
|
cvs_log(LP_ERRNO, "failed to resize class"); |
|
goto closem; |
|
} |
|
class = (int *)tmp; |
class = (int *)tmp; |
|
|
if ((klist = malloc((slen[0] + 2) * sizeof(int))) == NULL) { |
klist = xmalloc((slen[0] + 2) * sizeof(int)); |
cvs_log(LP_ERRNO, "failed to allocate klist"); |
|
goto closem; |
|
} |
|
clen = 0; |
clen = 0; |
clistlen = 100; |
clistlen = 100; |
if ((clist = malloc(clistlen * sizeof(cand))) == NULL) { |
clist = xmalloc(clistlen * sizeof(cand)); |
cvs_log(LP_ERRNO, "failed to allocate clist"); |
|
goto closem; |
|
} |
|
|
|
if ((i = stone(class, slen[0], member, klist)) < 0) |
if ((i = stone(class, slen[0], member, klist)) < 0) |
goto closem; |
goto closem; |
|
|
free(member); |
xfree(member); |
free(class); |
xfree(class); |
|
|
if ((tmp = realloc(J, (diff_len[0] + 2) * sizeof(int))) == NULL) { |
tmp = xrealloc(J, (diff_len[0] + 2) * sizeof(int)); |
free(J); |
|
J = NULL; |
|
cvs_log(LP_ERRNO, "failed to resize J"); |
|
goto closem; |
|
} |
|
J = (int *)tmp; |
J = (int *)tmp; |
unravel(klist[i]); |
unravel(klist[i]); |
free(clist); |
xfree(clist); |
free(klist); |
xfree(klist); |
|
|
if ((tmp = realloc(ixold, (diff_len[0] + 2) * sizeof(long))) == NULL) { |
tmp = xrealloc(ixold, (diff_len[0] + 2) * sizeof(long)); |
free(ixold); |
|
ixold = NULL; |
|
cvs_log(LP_ERRNO, "failed to resize ixold"); |
|
goto closem; |
|
} |
|
ixold = (long *)tmp; |
ixold = (long *)tmp; |
if ((tmp = realloc(ixnew, (diff_len[1] + 2) * sizeof(long))) == NULL) { |
|
free(ixnew); |
tmp = xrealloc(ixnew, (diff_len[1] + 2) * sizeof(long)); |
ixnew = NULL; |
|
cvs_log(LP_ERRNO, "failed to resize ixnew"); |
|
goto closem; |
|
} |
|
ixnew = (long *)tmp; |
ixnew = (long *)tmp; |
check(f1, f2); |
check(f1, f2); |
output(file1, f1, file2, f2); |
output(file1, f1, file2, f2); |
|
|
if (sz < 100) |
if (sz < 100) |
sz = 100; |
sz = 100; |
|
|
p = (struct line *)malloc((sz + 3) * sizeof(struct line)); |
p = (struct line *)xmalloc((sz + 3) * sizeof(struct line)); |
if (p == NULL) { |
|
cvs_log(LP_ERRNO, "failed to prepare line array"); |
|
return (-1); |
|
} |
|
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 = realloc(p, (sz + 3) * sizeof(struct line)); |
tmp = xrealloc(p, (sz + 3) * sizeof(struct line)); |
if (tmp == NULL) { |
|
cvs_log(LP_ERRNO, "failed to grow line array"); |
|
free(p); |
|
return (-1); |
|
} |
|
p = (struct line *)tmp; |
p = (struct line *)tmp; |
} |
} |
p[++j].value = h; |
p[++j].value = h; |
|
|
|
|
if (clen == clistlen) { |
if (clen == clistlen) { |
newclistlen = clistlen * 11 / 10; |
newclistlen = clistlen * 11 / 10; |
tmp = realloc(clist, newclistlen * sizeof(cand)); |
tmp = xrealloc(clist, newclistlen * sizeof(cand)); |
if (tmp == NULL) { |
|
cvs_log(LP_ERRNO, "failed to resize clist"); |
|
return (-1); |
|
} |
|
clist = tmp; |
clist = tmp; |
clistlen = newclistlen; |
clistlen = newclistlen; |
} |
} |
|
|
{ |
{ |
int *a, i; |
int *a, i; |
|
|
if ((a = (int *)malloc((l + 1) * sizeof(int))) == NULL) { |
a = (int *)xmalloc((l + 1) * sizeof(int)); |
cvs_log(LP_ERRNO, "failed to allocate sort array"); |
|
return; |
|
} |
|
for (i = 1; i <= l; i++) |
for (i = 1; i <= l; i++) |
a[f[i].serial] = f[i].value; |
a[f[i].serial] = f[i].value; |
for (i = 1; i <= l; i++) |
for (i = 1; i <= l; i++) |
b[i] = a[i]; |
b[i] = a[i]; |
free(a); |
xfree(a); |
} |
} |
|
|
static int |
static int |
|
|
char *line; |
char *line; |
ssize_t nr; |
ssize_t nr; |
|
|
line = malloc(rlen + 1); |
line = xmalloc(rlen + 1); |
if (line == NULL) { |
|
cvs_log(LP_ERRNO, "failed to allocate line"); |
|
return (NULL); |
|
} |
|
if ((nr = pread(fd, line, rlen, off)) < 0) { |
if ((nr = pread(fd, line, rlen, off)) < 0) { |
cvs_log(LP_ERRNO, "preadline failed"); |
cvs_log(LP_ERRNO, "preadline failed"); |
return (NULL); |
return (NULL); |
|
|
int ret; |
int ret; |
|
|
ret = regexec(&ignore_re, line, (size_t)0, NULL, 0); |
ret = regexec(&ignore_re, line, (size_t)0, NULL, 0); |
free(line); |
xfree(line); |
return (ret == 0); /* if it matched, it should be ignored. */ |
return (ret == 0); /* if it matched, it should be ignored. */ |
} |
} |
|
|
|
|
struct context_vec *tmp; |
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; |
if ((tmp = realloc(context_vec_start, max_context * |
tmp = xrealloc(context_vec_start, max_context * |
sizeof(struct context_vec))) == NULL) { |
sizeof(struct context_vec)); |
free(context_vec_start); |
|
context_vec_start = NULL; |
|
cvs_log(LP_ERRNO, |
|
"failed to resize context_vec_start"); |
|
return; |
|
} |
|
context_vec_start = tmp; |
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; |
|
|
cvs_buf_append(diffbuf, str, strlen(str)); |
cvs_buf_append(diffbuf, str, strlen(str)); |
else |
else |
cvs_printf("%s", str); |
cvs_printf("%s", str); |
free(str); |
xfree(str); |
va_end(vap); |
va_end(vap); |
} |
} |