X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=apply.c;h=3ebbf6b1dcbd52d700c5d0e53cad4c3951cf1979;hb=933693da77857b12ba86d999a601dbdb8ab212ff;hp=c671d9e86cc04e2c6756212e3496c4ef5db8207a;hpb=80bd6f3064a6009cd18a4dab9ce6d29681cec4af;p=git.git diff --git a/apply.c b/apply.c index c671d9e8..3ebbf6b1 100644 --- a/apply.c +++ b/apply.c @@ -387,7 +387,7 @@ static char *git_header_name(char *line) default: continue; case '\n': - break; + return NULL; case '\t': case ' ': second = name+len; for (;;) { @@ -563,7 +563,7 @@ static int find_header(char *line, unsigned long size, int *hdrsize, struct patc struct fragment dummy; if (parse_fragment_header(line, len, &dummy) < 0) continue; - error("patch fragment without header at line %d: %.*s", linenr, len-1, line); + error("patch fragment without header at line %d: %.*s", linenr, (int)len-1, line); } if (size < len + 6) @@ -968,7 +968,7 @@ static int apply_fragments(struct buffer_desc *desc, struct patch *patch) while (frag) { if (apply_one_fragment(desc, frag) < 0) - return error("patch failed: %s:%d", patch->old_name, frag->oldpos); + return error("patch failed: %s:%ld", patch->old_name, frag->oldpos); frag = frag->next; } return 0; @@ -1043,8 +1043,12 @@ static int check_patch(struct patch *patch) return error("%s: already exists in working directory", new_name); if (errno != ENOENT) return error("%s: %s", new_name, strerror(errno)); - if (!patch->new_mode) - patch->new_mode = S_IFREG | 0644; + if (!patch->new_mode) { + if (patch->is_new) + patch->new_mode = S_IFREG | 0644; + else + patch->new_mode = patch->old_mode; + } } if (new_name && old_name) {