summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: a575603)
raw | patch | inline | side by side (parent: a575603)
author | Junio C Hamano <junkio@cox.net> | |
Fri, 18 Nov 2005 04:46:29 +0000 (20:46 -0800) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Fri, 18 Nov 2005 05:14:29 +0000 (21:14 -0800) |
Some vintage of diff says just "Files X and Y differ\n", instead
of "Binary files X and Y differ\n", so catch both patterns.
Signed-off-by: Junio C Hamano <junkio@cox.net>
of "Binary files X and Y differ\n", so catch both patterns.
Signed-off-by: Junio C Hamano <junkio@cox.net>
apply.c | patch | blob | history |
index 129edb18890196b2947c1e3add85ce5ef9bb0ee7..50be8f3e22d0906d09410b89ebc8d06f928ba631 100644 (file)
--- a/apply.c
+++ b/apply.c
patchsize = parse_single_patch(buffer + offset + hdrsize, size - offset - hdrsize, patch);
if (!patchsize) {
- static const char binhdr[] = "Binary files ";
-
- if (sizeof(binhdr) - 1 < size - offset - hdrsize &&
- !memcmp(binhdr, buffer + hdrsize + offset,
- sizeof(binhdr)-1))
- patch->is_binary = 1;
+ static const char *binhdr[] = {
+ "Binary files ",
+ "Files ",
+ NULL,
+ };
+ int i;
+ int hd = hdrsize + offset;
+ unsigned long llen = linelen(buffer + hd, size - hd);
+
+ if (!memcmp(" differ\n", buffer + hd + llen - 8, 8))
+ for (i = 0; binhdr[i]; i++) {
+ int len = strlen(binhdr[i]);
+ if (len < size - hd &&
+ !memcmp(binhdr[i], buffer + hd, len)) {
+ patch->is_binary = 1;
+ break;
+ }
+ }
/* Empty patch cannot be applied if:
* - it is a binary patch and we do not do binary_replace, or