On Tue, Aug 4, 2015 at 2:06 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Karthik Nayak <karthik.188@xxxxxxxxx> 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. > Will add, Thanks :) >> 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 */ -- Regards, Karthik Nayak -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html