Re: [HACKERS] snprintf causes regression tests to fail - Mailing list pgsql-hackers-win32

From Nicolai Tufar
Subject Re: [HACKERS] snprintf causes regression tests to fail
Date
Msg-id d809293905030113594b4fcd18@mail.gmail.com
Whole thread Raw
In response to Re: [HACKERS] snprintf causes regression tests to fail  (Joerg Hessdoerfer <Joerg.Hessdoerfer@sea-gmbh.com>)
List pgsql-hackers-win32
On Tue, 1 Mar 2005 22:42:52 +0100, Joerg Hessdoerfer
<Joerg.Hessdoerfer@sea-gmbh.com> wrote:
>
> Some stupid idea just crossed my mind: what if the /ports version just
> re-arranges the va_list according to the positional args and calls
> vsnprintf()?
> At least we know compiler and library...

I thought about it a lot. Some platforms do not support
all of % formant strings. src/port/snprintf.c is used both
for the platforms that do not support all necessary
% modifiers and the ones that do not support %n$
modifiers. Here is a comment from configure:

# If we found "long int" is 64 bits, assume snprintf handles it.  If
# we found we need to use "long long int", better check.  We cope with
# snprintfs that use %lld, %qd, or %I64d as the format.  If none of these
# work, fall back to our own snprintf emulation (which we know uses %lld).

Any comments on this idea? Should we have two
versions of snprintf.c for these occasions?

> Or, another idea: why not format the va_args individually using the original
> format specifiers alone (without positional args), and assemble the resulting
> string?

That is exactly what the code does :)

> Greetings,
>  Jörg

Nick

pgsql-hackers-win32 by date:

Previous
From: Joerg Hessdoerfer
Date:
Subject: Re: [HACKERS] snprintf causes regression tests to fail
Next
From: Tom Lane
Date:
Subject: Re: [HACKERS] snprintf causes regression tests to fail