mirror of
https://github.com/git/git.git
synced 2024-11-19 07:34:11 +01:00
[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>
This commit is contained in:
parent
07a95d0ed3
commit
433ef8a2fb
10
apply.c
10
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;
|
||||
|
Loading…
Reference in New Issue
Block a user