From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 23821 invoked from network); 22 May 2022 16:46:54 -0000 Received: from 9front.inri.net (168.235.81.73) by inbox.vuxu.org with ESMTPUTF8; 22 May 2022 16:46:54 -0000 Received: from mimir.eigenstate.org ([206.124.132.107]) by 9front; Sun May 22 12:44:21 -0400 2022 Received: from abbatoir.myfiosgateway.com (pool-74-108-56-225.nycmny.fios.verizon.net [74.108.56.225]) by mimir.eigenstate.org (OpenSMTPD) with ESMTPSA id 8a99f574 (TLSv1.2:ECDHE-RSA-AES256-SHA:256:NO) for <9front@9front.org>; Sun, 22 May 2022 09:44:15 -0700 (PDT) Message-ID: <2FD13CB117DFE6893A17A959B97B8C03@eigenstate.org> From: Ori Bernstein Date: Sun, 22 May 2022 16:41:47 +0000 To: 9front@9front.org MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: framework-oriented realtime replication-oriented cache Subject: [9front] [PATCH] diff: retain original file names Reply-To: 9front@9front.org Precedence: bulk When diffing non-regular files, like /dev/null, pipes, and similar, diff will generate a temp file to diff against. This is the right thing to do, but the temp file leaks into the diff. This patch retains the original file name all the way through to diff output. --- diff 4649189126e1ad98f9a07afd078096227668bfd1 23f8872bc10fbe9ffd2b0067db1f91d8eaaabb40 --- a/sys/src/cmd/diff/diff.h Sun May 22 12:34:33 2022 +++ b/sys/src/cmd/diff/diff.h Sun May 22 12:41:47 2022 @@ -23,8 +23,8 @@ 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); --- a/sys/src/cmd/diff/diffio.c Sun May 22 12:34:33 2022 +++ b/sys/src/cmd/diff/diffio.c Sun May 22 12:41:47 2022 @@ -104,7 +104,7 @@ } Biobuf * -prepare(int i, char *arg) +prepare(int i, char *arg, char *orig) { Line *p; int j, h; @@ -143,11 +143,10 @@ 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; } --- a/sys/src/cmd/diff/diffreg.c Sun May 22 12:34:33 2022 +++ b/sys/src/cmd/diff/diffreg.c Sun May 22 12:41:47 2022 @@ -363,16 +363,16 @@ } 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; --- a/sys/src/cmd/diff/main.c Sun May 22 12:34:33 2022 +++ b/sys/src/cmd/diff/main.c Sun May 22 12:41:47 2022 @@ -149,7 +149,7 @@ 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 @@ 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);