From: Junio C Hamano <gitster@pobox.com>
To: git@vger.kernel.org
Subject: [PATCH 5/5] write_file(): clean up transitional mess of flag words and terminating LF
Date: Mon, 24 Aug 2015 10:09:46 -0700 [thread overview]
Message-ID: <1440436186-7894-6-git-send-email-gitster@pobox.com> (raw)
In-Reply-To: <1440436186-7894-1-git-send-email-gitster@pobox.com>
Because the function adds necessary LF at the end of an incomplete
line for all callers that do not pass the WRITE_FILE_BINARY option,
and no caller of the function calls with that option, stop callers
to add LF at the end of the payload they pass to the function.
Also, change the callers that pass 1 to flags, that is now a no-op,
to pass 0. In order to catch stray callers (and possible topics in
flight) that still pass 1 to ask the function to die upon error,
protect it with an assert().
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
builtin/am.c | 4 ++--
builtin/init-db.c | 2 +-
builtin/worktree.c | 10 +++++-----
daemon.c | 2 +-
setup.c | 2 +-
submodule.c | 2 +-
transport.c | 2 +-
wrapper.c | 7 ++++++-
8 files changed, 18 insertions(+), 13 deletions(-)
diff --git a/builtin/am.c b/builtin/am.c
index 3423aa3..d804b12 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -199,13 +199,13 @@ static inline const char *am_path(const struct am_state *state, const char *path
static int write_state_text(const struct am_state *state,
const char *name, const char *string)
{
- return write_file(am_path(state, name), 1, "%s\n", string);
+ return write_file(am_path(state, name), 0, "%s", string);
}
static int write_state_count(const struct am_state *state,
const char *name, int value)
{
- return write_file(am_path(state, name), 1, "%d\n", value);
+ return write_file(am_path(state, name), 0, "%d", value);
}
static int write_state_bool(const struct am_state *state,
diff --git a/builtin/init-db.c b/builtin/init-db.c
index 49df78d..84d27b1 100644
--- a/builtin/init-db.c
+++ b/builtin/init-db.c
@@ -378,7 +378,7 @@ static void separate_git_dir(const char *git_dir)
die_errno(_("unable to move %s to %s"), src, git_dir);
}
- write_file(git_link, 1, "gitdir: %s\n", git_dir);
+ write_file(git_link, 0, "gitdir: %s", git_dir);
}
int init_db(const char *template_dir, unsigned int flags)
diff --git a/builtin/worktree.c b/builtin/worktree.c
index 6a264ee..cc0981f 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -213,7 +213,7 @@ static int add_worktree(const char *path, const char **child_argv)
* after the preparation is over.
*/
strbuf_addf(&sb, "%s/locked", sb_repo.buf);
- write_file(sb.buf, 1, "initializing\n");
+ write_file(sb.buf, 0, "initializing");
strbuf_addf(&sb_git, "%s/.git", path);
if (safe_create_leading_directories_const(sb_git.buf))
@@ -223,8 +223,8 @@ static int add_worktree(const char *path, const char **child_argv)
strbuf_reset(&sb);
strbuf_addf(&sb, "%s/gitdir", sb_repo.buf);
- write_file(sb.buf, 1, "%s\n", real_path(sb_git.buf));
- write_file(sb_git.buf, 1, "gitdir: %s/worktrees/%s\n",
+ write_file(sb.buf, 0, "%s", real_path(sb_git.buf));
+ write_file(sb_git.buf, 0, "gitdir: %s/worktrees/%s",
real_path(get_git_common_dir()), name);
/*
* This is to keep resolve_ref() happy. We need a valid HEAD
@@ -241,10 +241,10 @@ static int add_worktree(const char *path, const char **child_argv)
die(_("unable to resolve HEAD"));
strbuf_reset(&sb);
strbuf_addf(&sb, "%s/HEAD", sb_repo.buf);
- write_file(sb.buf, 1, "%s\n", sha1_to_hex(rev));
+ write_file(sb.buf, 0, "%s", sha1_to_hex(rev));
strbuf_reset(&sb);
strbuf_addf(&sb, "%s/commondir", sb_repo.buf);
- write_file(sb.buf, 1, "../..\n");
+ write_file(sb.buf, 0, "../..");
fprintf_ln(stderr, _("Enter %s (identifier %s)"), path, name);
diff --git a/daemon.c b/daemon.c
index d3d3e43..30a3fb4 100644
--- a/daemon.c
+++ b/daemon.c
@@ -1376,7 +1376,7 @@ int main(int argc, char **argv)
sanitize_stdfds();
if (pid_file)
- write_file(pid_file, 1, "%"PRIuMAX"\n", (uintmax_t) getpid());
+ write_file(pid_file, 0, "%"PRIuMAX, (uintmax_t) getpid());
/* prepare argv for serving-processes */
cld_argv = xmalloc(sizeof (char *) * (argc + 2));
diff --git a/setup.c b/setup.c
index 718f4e1..49675eb 100644
--- a/setup.c
+++ b/setup.c
@@ -404,7 +404,7 @@ static void update_linked_gitdir(const char *gitfile, const char *gitdir)
strbuf_addf(&path, "%s/gitfile", gitdir);
if (stat(path.buf, &st) || st.st_mtime + 24 * 3600 < time(NULL))
- write_file(path.buf, WRITE_FILE_GENTLY, "%s\n", gitfile);
+ write_file(path.buf, WRITE_FILE_GENTLY, "%s", gitfile);
strbuf_release(&path);
}
diff --git a/submodule.c b/submodule.c
index 700bbf4..c22fd04 100644
--- a/submodule.c
+++ b/submodule.c
@@ -1103,7 +1103,7 @@ void connect_work_tree_and_git_dir(const char *work_tree, const char *git_dir)
/* Update gitfile */
strbuf_addf(&file_name, "%s/.git", work_tree);
- write_file(file_name.buf, 1, "gitdir: %s\n",
+ write_file(file_name.buf, 0, "gitdir: %s",
relative_path(git_dir, real_work_tree, &rel_path));
/* Update core.worktree setting */
diff --git a/transport.c b/transport.c
index e1821a4..e5638c0 100644
--- a/transport.c
+++ b/transport.c
@@ -291,7 +291,7 @@ static int write_one_ref(const char *name, const struct object_id *oid,
strbuf_addstr(buf, name);
if (safe_create_leading_directories(buf->buf) ||
- write_file(buf->buf, WRITE_FILE_GENTLY, "%s\n", oid_to_hex(oid)))
+ write_file(buf->buf, WRITE_FILE_GENTLY, "%s", oid_to_hex(oid)))
return error("problems writing temporary file %s: %s",
buf->buf, strerror(errno));
strbuf_setlen(buf, len);
diff --git a/wrapper.c b/wrapper.c
index 4cd2ca3..4f464ea 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -626,7 +626,12 @@ int write_file(const char *path, unsigned flags, const char *fmt, ...)
int fatal = !(flags & WRITE_FILE_GENTLY);
struct strbuf sb = STRBUF_INIT;
va_list params;
- int fd = open(path, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ int fd;
+
+ if ((flags & WRITE_FILE_UNUSED_0))
+ die("BUG: write_file() called with bit 0 set");
+
+ fd = open(path, O_RDWR | O_CREAT | O_TRUNC, 0666);
if (fd < 0) {
if (fatal)
die_errno(_("could not open %s for writing"), path);
--
2.5.0-568-g53a3e28
next prev parent reply other threads:[~2015-08-24 17:10 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-20 13:22 Minor builtin 'git am' side-effect SZEDER Gábor
2015-08-20 18:40 ` Junio C Hamano
2015-08-23 5:50 ` [PATCH] am: terminate state files with a newline Paul Tan
2015-08-23 12:30 ` SZEDER Gábor
2015-08-23 19:05 ` Junio C Hamano
2015-08-24 5:13 ` Jeff King
2015-08-24 6:48 ` Junio C Hamano
2015-08-24 6:50 ` Jeff King
2015-08-24 17:09 ` [PATCH 0/5] "am" state file fix with write_file() clean-up Junio C Hamano
2015-08-24 17:09 ` [PATCH 1/5] builtin/am: introduce write_state_*() helper functions Junio C Hamano
2015-08-24 17:09 ` [PATCH 2/5] builtin/am: make sure state files are text Junio C Hamano
2015-08-24 17:09 ` [PATCH 3/5] write_file(): introduce an explicit WRITE_FILE_GENTLY request Junio C Hamano
2015-08-24 18:41 ` Junio C Hamano
2015-08-25 10:08 ` Duy Nguyen
2015-08-25 10:30 ` [PATCH] setup: update the right file in multiple checkouts Nguyễn Thái Ngọc Duy
2015-08-25 16:38 ` Junio C Hamano
2015-08-31 10:29 ` Duy Nguyen
2015-08-24 17:09 ` [PATCH 4/5] write_file(): do not leave incomplete line at the end Junio C Hamano
2015-08-24 17:09 ` Junio C Hamano [this message]
2015-08-24 17:41 ` [PATCH 0/5] "am" state file fix with write_file() clean-up Jeff King
2015-08-24 18:15 ` Junio C Hamano
2015-08-24 18:35 ` Jeff King
2015-08-24 19:57 ` Junio C Hamano
2015-08-24 20:58 ` [PATCH v2 0/6] " Junio C Hamano
2015-08-24 20:58 ` [PATCH v2 1/6] builtin/am: introduce write_state_*() helper functions Junio C Hamano
2015-08-24 20:58 ` [PATCH v2 2/6] builtin/am: make sure state files are text Junio C Hamano
2015-08-24 23:55 ` Jeff King
2015-08-25 16:19 ` Junio C Hamano
2015-08-25 16:47 ` Jeff King
2015-08-25 18:41 ` Junio C Hamano
2015-08-24 20:58 ` [PATCH v2 3/6] write_file(): drop "fatal" parameter Junio C Hamano
2015-08-24 20:58 ` [PATCH v2 4/6] write_file_v(): do not leave incomplete line at the end Junio C Hamano
2015-08-24 20:58 ` [PATCH v2 5/6] write_file(): drop caller-supplied LF from calls to create a one-liner file Junio C Hamano
2015-08-24 20:58 ` [PATCH v2 6/6] write_file(): drop caller-supplied LF from multi-line file Junio C Hamano
2015-08-25 0:02 ` [PATCH v2 0/6] "am" state file fix with write_file() clean-up Jeff King
2015-08-24 23:36 ` [PATCH] am: terminate state files with a newline brian m. carlson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1440436186-7894-6-git-send-email-gitster@pobox.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).