[Rd] add Rvsnprintf to API ??

Prof Brian Ripley ripley at stats.ox.ac.uk
Sun May 15 21:44:34 CEST 2005


On Sun, 15 May 2005, John W. Eaton wrote:

> On 14-May-2005, Prof Brian Ripley wrote:
>
> | R guarantees to have *vsnprintf* available.  Putting things in the API is
> | a one-way decision and ties our hands for ever.  Rvsnprintf is not even
> | exported from errors.c: it is static and just a convenience wrapper.
> |
> | About all a user package needs to do is
> |
> | AC_CHECK_DECLS([vsnprintf])
> |
> | and in your code snippet
> |
> | #if defined(HAVE_DECL_VSNPRINTF) && !HAVE_DECL_VSNPRINTF
> | extern int vsnprintf (char *str, size_t count, const char *fmt, va_list arg);
> | #endif
> |
> | However, AFAIK all known R platforms do have vsnprintf these days: the
> | MinGW compiler used on Windows gained it within the last year.
>
> Is checking for vsnprintf availability sufficient, or should one also
> check for versions that behave differently?  As I recall, different
> versions of vsnprintf return different values when a buffer overflow
> occurs.  Standard versions return the number of characters that would
> have been in the string (not including the terminating nul) if the
> buffer had been big enough, but older versions (apparently including
> glibc prior to 2.1) simply return -1 if the buffer is too small.  Is
> it worth trying to handle these differences?  Or at least detect the
> broken vsnprintf and fail to build?

We do distinguish between those types in R's usages.

BDR

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-devel mailing list