]> git.ipfire.org Git - thirdparty/git.git/commitdiff
sequencer: teach write_message() to append an optional LF
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Fri, 21 Oct 2016 12:26:09 +0000 (14:26 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 21 Oct 2016 16:32:35 +0000 (09:32 -0700)
This commit prepares for future callers that will have a pointer/length
to some text to be written that lacks an LF, yet an LF is desired.
Instead of requiring the caller to append an LF to the buffer (and
potentially allocate memory to do so), the write_message() function
learns to append an LF at the end of the file.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sequencer.c

index 300952fc16c86d60d673ea98610cc014dbf211ea..000ce3e5418d51e19cdf381639b896a80902fc56 100644 (file)
@@ -234,7 +234,8 @@ static void print_advice(int show_hint, struct replay_opts *opts)
        }
 }
 
-static int write_message(const void *buf, size_t len, const char *filename)
+static int write_message(const void *buf, size_t len, const char *filename,
+                        int append_eol)
 {
        static struct lock_file msg_file;
 
@@ -245,6 +246,10 @@ static int write_message(const void *buf, size_t len, const char *filename)
                rollback_lock_file(&msg_file);
                return error_errno(_("Could not write to '%s'"), filename);
        }
+       if (append_eol && write(msg_fd, "\n", 1) < 0) {
+               rollback_lock_file(&msg_file);
+               return error_errno(_("Could not write eol to '%s"), filename);
+       }
        if (commit_lock_file(&msg_file) < 0) {
                rollback_lock_file(&msg_file);
                return error(_("Error wrapping up %s."), filename);
@@ -748,13 +753,13 @@ static int do_pick_commit(enum todo_command command, struct commit *commit,
                if (res < 0)
                        return res;
                res |= write_message(msgbuf.buf, msgbuf.len,
-                                    git_path_merge_msg());
+                                    git_path_merge_msg(), 0);
        } else {
                struct commit_list *common = NULL;
                struct commit_list *remotes = NULL;
 
                res = write_message(msgbuf.buf, msgbuf.len,
-                                   git_path_merge_msg());
+                                   git_path_merge_msg(), 0);
 
                commit_list_insert(base, &common);
                commit_list_insert(next, &remotes);