summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2016-07-07 16:31:58 -0400
committerJunio C Hamano <gitster@pobox.com>2016-07-07 14:23:06 -0700
commit9453f9524774174b77bd5fc92c87b365198fc339 (patch)
treec978b5caa8822f3498819931728ba9cb9daef329
parent05219a1276341e72d8082d76b7f5ed394b7437a4 (diff)
downloadgit-jk/no-write-file-gently.tar.gz
write_file(): drop "gently" formjk/no-write-file-gently
We have two forms of write_file(): one that dies, and one that returns an error. However, the latter has only a single caller, which immediately dies anyway (after producing a message that is not really any more informative than write_file's generic die(), and arguably worse because it does not give the actual filename). Let's convert that site to use the non-gentle form. At that point the gentle form has no callers, and we can simplify the implementation of write_file. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/branch.c5
-rw-r--r--cache.h3
-rw-r--r--wrapper.c54
3 files changed, 13 insertions, 49 deletions
diff --git a/builtin/branch.c b/builtin/branch.c
index 2ecde53bf8..15232c4a42 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -618,10 +618,7 @@ static int edit_branch_description(const char *branch_name)
" %s\n"
"Lines starting with '%c' will be stripped.\n",
branch_name, comment_line_char);
- if (write_file_gently(git_path(edit_description), "%s", buf.buf)) {
- strbuf_release(&buf);
- return error_errno(_("could not write branch description template"));
- }
+ write_file(git_path(edit_description), "%s", buf.buf);
strbuf_reset(&buf);
if (launch_editor(git_path(edit_description), &buf, NULL)) {
strbuf_release(&buf);
diff --git a/cache.h b/cache.h
index 6049f86711..3f6ae242df 100644
--- a/cache.h
+++ b/cache.h
@@ -1734,8 +1734,7 @@ static inline ssize_t write_str_in_full(int fd, const char *str)
return write_in_full(fd, str, strlen(str));
}
-extern int write_file(const char *path, const char *fmt, ...);
-extern int write_file_gently(const char *path, const char *fmt, ...);
+extern void write_file(const char *path, const char *fmt, ...);
/* pager.c */
extern void setup_pager(void);
diff --git a/wrapper.c b/wrapper.c
index 5dc4e15aa9..0349441bde 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -640,56 +640,24 @@ 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(const char *path, const char *fmt, ...)
{
+ va_list params;
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 write_file(const char *path, const char *fmt, ...)
-{
- int status;
- va_list params;
+ if (fd < 0)
+ die_errno(_("could not open %s for writing"), path);
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;
- va_start(params, fmt);
- status = write_file_v(path, 0, fmt, params);
- va_end(params);
- return status;
+ strbuf_complete_line(&sb);
+ if (write_in_full(fd, sb.buf, sb.len) != sb.len)
+ die_errno(_("could not write to %s"), path);
+ strbuf_release(&sb);
+ if (close(fd))
+ die_errno(_("could not close %s"), path);
}
void sleep_millisec(int millisec)