diff options
author | Junio C Hamano <gitster@pobox.com> | 2016-07-19 22:22:23 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-07-19 22:22:23 +0200 |
commit | 2b6456b8089e42232d80672525edbe411ba41549 (patch) | |
tree | b80371caee35146d5cab5c415aac68bfafb1e014 /wrapper.c | |
parent | Merge branch 'jk/printf-format' (diff) | |
parent | branch: use write_file_buf instead of write_file (diff) | |
download | git-2b6456b8089e42232d80672525edbe411ba41549.tar.xz git-2b6456b8089e42232d80672525edbe411ba41549.zip |
Merge branch 'jk/write-file'
General code clean-up around a helper function to write a
single-liner to a file.
* jk/write-file:
branch: use write_file_buf instead of write_file
use write_file_buf where applicable
write_file: add format attribute
write_file: add pointer+len variant
write_file: use xopen
write_file: drop "gently" form
branch: use non-gentle write_file for branch description
am: ignore return value of write_file()
config: fix bogus fd check when setting up default config
Diffstat (limited to 'wrapper.c')
-rw-r--r-- | wrapper.c | 52 |
1 files changed, 12 insertions, 40 deletions
@@ -651,56 +651,28 @@ int xsnprintf(char *dst, size_t max, const char *fmt, ...) return len; } -static int write_file_v(const char *path, int fatal, - const char *fmt, va_list params) +void write_file_buf(const char *path, const char *buf, size_t len) { - struct strbuf sb = STRBUF_INIT; - int fd = open(path, O_RDWR | O_CREAT | O_TRUNC, 0666); - if (fd < 0) { - if (fatal) - die_errno(_("could not open %s for writing"), path); - 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); - strbuf_release(&sb); - errno = err; - if (fatal) - die_errno(_("could not write to %s"), path); - return -1; - } - strbuf_release(&sb); - if (close(fd)) { - if (fatal) - die_errno(_("could not close %s"), path); - return -1; - } - return 0; + int fd = xopen(path, O_WRONLY | O_CREAT | O_TRUNC, 0666); + if (write_in_full(fd, buf, len) != len) + die_errno(_("could not write to %s"), path); + if (close(fd)) + die_errno(_("could not close %s"), path); } -int write_file(const char *path, const char *fmt, ...) +void write_file(const char *path, const char *fmt, ...) { - int status; va_list params; + struct strbuf sb = STRBUF_INIT; va_start(params, fmt); - status = write_file_v(path, 1, fmt, params); + strbuf_vaddf(&sb, fmt, params); va_end(params); - return status; -} -int write_file_gently(const char *path, const char *fmt, ...) -{ - int status; - va_list params; + strbuf_complete_line(&sb); - va_start(params, fmt); - status = write_file_v(path, 0, fmt, params); - va_end(params); - return status; + write_file_buf(path, sb.buf, sb.len); + strbuf_release(&sb); } void sleep_millisec(int millisec) |