summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Fredrik Kuivinen <freku045@student.liu.se>2005-09-04 19:29:02 +0200
committerLibravatar Junio C Hamano <junkio@cox.net>2005-09-04 11:00:28 -0700
commit433ef8a2fb93627e311217b2a41b3132933e6b0b (patch)
tree9575a97e48350f63844a67dad36681b57f69fb0f
parentgit-applymbox: fix '-c'. (diff)
downloadtgif-433ef8a2fb93627e311217b2a41b3132933e6b0b.tar.xz
[PATCH] Make git-apply understand incomplete lines in non-C locales
The message "\ No newline at end of file" used by diff(1) to mark an incomplete line is locale dependent. We can't assume more than that it begins with "\ ". 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 [jc: the check for the marker still uses the line length being no less than 12 bytes for a sanity check, but I think it is safe to assume that in other locales. I haven't checked the .po files from diff, tho'.] Signed-off-by: Fredrik Kuivinen <freku045@student.liu.se> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--apply.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/apply.c b/apply.c
index e87190ea38..964df2db10 100644
--- a/apply.c
+++ b/apply.c
@@ -672,9 +672,13 @@ static int parse_fragment(char *line, unsigned long size, struct patch *patch, s
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, unsigned long size, struct patch *patch, s
* 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;