Re: [PATCH v8 8/8] ls-tree.c: introduce "--format" option
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Jan 4, 2022, 15:17 UTC
- Message-ID
- <nycvar.QRO.7.76.6.2201041615560.7076@tvgsbejvaqbjf.bet>
- In-Reply-To
- <nycvar.QRO.7.76.6.2201041533540.7076@tvgsbejvaqbjf.bet>
Hi Teng,
On Tue, 4 Jan 2022, Johannes Schindelin wrote:
Show 33 quoted lines
> -- snip --
> diff --git a/builtin/ls-tree.c b/builtin/ls-tree.c
> index 6e3e5a4d0634..8301d1a15f9a 100644
> --- a/builtin/ls-tree.c
> +++ b/builtin/ls-tree.c
> @@ -75,7 +75,7 @@ static void expand_objectsize(struct strbuf *line, const struct object_id *oid,
> else
> strbuf_addf(line, "%" PRIuMAX, (uintmax_t)size);
> } else if (padded) {
> - strbuf_addf(line, "%7s", "-");
> + strbuf_addstr(line, "-");
> } else {
> strbuf_addstr(line, "-");
> }
> @@ -110,7 +110,7 @@ static size_t expand_show_tree(struct strbuf *line, const char *start,
> } else if (skip_prefix(start, "(size)", &p)) {
> expand_objectsize(line, data->oid, data->type, 0);
> } else if (skip_prefix(start, "(object)", &p)) {
> - strbuf_addstr(line, find_unique_abbrev(data->oid, abbrev));
> + strbuf_add_unique_abbrev(line, data->oid, abbrev);
> } else if (skip_prefix(start, "(file)", &p)) {
> const char *name = data->base->buf;
> const char *prefix = chomp_prefix ? ls_tree_prefix : NULL;
> @@ -119,7 +119,7 @@ static size_t expand_show_tree(struct strbuf *line, const char *start,
> strbuf_addstr(data->base, data->pathname);
> name = relative_path(data->base->buf, prefix, &sb);
> quote_c_style(name, "ed, NULL, 0);
> - strbuf_addstr(line, quoted.buf);
> + strbuf_addbuf(line, "ed);
> } else {
> errlen = (unsigned long)len;
> die(_("bad ls-tree format: %%%.*s"), errlen, start);
> -- snap --In addition to that, you need these to quiet down the `linux-leaks` job of our CI build, which is also failing with your patches:
-- snipsnap --
diff --git a/builtin/ls-tree.c b/builtin/ls-tree.c index 8301d1a15f9a..0dc0327e4785 100644 --- a/builtin/ls-tree.c +++ b/builtin/ls-tree.c @@ -120,6 +120,8 @@ static size_t expand_show_tree(struct strbuf *line, const char *start, name = relative_path(data->base->buf, prefix, &sb); quote_c_style(name, "ed, NULL, 0); strbuf_addbuf(line, "ed); + strbuf_release(&sb); + strbuf_release("ed); } else { errlen = (unsigned long)len; die(_("bad ls-tree format: %%%.*s"), errlen, start); @@ -197,6 +199,7 @@ static int show_tree_fmt(const struct object_id *oid, struct strbuf *base, strbuf_expand(&line, format, expand_show_tree, &data); strbuf_addch(&line, line_termination); fwrite(line.buf, line.len, 1, stdout); + strbuf_release(&line); strbuf_setlen(base, baselen); return retval; }