Re: Exporting functions from vsprintf.c for Rust
From: Remo Senekowitsch
Date: Mon Apr 14 2025 - 07:47:33 EST
On Fri Apr 11, 2025 at 3:43 PM CEST, Rasmus Villemoes wrote:
> On Fri, Apr 11, 2025, 13:36 Remo Senekowitsch <remo@xxxxxxxxxxx> wrote:
>
>> On Fri Apr 11, 2025 at 11:42 AM CEST, Petr Mladek wrote:
>> >
>> > Honestly, I do not have a good feeling about exporting the internal
>> > vsprintf() functions. They have a very specific semantic.
>> >
>> > Especially, they return pointer to the next-to-write character.
>> > And it might be even beyond the given *end pointer. It is because, for
>> > example, vsnprintf() returns the number of characters which would
>> > have been written to the buffer when it was big enough.
>> >
>> > Instead, I suggest to create a wrapper which would have a sane
>> > semantic and call scnprintf() internally. Something like:
>> >
>> > int fwnode_full_name_to_string(char *buf, size_t size,
>> > struct fwnode_handle *fwnode)
>> > {
>> > return scnprintf(buf, size, "%pfwf", fwnode);
>> > }
>>
>> That makes sense. I tried your suggestion and it works, thank you!
>>
>>
> But is a wrapper even needed for this? Can't the appropriate sprintf
> variant just be called from Rust with that %pfwf format string?
Yeah, that works. Seems like the simplest solution - no C changes needed.
Thanks!
Remo