Here is the take 3. wrt last time: the need for strbuf_addvf has been
avoided. It was not really needed for many places, and I chose ad-hoc
solutions for each. It has been done in a new patch (inserted at slot
2).
Note that this patch 2/7 looks curious, especially the:
write_fd_or_whine(..., "\n", 1, ...)
it is rewritten in a following patch in the series, it's just to have
an intermediate working state. Don't really mind the bad look of it,
please :).
As a consequence, strbuf_addvf is no longer added nor used in the
series.
I just rebased it on the last next (with the new git-fetch).