diff --git a/sys/src/cmd/diff/diff.h b/sys/src/cmd/diff/diff.h index 370dccb20..8aca0439f 100644 --- a/sys/src/cmd/diff/diff.h +++ b/sys/src/cmd/diff/diff.h @@ -23,8 +23,8 @@ void *emalloc(unsigned); void *erealloc(void *, unsigned); void diff(char *, char *, int); void diffdir(char *, char *, int); -void diffreg(char *, char *); -Biobuf *prepare(int, char *); +void diffreg(char *, char *, char *, char *); +Biobuf *prepare(int, char *, char *); void panic(int, char *, ...); void check(Biobuf *, Biobuf *); void change(int, int, int, int); diff --git a/sys/src/cmd/diff/diffio.c b/sys/src/cmd/diff/diffio.c index b5b4964c1..f9608d8d5 100644 --- a/sys/src/cmd/diff/diffio.c +++ b/sys/src/cmd/diff/diffio.c @@ -104,7 +104,7 @@ readhash(Biobuf *bp, char *buf) } Biobuf * -prepare(int i, char *arg) +prepare(int i, char *arg, char *orig) { Line *p; int j, h; @@ -143,11 +143,10 @@ prepare(int i, char *arg) file[i] = p; input[i] = bp; /*fix*/ if (i == 0) { /*fix*/ - file1 = arg; + file1 = orig; firstchange = 0; - } - else - file2 = arg; + } else + file2 = orig; return bp; } diff --git a/sys/src/cmd/diff/diffreg.c b/sys/src/cmd/diff/diffreg.c index 1b8f4e5be..4d90c40ca 100644 --- a/sys/src/cmd/diff/diffreg.c +++ b/sys/src/cmd/diff/diffreg.c @@ -363,16 +363,16 @@ cmp(Biobuf* b1, Biobuf* b2) } void -diffreg(char *f, char *t) +diffreg(char *f, char *fo, char *t, char *to) { Biobuf *b0, *b1; int k; binary = 0; - b0 = prepare(0, f); + b0 = prepare(0, f, fo); if (!b0) return; - b1 = prepare(1, t); + b1 = prepare(1, t, to); if (!b1) { Bterm(b0); return; diff --git a/sys/src/cmd/diff/main.c b/sys/src/cmd/diff/main.c index d91c85561..385537207 100644 --- a/sys/src/cmd/diff/main.c +++ b/sys/src/cmd/diff/main.c @@ -149,7 +149,7 @@ diff(char *f, char *t, int level) Bprint(&stdout, "Common subdirectories: %s and %s\n", fp, tp); } else if (REGULAR_FILE(fsb) && REGULAR_FILE(tsb)) - diffreg(fp, tp); + diffreg(fp, f, tp, t); else { if (REGULAR_FILE(fsb)) { if ((p = utfrrune(f, '/')) == 0) @@ -157,14 +157,14 @@ diff(char *f, char *t, int level) else p++; if (mkpathname(tb, tp, p) == 0) - diffreg(fp, tb); + diffreg(fp, f, tb, t); } else { if ((p = utfrrune(t, '/')) == 0) p = t; else p++; if (mkpathname(fb, fp, p) == 0) - diffreg(fb, tp); + diffreg(fb, f, tp, t); } } free(fsb);