version 1.1, 2003/07/10 16:06:07 |
version 1.2, 2003/07/14 17:43:52 |
|
|
*/ |
*/ |
int last[4]; |
int last[4]; |
int eflag; |
int eflag; |
int oflag; /* indicates whether to mark overlaps (-E or -X)*/ |
int oflag; /* indicates whether to mark overlaps (-E or -X)*/ |
int debug = 0; |
int debug = 0; |
char f1mark[40], f3mark[40]; /* markers for -E and -X */ |
char f1mark[40], f3mark[40]; /* markers for -E and -X */ |
|
|
|
|
{ |
{ |
int ch, i, m, n; |
int ch, i, m, n; |
|
|
eflag = 0; |
eflag = 0; |
oflag = 0; |
oflag = 0; |
while ((ch = getopt(argc, argv, "EeXx3")) != -1) { |
while ((ch = getopt(argc, argv, "EeXx3")) != -1) { |
switch (ch) { |
switch (ch) { |
case 'E': |
case 'E': |
eflag = 3; |
eflag = 3; |
oflag = 1; |
oflag = 1; |
break; |
break; |
case 'e': |
case 'e': |
eflag = 3; |
eflag = 3; |
break; |
break; |
case 'X': |
case 'X': |
oflag = eflag = 1; |
oflag = eflag = 1; |
break; |
break; |
case 'x': |
case 'x': |
eflag = 1; |
eflag = 1; |
break; |
break; |
case '3': |
case '3': |
eflag = 2; |
eflag = 2; |
break; |
break; |
|
|
if (argc < 5) |
if (argc < 5) |
usage(); |
usage(); |
|
|
if (oflag) { |
if (oflag) { |
(void)snprintf(f1mark, sizeof(f1mark), "<<<<<<< %s", |
(void)snprintf(f1mark, sizeof(f1mark), "<<<<<<< %s", |
argc >= 6 ? argv[5] : argv[2]); |
argc >= 6 ? argv[5] : argv[2]); |
(void)snprintf(f3mark, sizeof(f3mark), ">>>>>>> %s", |
(void)snprintf(f3mark, sizeof(f3mark), ">>>>>>> %s", |
argc >= 7 ? argv[6] : argv[4]); |
argc >= 7 ? argv[6] : argv[4]); |
} |
} |
|
|
m = readin(argv[0], d13); |
m = readin(argv[0], d13); |
n = readin(argv[1], d23); |
n = readin(argv[1], d23); |
|
|
* Overlapping changes from file 1 and 2; extend changes |
* Overlapping changes from file 1 and 2; extend changes |
* appropriately to make them coincide. |
* appropriately to make them coincide. |
*/ |
*/ |
if (d1->new.from < d2->new.from) { |
if (d1->new.from < d2->new.from) { |
d2->old.from -= d2->new.from-d1->new.from; |
d2->old.from -= d2->new.from-d1->new.from; |
d2->new.from = d1->new.from; |
d2->new.from = d1->new.from; |
} else if (d2->new.from < d1->new.from) { |
} else if (d2->new.from < d1->new.from) { |
|
|
{ |
{ |
int i; |
int i; |
|
|
for (i = 0; i < 2; i++) |
for (i = 0; i < 2; i++) |
(void)fseek(fp[i], (long)-nchar, 1); |
(void)fseek(fp[i], (long)-nchar, 1); |
} |
} |
|
|
|
|
if (((dup + 1) & eflag) == 0) |
if (((dup + 1) & eflag) == 0) |
return (j); |
return (j); |
j++; |
j++; |
overlap[j] = !dup; |
overlap[j] = !dup; |
if (!dup) |
if (!dup) |
overlapcnt++; |
overlapcnt++; |
de[j].old.from = diff->old.from; |
de[j].old.from = diff->old.from; |
de[j].old.to = diff->old.to; |
de[j].old.to = diff->old.to; |
|
|
char block[BUFSIZ]; |
char block[BUFSIZ]; |
|
|
for (n = n; n > 0; n--) { |
for (n = n; n > 0; n--) { |
if (!oflag || !overlap[n]) |
if (!oflag || !overlap[n]) |
prange(&de[n].old); |
prange(&de[n].old); |
else |
else |
printf("%da\n=======\n", de[n].old.to -1); |
printf("%da\n=======\n", de[n].old.to -1); |
(void)fseek(fp[2], (long)de[n].new.from, 0); |
(void)fseek(fp[2], (long)de[n].new.from, 0); |
for (k = de[n].new.to-de[n].new.from; k > 0; k-= j) { |
for (k = de[n].new.to-de[n].new.from; k > 0; k-= j) { |
j = k > BUFSIZ ? BUFSIZ : k; |
j = k > BUFSIZ ? BUFSIZ : k; |
|
|
trouble(); |
trouble(); |
(void)fwrite(block, 1, j, stdout); |
(void)fwrite(block, 1, j, stdout); |
} |
} |
if (!oflag || !overlap[n]) |
if (!oflag || !overlap[n]) |
printf(".\n"); |
printf(".\n"); |
else { |
else { |
printf("%s\n.\n", f3mark); |
printf("%s\n.\n", f3mark); |
printf("%da\n%s\n.\n", de[n].old.from - 1, f1mark); |
printf("%da\n%s\n.\n", de[n].old.from - 1, f1mark); |
} |
} |
} |
} |
exit(overlapcnt); |
exit(overlapcnt); |
} |
} |
|
|
__dead void |
__dead void |