]> git.ipfire.org Git - thirdparty/git.git/commitdiff
sequencer: make read_oneliner() accept flags
authorDenton Liu <liu.denton@gmail.com>
Tue, 7 Apr 2020 14:27:52 +0000 (10:27 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 7 Apr 2020 23:57:30 +0000 (16:57 -0700)
In a future commit, we will need read_oneliner() to accept flags other
than just `skip_if_empty`. Instead of having an argument for each flag,
teach read_oneliner() to accept the bitfield `flags` instead. For now,
only recognize the `READ_ONELINER_SKIP_IF_EMPTY` flag. More flags will
be added in a future commit.

The result of this is that parallel topics which introduce invocations
of read_oneliner() will still be compatible with this new function
signature since, instead of passing 1 or 0 for `skip_if_empty`, they'll
be passing 1 or 0 to `flags`, which gives equivalent behavior.

Mechanically fix up invocations of read_oneliner() with the following
spatch

@@
expression a, b;
@@
  read_oneliner(a, b,
- 1
+ READ_ONELINER_SKIP_IF_EMPTY
  )

and manually break up long lines in the result.

Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sequencer.c

index a961cf5a9bea1736547aec6fc2d115ffb18c4e82..6c4e8743ef26bcbece6974bb5fcd1a2515980b60 100644 (file)
@@ -419,6 +419,8 @@ static int write_message(const void *buf, size_t len, const char *filename,
        return 0;
 }
 
+#define READ_ONELINER_SKIP_IF_EMPTY (1 << 0)
+
 /*
  * Reads a file that was presumably written by a shell script, i.e. with an
  * end-of-line marker that needs to be stripped.
@@ -429,7 +431,7 @@ static int write_message(const void *buf, size_t len, const char *filename,
  * Returns 1 if the file was read, 0 if it could not be read or does not exist.
  */
 static int read_oneliner(struct strbuf *buf,
-       const char *path, int skip_if_empty)
+       const char *path, unsigned flags)
 {
        int orig_len = buf->len;
 
@@ -445,7 +447,7 @@ static int read_oneliner(struct strbuf *buf,
                buf->buf[buf->len] = '\0';
        }
 
-       if (skip_if_empty && buf->len == orig_len)
+       if ((flags & READ_ONELINER_SKIP_IF_EMPTY) && buf->len == orig_len)
                return 0;
 
        return 1;
@@ -2485,7 +2487,8 @@ static int read_populate_opts(struct replay_opts *opts)
                struct strbuf buf = STRBUF_INIT;
                int ret = 0;
 
-               if (read_oneliner(&buf, rebase_path_gpg_sign_opt(), 1)) {
+               if (read_oneliner(&buf, rebase_path_gpg_sign_opt(),
+                                 READ_ONELINER_SKIP_IF_EMPTY)) {
                        if (!starts_with(buf.buf, "-S"))
                                strbuf_reset(&buf);
                        else {
@@ -2495,7 +2498,8 @@ static int read_populate_opts(struct replay_opts *opts)
                        strbuf_reset(&buf);
                }
 
-               if (read_oneliner(&buf, rebase_path_allow_rerere_autoupdate(), 1)) {
+               if (read_oneliner(&buf, rebase_path_allow_rerere_autoupdate(),
+                                 READ_ONELINER_SKIP_IF_EMPTY)) {
                        if (!strcmp(buf.buf, "--rerere-autoupdate"))
                                opts->allow_rerere_auto = RERERE_AUTOUPDATE;
                        else if (!strcmp(buf.buf, "--no-rerere-autoupdate"))
@@ -2527,7 +2531,8 @@ static int read_populate_opts(struct replay_opts *opts)
                strbuf_reset(&buf);
 
                if (read_oneliner(&opts->current_fixups,
-                                 rebase_path_current_fixups(), 1)) {
+                                 rebase_path_current_fixups(),
+                                 READ_ONELINER_SKIP_IF_EMPTY)) {
                        const char *p = opts->current_fixups.buf;
                        opts->current_fixup_count = 1;
                        while ((p = strchr(p, '\n'))) {
@@ -3668,7 +3673,8 @@ static int apply_autostash(struct replay_opts *opts)
        struct child_process child = CHILD_PROCESS_INIT;
        int ret = 0;
 
-       if (!read_oneliner(&stash_sha1, rebase_path_autostash(), 1)) {
+       if (!read_oneliner(&stash_sha1, rebase_path_autostash(),
+                          READ_ONELINER_SKIP_IF_EMPTY)) {
                strbuf_release(&stash_sha1);
                return 0;
        }
@@ -4292,7 +4298,8 @@ int sequencer_continue(struct repository *r, struct replay_opts *opts)
                struct strbuf buf = STRBUF_INIT;
                struct object_id oid;
 
-               if (read_oneliner(&buf, rebase_path_stopped_sha(), 1) &&
+               if (read_oneliner(&buf, rebase_path_stopped_sha(),
+                                 READ_ONELINER_SKIP_IF_EMPTY) &&
                    !get_oid_committish(buf.buf, &oid))
                        record_in_rewritten(&oid, peek_command(&todo_list, 0));
                strbuf_release(&buf);