version 1.47, 2003/07/31 20:00:03 |
version 1.48, 2003/08/08 16:09:26 |
|
|
static void uni_range(int, int); |
static void uni_range(int, int); |
static void dump_context_vec(FILE *, FILE *); |
static void dump_context_vec(FILE *, FILE *); |
static void dump_unified_vec(FILE *, FILE *); |
static void dump_unified_vec(FILE *, FILE *); |
static void prepare(int, FILE *); |
static void prepare(int, FILE *, off_t); |
static void prune(void); |
static void prune(void); |
static void equiv(struct line *, int, struct line *, int, int *); |
static void equiv(struct line *, int, struct line *, int, int *); |
static void unravel(int); |
static void unravel(int); |
|
|
} |
} |
} else if (flags & D_HEADER) |
} else if (flags & D_HEADER) |
printf("%s %s %s\n", diffargs, file1, file2); |
printf("%s %s %s\n", diffargs, file1, file2); |
prepare(0, f1); |
prepare(0, f1, stb1.st_size); |
prepare(1, f2); |
prepare(1, f2, stb2.st_size); |
prune(); |
prune(); |
sort(sfile[0], slen[0]); |
sort(sfile[0], slen[0]); |
sort(sfile[1], slen[1]); |
sort(sfile[1], slen[1]); |
|
|
} |
} |
|
|
static void |
static void |
prepare(int i, FILE *fd) |
prepare(int i, FILE *fd, off_t filesize) |
{ |
{ |
struct line *p; |
struct line *p; |
int j, h; |
int j, h; |
int sz; |
size_t sz; |
|
|
rewind(fd); |
rewind(fd); |
sz = 100; |
|
|
sz = (filesize <= SIZE_MAX ? filesize : SIZE_MAX) / 25; |
|
if (sz < 100) |
|
sz = 100; |
|
|
p = emalloc((sz + 3) * sizeof(struct line)); |
p = emalloc((sz + 3) * sizeof(struct line)); |
for (j = 0; (h = readhash(fd));) { |
for (j = 0; (h = readhash(fd));) { |
if (j == sz) { |
if (j == sz) { |