[PATCH 0/5] replace strbuf_expand()
- From
René Scharfe <l.s.r@web.de>
- Date
- Jun 17, 2023, 20:37 UTC
- Message-ID
- <767baa64-20a6-daf2-d34b-d81f72363749@web.de>
strbuf_expand() is used to interpolate placeholders that start with a percent sign (%) in strings. It invokes a callback function to handle those placeholders, expands "%%" to "%" itself and copies unrecognized placeholders verbatim. Context info for the callback needs to be passed in via a void pointer, e.g. to a custom struct.
There is a better, simpler way: Use a loop to iterate over placeholders and access variables directly, without the need to take a detour through a context struct. This series converts the callers of strbuf_expand() to use the new helper strbuf_expand_step(), removing the overhead that comes with using a callback.
pretty: factor out expand_separator() strbuf: factor out strbuf_expand_step() replace strbuf_expand_dict_cb() with strbuf_expand_step() replace strbuf_expand() with strbuf_expand_step() strbuf: simplify strbuf_expand_literal_cb()
builtin/branch.c | 13 +----- builtin/cat-file.c | 35 +++++++-------- builtin/ls-files.c | 109 +++++++++++++++++++-------------------------- builtin/ls-tree.c | 107 +++++++++++++++++--------------------------- convert.c | 22 +++++---- daemon.c | 61 ++++++++----------------- ll-merge.c | 32 +++++++------ pretty.c | 99 ++++++++++++++++++++++------------------ strbuf.c | 58 +++++------------------- strbuf.h | 57 ++++-------------------- 10 files changed, 228 insertions(+), 365 deletions(-)
-- 2.41.0