git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[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

Next: René Scharfe
Message 1 of 20 in “replace strbuf_expand()”
  1. 0/5 replace strbuf_expand()René Scharfe, Jun 17, 2023
  2. 1/5 pretty: factor out expand_separator()René Scharfe, Jun 17, 2023
  3. 2/5 strbuf: factor out strbuf_expand_step()René Scharfe, Jun 17, 2023
  4. Taylor BlauJun 19, 2023
  5. René ScharfeJun 20, 2023
  6. Taylor BlauJun 21, 2023
  7. Jeff KingJun 27, 2023
  8. René ScharfeJun 27, 2023
  9. 3/5 replace strbuf_expand_dict_cb() with strbuf_expand_step()René Scharfe, Jun 17, 2023
  10. Jeff KingJun 27, 2023
  11. Jeff KingJun 27, 2023
  12. René ScharfeJun 27, 2023
  13. 4/5 replace strbuf_expand() with strbuf_expand_step()René Scharfe, Jun 17, 2023
  14. Jeff KingJun 27, 2023
  15. René ScharfeJun 27, 2023
  16. Jeff KingJun 27, 2023
  17. 5/5 strbuf: simplify strbuf_expand_literal_cb()René Scharfe, Jun 17, 2023
  18. Jeff KingJun 27, 2023
  19. René ScharfeJun 27, 2023
  20. Jeff KingJun 27, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.