Browse Source

[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>
maint
Fredrik Kuivinen 20 years ago committed by Junio C Hamano
parent
commit
433ef8a2fb
  1. 10
      apply.c

10
apply.c

@ -672,9 +672,13 @@ static int parse_fragment(char *line, unsigned long size, struct patch *patch, s @@ -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 @@ -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…
Cancel
Save