It is commonly useful to run a command using "/bin/sh -c" (like popen) and to place the output in a string. Move strbuf to libapi, add a new run_command that places output in a strbuf, then use it in help and llvm in perf. Some small strbuf efficiency improvements are included. Whilst adding a new function should increase lines-of-code, by sharing two similar usages in perf llvm and perf help, the overall lines-of-code is moderately reduced. First "perf llvm: Fix inadvertent file creation" is cherry-picked from: https://lore.kernel.org/lkml/20230105082609.344538-1-irogers@xxxxxxxxxx/ to avoid a merge conflict. The next patches deal with moving strbuf, adding the run_command function with Makefile dependency from libsubcmd to libapi, and improving the strbuf performance. The final two patches add usage from the perf command. Ian Rogers (7): perf llvm: Fix inadvertent file creation tools lib: Move strbuf to libapi tools lib subcmd: Add run_command_strbuf tools lib api: Minor strbuf_read improvements tools lib api: Tweak strbuf allocation size computation perf help: Use run_command_strbuf perf llvm: Remove read_from_pipe tools/lib/api/Build | 1 + tools/lib/api/Makefile | 2 +- tools/{perf/util => lib/api}/strbuf.c | 28 ++-- tools/{perf/util => lib/api}/strbuf.h | 0 tools/lib/subcmd/Makefile | 32 +++- tools/lib/subcmd/run-command.c | 30 ++++ tools/lib/subcmd/run-command.h | 14 ++ tools/perf/bench/evlist-open-close.c | 2 +- tools/perf/builtin-help.c | 49 ++---- tools/perf/builtin-list.c | 2 +- tools/perf/tests/bpf.c | 12 +- tools/perf/tests/llvm.c | 18 +-- tools/perf/tests/llvm.h | 3 +- tools/perf/util/Build | 1 - tools/perf/util/bpf-loader.c | 9 +- tools/perf/util/cache.h | 2 +- tools/perf/util/dwarf-aux.c | 2 +- tools/perf/util/env.c | 2 +- tools/perf/util/header.c | 2 +- tools/perf/util/llvm-utils.c | 207 ++++++++------------------ tools/perf/util/llvm-utils.h | 6 +- tools/perf/util/metricgroup.c | 2 +- tools/perf/util/pfm.c | 2 +- tools/perf/util/pmu.c | 2 +- tools/perf/util/probe-event.c | 2 +- tools/perf/util/probe-file.c | 2 +- tools/perf/util/probe-finder.c | 2 +- tools/perf/util/sort.c | 2 +- 28 files changed, 201 insertions(+), 237 deletions(-) rename tools/{perf/util => lib/api}/strbuf.c (87%) rename tools/{perf/util => lib/api}/strbuf.h (100%) -- 2.39.0.314.g84b9a713c41-goog