9front - general discussion about 9front
 help / color / mirror / Atom feed
* [9front] [PATCH] diff: retain original file names
@ 2022-05-22 16:41 Ori Bernstein
  2022-05-22 18:45 ` Jacob Moody
  0 siblings, 1 reply; 3+ messages in thread
From: Ori Bernstein @ 2022-05-22 16:41 UTC (permalink / raw)
  To: 9front


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);

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [9front] [PATCH] diff: retain original file names
  2022-05-22 16:41 [9front] [PATCH] diff: retain original file names Ori Bernstein
@ 2022-05-22 18:45 ` Jacob Moody
  2022-05-22 23:24   ` ori
  0 siblings, 1 reply; 3+ messages in thread
From: Jacob Moody @ 2022-05-22 18:45 UTC (permalink / raw)
  To: 9front

On 5/22/22 10:41, Ori Bernstein wrote:
> 
> 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.

This has been a pet peeve of mine, glad to see
I wasn't the only one. Looks good to me! One
small comment inline that I could take or leave.

> ---
> 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*/

Is there any context for why these /*fix*/ comments are here? Could
we just delete them?

> -		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);


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [9front] [PATCH] diff: retain original file names
  2022-05-22 18:45 ` Jacob Moody
@ 2022-05-22 23:24   ` ori
  0 siblings, 0 replies; 3+ messages in thread
From: ori @ 2022-05-22 23:24 UTC (permalink / raw)
  To: 9front

Quoth Jacob Moody <moody@mail.posixcafe.org>:
> On 5/22/22 10:41, Ori Bernstein wrote:
> > 
> > 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.
> 
> This has been a pet peeve of mine, glad to see
> I wasn't the only one. Looks good to me! One
> small comment inline that I could take or leave.
> 

pushed, fixed comment in separate commit.

thanks!


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-05-22 23:25 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-22 16:41 [9front] [PATCH] diff: retain original file names Ori Bernstein
2022-05-22 18:45 ` Jacob Moody
2022-05-22 23:24   ` ori

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).