From: Junio C Hamano <gitster@pobox.com>
To: Karthik Nayak <karthik.188@gmail.com>
Cc: git@vger.kernel.org, christian.couder@gmail.com,
Matthieu.Moy@grenoble-inp.fr
Subject: Re: [PATCH v8 01/11] ref-filter: print output to strbuf for formatting
Date: Mon, 03 Aug 2015 13:36:33 -0700 [thread overview]
Message-ID: <xmqq4mkg85ym.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1438620861-25219-1-git-send-email-Karthik.188@gmail.com> (Karthik Nayak's message of "Mon, 3 Aug 2015 22:24:11 +0530")
Karthik Nayak <karthik.188@gmail.com> writes:
> Introduce a strbuf `output` which will act as a substitute rather than
> printing directly to stdout. This will be used for formatting
> eventually.
> ---
Missing sign-off; the patch looks like a good first step in a nice
direction.
> ref-filter.c | 36 ++++++++++++++++++------------------
> 1 file changed, 18 insertions(+), 18 deletions(-)
>
> diff --git a/ref-filter.c b/ref-filter.c
> index 7561727..febdc45 100644
> --- a/ref-filter.c
> +++ b/ref-filter.c
> @@ -1190,30 +1190,25 @@ void ref_array_sort(struct ref_sorting *sorting, struct ref_array *array)
> qsort(array->items, array->nr, sizeof(struct ref_array_item *), compare_refs);
> }
>
> -static void print_value(struct atom_value *v, int quote_style)
> +static void print_value(struct atom_value *v, int quote_style, struct strbuf *output)
> {
> - struct strbuf sb = STRBUF_INIT;
> switch (quote_style) {
> case QUOTE_NONE:
> - fputs(v->s, stdout);
> + strbuf_addstr(output, v->s);
> break;
> case QUOTE_SHELL:
> - sq_quote_buf(&sb, v->s);
> + sq_quote_buf(output, v->s);
> break;
> case QUOTE_PERL:
> - perl_quote_buf(&sb, v->s);
> + perl_quote_buf(output, v->s);
> break;
> case QUOTE_PYTHON:
> - python_quote_buf(&sb, v->s);
> + python_quote_buf(output, v->s);
> break;
> case QUOTE_TCL:
> - tcl_quote_buf(&sb, v->s);
> + tcl_quote_buf(output, v->s);
> break;
> }
> - if (quote_style != QUOTE_NONE) {
> - fputs(sb.buf, stdout);
> - strbuf_release(&sb);
> - }
> }
>
> static int hex1(char ch)
> @@ -1234,7 +1229,7 @@ static int hex2(const char *cp)
> return -1;
> }
>
> -static void emit(const char *cp, const char *ep)
> +static void emit(const char *cp, const char *ep, struct strbuf *output)
> {
> while (*cp && (!ep || cp < ep)) {
> if (*cp == '%') {
> @@ -1243,13 +1238,13 @@ static void emit(const char *cp, const char *ep)
> else {
> int ch = hex2(cp + 1);
> if (0 <= ch) {
> - putchar(ch);
> + strbuf_addch(output, ch);
> cp += 3;
> continue;
> }
> }
> }
> - putchar(*cp);
> + strbuf_addch(output, *cp);
> cp++;
> }
> }
> @@ -1257,19 +1252,21 @@ static void emit(const char *cp, const char *ep)
> void show_ref_array_item(struct ref_array_item *info, const char *format, int quote_style)
> {
> const char *cp, *sp, *ep;
> + struct strbuf output = STRBUF_INIT;
> + int i;
>
> for (cp = format; *cp && (sp = find_next(cp)); cp = ep + 1) {
> struct atom_value *atomv;
>
> ep = strchr(sp, ')');
> if (cp < sp)
> - emit(cp, sp);
> + emit(cp, sp, &output);
> get_ref_atom_value(info, parse_ref_filter_atom(sp + 2, ep), &atomv);
> - print_value(atomv, quote_style);
> + print_value(atomv, quote_style, &output);
> }
> if (*cp) {
> sp = cp + strlen(cp);
> - emit(cp, sp);
> + emit(cp, sp, &output);
> }
> if (need_color_reset_at_eol) {
> struct atom_value resetv;
> @@ -1278,9 +1275,12 @@ void show_ref_array_item(struct ref_array_item *info, const char *format, int qu
> if (color_parse("reset", color) < 0)
> die("BUG: couldn't parse 'reset' as a color");
> resetv.s = color;
> - print_value(&resetv, quote_style);
> + print_value(&resetv, quote_style, &output);
> }
> + for (i = 0; i < output.len; i++)
> + printf("%c", output.buf[i]);
> putchar('\n');
> + strbuf_release(&output);
> }
>
> /* If no sorting option is given, use refname to sort as default */
next prev parent reply other threads:[~2015-08-03 20:36 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-03 16:52 [PATCH v8 0/11] Port tag.c over to use ref-filter APIs Karthik Nayak
2015-08-03 16:54 ` [PATCH v8 01/11] ref-filter: print output to strbuf for formatting Karthik Nayak
2015-08-03 20:36 ` Junio C Hamano [this message]
2015-08-03 21:23 ` Karthik Nayak
2015-08-03 16:54 ` [PATCH v8 02/11] ref-filter: introduce ref_formatting_state Karthik Nayak
2015-08-03 20:42 ` Junio C Hamano
2015-08-03 22:03 ` Karthik Nayak
2015-08-03 16:54 ` [PATCH v8 03/11] ref-filter: implement an `align` atom Karthik Nayak
2015-08-03 16:54 ` [PATCH v8 04/11] ref-filter: add option to filter only tags Karthik Nayak
2015-08-03 16:54 ` [PATCH v8 05/11] ref-filter: support printing N lines from tag annotation Karthik Nayak
2015-08-03 16:54 ` [PATCH v8 06/11] ref-filter: add support to sort by version Karthik Nayak
2015-08-03 16:54 ` [PATCH v8 07/11] ref-filter: add option to match literal pattern Karthik Nayak
2015-08-03 16:54 ` [PATCH v8 08/11] tag.c: use 'ref-filter' data structures Karthik Nayak
2015-08-03 16:54 ` [PATCH v8 09/11] tag.c: use 'ref-filter' APIs Karthik Nayak
2015-08-03 16:54 ` [PATCH v8 10/11] tag.c: implement '--format' option Karthik Nayak
2015-08-03 16:54 ` [PATCH v8 11/11] tag.c: implement '--merged' and '--no-merged' options Karthik Nayak
2015-08-03 20:21 ` [PATCH v8 0/11] Port tag.c over to use ref-filter APIs Junio C Hamano
2015-08-03 21:22 ` Karthik Nayak
2015-08-03 22:08 ` Junio C Hamano
2015-08-03 22:13 ` Karthik Nayak
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=xmqq4mkg85ym.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=Matthieu.Moy@grenoble-inp.fr \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=karthik.188@gmail.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.