提交 433ef8a2 编写于 作者: F Fredrik Kuivinen 提交者: Junio C Hamano

[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: NFredrik Kuivinen <freku045@student.liu.se>
Signed-off-by: NJunio C Hamano <junkio@cox.net>
上级 07a95d0e
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册