version 1.64, 2006/02/22 07:26:08 |
version 1.65, 2007/02/22 01:44:36 |
|
|
static int lastmatchline; |
static int lastmatchline; |
|
|
static FILE *opentemp(const char *); |
static FILE *opentemp(const char *); |
static void output(char *, FILE *, char *, FILE *); |
static void output(char *, FILE *, char *, FILE *, int); |
static void check(char *, FILE *, char *, FILE *); |
static void check(char *, FILE *, char *, FILE *); |
static void range(int, int, char *); |
static void range(int, int, char *); |
static void uni_range(int, int); |
static void uni_range(int, int); |
|
|
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); |
static void unsort(struct line *, int, int *); |
static void unsort(struct line *, int, int *); |
static void change(char *, FILE *, char *, FILE *, int, int, int, int); |
static void change(char *, FILE *, char *, FILE *, int, int, int, int, int); |
static void sort(struct line *, int); |
static void sort(struct line *, int); |
static void print_header(const char *, const char *); |
static void print_header(const char *, const char *); |
static int ignoreline(char *); |
static int ignoreline(char *); |
|
|
rewind(stdout); |
rewind(stdout); |
free(header); |
free(header); |
} |
} |
} else if (flags & D_HEADER) |
} |
printf("%s %s %s\n", diffargs, file1, file2); |
|
prepare(0, f1, stb1.st_size); |
prepare(0, f1, stb1.st_size); |
prepare(1, f2, stb2.st_size); |
prepare(1, f2, stb2.st_size); |
prune(); |
prune(); |
|
|
ixold = erealloc(ixold, (len[0] + 2) * sizeof(long)); |
ixold = erealloc(ixold, (len[0] + 2) * sizeof(long)); |
ixnew = erealloc(ixnew, (len[1] + 2) * sizeof(long)); |
ixnew = erealloc(ixnew, (len[1] + 2) * sizeof(long)); |
check(file1, f1, file2, f2); |
check(file1, f1, file2, f2); |
output(file1, f1, file2, f2); |
output(file1, f1, file2, f2, (flags & D_HEADER)); |
if (ostdout != -1) { |
if (ostdout != -1) { |
int wstatus; |
int wstatus; |
|
|
|
|
} |
} |
|
|
static void |
static void |
output(char *file1, FILE *f1, char *file2, FILE *f2) |
output(char *file1, FILE *f1, char *file2, FILE *f2, int flags) |
{ |
{ |
int m, i0, i1, j0, j1; |
int m, i0, i1, j0, j1; |
|
|
|
|
i1++; |
i1++; |
j1 = J[i1 + 1] - 1; |
j1 = J[i1 + 1] - 1; |
J[i1] = j1; |
J[i1] = j1; |
change(file1, f1, file2, f2, i0, i1, j0, j1); |
change(file1, f1, file2, f2, i0, i1, j0, j1, flags); |
} |
} |
} else { |
} else { |
for (i0 = m; i0 >= 1; i0 = i1 - 1) { |
for (i0 = m; i0 >= 1; i0 = i1 - 1) { |
|
|
i1--; |
i1--; |
j1 = J[i1 - 1] + 1; |
j1 = J[i1 - 1] + 1; |
J[i1] = j1; |
J[i1] = j1; |
change(file1, f1, file2, f2, i1, i0, j1, j0); |
change(file1, f1, file2, f2, i1, i0, j1, j0, flags); |
} |
} |
} |
} |
if (m == 0) |
if (m == 0) |
change(file1, f1, file2, f2, 1, 0, 1, len[1]); |
change(file1, f1, file2, f2, 1, 0, 1, len[1], flags); |
if (format == D_IFDEF) { |
if (format == D_IFDEF) { |
for (;;) { |
for (;;) { |
#define c i0 |
#define c i0 |
|
|
* lines missing from the to file. |
* lines missing from the to file. |
*/ |
*/ |
static void |
static void |
change(char *file1, FILE *f1, char *file2, FILE *f2, int a, int b, int c, int d) |
change(char *file1, FILE *f1, char *file2, FILE *f2, int a, int b, int c, int d, |
|
int flags) |
{ |
{ |
static size_t max_context = 64; |
static size_t max_context = 64; |
int i; |
int i; |
|
|
return; |
return; |
} |
} |
proceed: |
proceed: |
|
if (flags & D_HEADER) |
|
printf("%s %s %s\n", diffargs, file1, file2); |
if (format == D_CONTEXT || format == D_UNIFIED) { |
if (format == D_CONTEXT || format == D_UNIFIED) { |
/* |
/* |
* Allocate change records as needed. |
* Allocate change records as needed. |