From: Junio C Hamano <gitster@pobox.com>
To: Lars Schneider <larsxschneider@gmail.com>
Cc: git@vger.kernel.org, peff@peff.net, tboegi@web.de, e@80x24.org,
ttaylorr@github.com, peartben@gmail.com
Subject: Re: [PATCH v6 5/6] convert: move multiple file filter error handling to separate function
Date: Mon, 26 Jun 2017 11:00:42 -0700 [thread overview]
Message-ID: <xmqqinji633p.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <20170625182125.6741-6-larsxschneider@gmail.com> (Lars Schneider's message of "Sun, 25 Jun 2017 20:21:24 +0200")
Lars Schneider <larsxschneider@gmail.com> writes:
> Refactoring the filter error handling is useful for the subsequent patch
> 'convert: add "status=delayed" to filter process protocol'.
>
> In addition, replace the parentheses around the empty "if" block with a
> single semicolon to adhere to the Git style guide.
>
> Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
> ---
> convert.c | 47 ++++++++++++++++++++++++++---------------------
> 1 file changed, 26 insertions(+), 21 deletions(-)
The patch looks obviously correct. Thanks.
> diff --git a/convert.c b/convert.c
> index 9907e3b9ba..e55c034d86 100644
> --- a/convert.c
> +++ b/convert.c
> @@ -565,6 +565,29 @@ static int start_multi_file_filter_fn(struct subprocess_entry *subprocess)
> return err;
> }
>
> +static void handle_filter_error(const struct strbuf *filter_status,
> + struct cmd2process *entry,
> + const unsigned int wanted_capability) {
> + if (!strcmp(filter_status->buf, "error"))
> + ; /* The filter signaled a problem with the file. */
> + else if (!strcmp(filter_status->buf, "abort") && wanted_capability) {
> + /*
> + * The filter signaled a permanent problem. Don't try to filter
> + * files with the same command for the lifetime of the current
> + * Git process.
> + */
> + entry->supported_capabilities &= ~wanted_capability;
> + } else {
> + /*
> + * Something went wrong with the protocol filter.
> + * Force shutdown and restart if another blob requires filtering.
> + */
> + error("external filter '%s' failed", entry->subprocess.cmd);
> + subprocess_stop(&subprocess_map, &entry->subprocess);
> + free(entry);
> + }
> +}
> +
> static int apply_multi_file_filter(const char *path, const char *src, size_t len,
> int fd, struct strbuf *dst, const char *cmd,
> const unsigned int wanted_capability)
> @@ -656,28 +679,10 @@ static int apply_multi_file_filter(const char *path, const char *src, size_t len
> done:
> sigchain_pop(SIGPIPE);
>
> - if (err) {
> - if (!strcmp(filter_status.buf, "error")) {
> - /* The filter signaled a problem with the file. */
> - } else if (!strcmp(filter_status.buf, "abort")) {
> - /*
> - * The filter signaled a permanent problem. Don't try to filter
> - * files with the same command for the lifetime of the current
> - * Git process.
> - */
> - entry->supported_capabilities &= ~wanted_capability;
> - } else {
> - /*
> - * Something went wrong with the protocol filter.
> - * Force shutdown and restart if another blob requires filtering.
> - */
> - error("external filter '%s' failed", cmd);
> - subprocess_stop(&subprocess_map, &entry->subprocess);
> - free(entry);
> - }
> - } else {
> + if (err)
> + handle_filter_error(&filter_status, entry, wanted_capability);
> + else
> strbuf_swap(dst, &nbuf);
> - }
> strbuf_release(&nbuf);
> return !err;
> }
next prev parent reply other threads:[~2017-06-26 18:00 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-25 18:21 [PATCH v6 0/6] convert: add "status=delayed" to filter process protocol Lars Schneider
2017-06-25 18:21 ` [PATCH v6 1/6] t0021: keep filter log files on comparison Lars Schneider
2017-06-25 22:12 ` Junio C Hamano
2017-06-26 9:02 ` Lars Schneider
2017-06-26 17:31 ` Junio C Hamano
2017-06-25 18:21 ` [PATCH v6 2/6] t0021: make debug log file name configurable Lars Schneider
2017-06-25 22:15 ` Junio C Hamano
2017-06-25 18:21 ` [PATCH v6 3/6] t0021: write "OUT" only on success Lars Schneider
2017-06-25 22:17 ` Junio C Hamano
2017-06-26 9:26 ` Lars Schneider
2017-06-26 17:50 ` Junio C Hamano
2017-06-26 18:32 ` Lars Schneider
2017-06-25 18:21 ` [PATCH v6 4/6] convert: put the flags field before the flag itself for consistent style Lars Schneider
2017-06-25 22:19 ` Junio C Hamano
2017-06-25 18:21 ` [PATCH v6 5/6] convert: move multiple file filter error handling to separate function Lars Schneider
2017-06-26 17:56 ` Junio C Hamano
2017-06-27 2:51 ` Stefan Beller
2017-06-26 18:00 ` Junio C Hamano [this message]
2017-06-25 18:21 ` [PATCH v6 6/6] convert: add "status=delayed" to filter process protocol Lars Schneider
2017-06-26 19:02 ` Junio C Hamano
2017-06-26 21:28 ` Lars Schneider
2017-06-26 22:13 ` Junio C Hamano
2017-06-26 22:38 ` Junio C Hamano
2017-06-27 12:07 ` Lars Schneider
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=xmqqinji633p.fsf@gitster.mtv.corp.google.com \
--to=gitster@pobox.com \
--cc=e@80x24.org \
--cc=git@vger.kernel.org \
--cc=larsxschneider@gmail.com \
--cc=peartben@gmail.com \
--cc=peff@peff.net \
--cc=tboegi@web.de \
--cc=ttaylorr@github.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.