write_file_v(): do not leave incomplete line at the end

All existing callers to this function use it to produce a text file
or an empty file, and a new callsite that mimick them must end their
payload with a LF.  If they forget to do so, the resulting file will
end with an incomplete line.

Teach write_file_v() to complete the incomplete line, if exists, so
that the callers do not have to.

With this, the caller-side fix in builtin/am.c becomes unnecessary.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Junio C Hamano
2015-08-24 09:39:48 -07:00
parent 12d6ce1dba
commit e7ffa38c6e
2 changed files with 3 additions and 8 deletions

View File

@ -632,6 +632,7 @@ static int write_file_v(const char *path, int fatal,
return -1;
}
strbuf_vaddf(&sb, fmt, params);
strbuf_complete_line(&sb);
if (write_in_full(fd, sb.buf, sb.len) != sb.len) {
int err = errno;
close(fd);