threads / patch / 4793

patchDo not drop data from '\0' until eol in patch output

Subject: [PATCH] Do not drop data from '\0' until eol in patch output

## tl;dr

4 messages between Jul 7, 2006 and Jul 7, 2006. Diffs are folded; open one to read it.

replies: 3people: 2as markdown or json

Stephan Feder· Jul 7, 2006, 10:33 UTC · lore

The binary file detection is just a heuristic which can well fail. Do not produce garbage patches in these cases.

Signed-off-by: Stephan Feder <sf@b-i-t.de>
---
 diff.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
Show changes to diff.c +3 −1
diff --git a/diff.c b/diff.c
index 507e401..f0450a8 100644
--- a/diff.c
+++ b/diff.c
@@ -329,7 +329,9 @@ static void fn_out_consume(void *priv, c
 	}
 	if (len > 0 && line[len-1] == '\n')
 		len--;
-	printf("%s%.*s%s\n", set, (int) len, line, reset);
+	fputs (set, stdout);
+	fwrite (line, len, 1, stdout);
+	puts (reset);
 }
 
 static char *pprint_rename(const char *a, const char *b)
-- 
1.4.1.gbc483
Junio C Hamano· Jul 7, 2006, 10:52 UTC · re: Stephan Feder · lore

Re: [PATCH] Do not drop data from '\0' until eol in patch output

Stephan Feder <sf@b-i-t.de> writes:
> The binary file detection is just a heuristic which can well fail.
> Do not produce garbage patches in these cases.
>
> Signed-off-by: Stephan Feder <sf@b-i-t.de>
Thanks.

I do not think this patch is _wrong_ per se, but I wonder what you would use a patch like that for. Specifically, do you apply such a patch with NUL and other binary data in it, and if so what tool do you use?

sf· Jul 7, 2006, 11:18 UTC · re: Junio C Hamano · lore

Re: [PATCH] Do not drop data from '\0' until eol in patch output

Junio C Hamano wrote:
Show 14 quoted lines
> Stephan Feder <sf@b-i-t.de> writes:
> 
>> The binary file detection is just a heuristic which can well fail.
>> Do not produce garbage patches in these cases.
>>
>> Signed-off-by: Stephan Feder <sf@b-i-t.de>
> 
> Thanks.
> 
> I do not think this patch is _wrong_ per se, but I wonder what
> you would use a patch like that for.  Specifically, do you apply
> such a patch with NUL and other binary data in it, and if so
> what tool do you use?
> 

GNU patch can apply patches with binary content which are typically produced with GNU diff with --text option.

Junio C Hamano· Jul 7, 2006, 12:03 UTC · re: sf · lore

Re: [PATCH] Do not drop data from '\0' until eol in patch output

sf <sf@b-i-t.de> writes:
> GNU patch can apply patches with binary content which are typically
> produced with GNU diff with --text option.

Hmph. Things must have improved since I looked at it the last time, perhaps 6-7 years ago. I remember that I used "diff -a -u0" as an el-cheapo way to deliber binary contents but found that patch sometimes could not grok such, and ended up writing a small customized C program.

← back to recent threads