Hmmm. Looking at that change makes me wonder if that solution
is Kosher. The value of the va_list you pass to vsnprintf() is
unspecified after the call.
It may be Ok as mingw-only "compatibility wrapper", but I think
you have to be a bit careful. It is not a general solution for
any BROKEN_SNPRINTF.
Hmmm. Looking at that change makes me wonder if that solution
is Kosher. The value of the va_list you pass to vsnprintf() is
unspecified after the call.
It may be Ok as mingw-only "compatibility wrapper", but I think
you have to be a bit careful. It is not a general solution for
any BROKEN_SNPRINTF.
Well, anybody who has such an old setup that they have a broken vsnprintf,
I'd expect they don't have va_copy() either. It's C99, I think (although
there were obviously implementations of it before that).
Linus
On Jan 23, 2008, at 6:50 PM, Linus Torvalds wrote:
On Wed, 23 Jan 2008, H. Peter Anvin wrote:
quoted
That's what va_copy() is for.
Well, anybody who has such an old setup that they have a broken
vsnprintf,
I'd expect they don't have va_copy() either. It's C99, I think
(although
there were obviously implementations of it before that).
I wonder what's the downside of just using a native format
implementation like the one in Vstr[1] or bstring[2]?
strbuf_addf would be faster and immune to the buggy/outdated host
*sprintf implementations.
__Luke
[1]: http://www.and.org/vstr/
[2]: http://bstring.sourceforge.net/
I wonder what's the downside of just using a native format implementation like
the one in Vstr[1] or bstring[2]?
I'd suggest taking the kernel vsnprintf() instead. It has the standard
interface (no support for FP, but we don't care) so it should be pretty
easy to just plug in, and it doesn't reaquire much of the environment
(just a 64-bit divide&modulus-by-100000).
Linus