Thread (2 messages) 2 messages, 1 author, 2016-06-15

[PATCH] Make git-apply understand "\ No newline at end of file" in non-english locales

flat view
DORMANTno replies

From: Fredrik Kuivinen <hidden>
Date: 2016-06-15 22:42:05
Subsystem: the rest · Maintainer: Linus Torvalds

The message "\ No newline at end of file" which sometimes is produced by
diff(1) is locale dependent. We can't assume more than that it begins
with "\ ".

Signed-off-by: Fredrik Kuivinen <redacted>
---

For example, given two files, "foo" and "bar", with appropriate
contents 'diff -u foo bar' will produce the following output on my
system.

--- foo 2005-09-04 18:59:38.000000000 +0200
+++ bar 2005-09-04 18:59:16.000000000 +0200
@@ -1 +1 @@
-foobar
+foo
\ Ingen nyrad vid filslut


 apply.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

18d17c911a200c9d45414af403a145c7ac4f9317
diff --git a/apply.c b/apply.c
--- a/apply.c
+++ b/apply.c
@@ -672,9 +672,13 @@ static int parse_fragment(char *line, un
 			added++;
 			newlines--;
 			break;
-		/* We allow "\ No newline at end of file" */
+
+                /* We allow "\ No newline at end of file". Depending
+                 * on locale settings when the patch was produced we
+                 * don't know what this line looks like. The only
+                 * thing we do know is that it begins with "\ ". */
 		case '\\':
-			if (len < 12 || memcmp(line, "\\ No newline", 12))
+			if (len < 12 || memcmp(line, "\\ ", 2))
 				return -1;
 			break;
 		}
@@ -683,7 +687,7 @@ static int parse_fragment(char *line, un
 	 * it in the above loop because we hit oldlines == newlines == 0
 	 * before seeing it.
 	 */
-	if (12 < size && !memcmp(line, "\\ No newline", 12))
+	if (12 < size && !memcmp(line, "\\ ", 2))
 		offset += linelen(line, size);
 
 	patch->lines_added += added;
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help