Re: [PATCH 1/4] lib/sprintf: add scnprintf_append() helper function

From: Andy Shevchenko

Date: Fri Nov 07 2025 - 04:35:43 EST


On Fri, Nov 07, 2025 at 09:12:46AM +0000, David Laight wrote:
> On Thu, 6 Nov 2025 21:38:33 -0800
> Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
> > On Fri, 7 Nov 2025 13:16:13 +0800 Junrui Luo <moonafterrain@xxxxxxxxxxx> wrote:

...

> That is true for all the snprintf() functions.
>
> > I wonder if we should instead implement a kasprintf() version of this
> > which reallocs each time and then switch all the callers over to that.
>
> That adds the cost of a malloc, and I, like kasprintf() probably ends up
> doing all the work of snprintf twice.
>
> I'd be tempted to avoid the strlen() by passing in the offset.
> So (say):
> #define scnprintf_at(buf, len, off, ...) \
> scnprintf((buf) + off, (len) - off, __VA_ARGS__)
>
> Then you can chain calls, eg:
> off = scnprintf(buf, sizeof buf, ....);
> off += scnprintf_at(buf, sizeof buf, off, ....);

I like this suggestion. Also note, that the original implementation works directly
on static buffers.

--
With Best Regards,
Andy Shevchenko