Tom Lane wrote:
> Oliver Elphick <olly@lfix.co.uk> writes:
> > On Mon, 2004-05-31 at 19:55, Tom Lane wrote:
> >> I can't duplicate that here. It looks to me like the probable
> >> explanation is a broken or incompatible version of strerror_r() on your
> >> machine. Does the failure go away if you build without thread-safety?
>
> > Yes it does.
> > I'll see if I can run with a debugging libc and find it.
>
> First you might want to check which flavor of strerror_r() your platform
> has --- does it return int or char* ? The Linux man page for
> strerror_r() says
>
> strerror_r() with prototype as given above is specified by SUSv3, and
> was in use under Digital Unix and HP Unix. An incompatible function,
> with prototype
>
> char *strerror_r(int errnum, char *buf, size_t n);
>
> is a GNU extension used by glibc (since 2.0), and must be regarded as
> obsolete in view of SUSv3. The GNU version may, but need not, use the
> user-supplied buffer. If it does, the result may be truncated in case
> the supplied buffer is too small. The result is always NUL-terminated.
>
> The code we have appears to assume that the result will always be placed
> in the user-supplied buffer, which is apparently NOT what the glibc
> version does.
What does "may, but need not, use the user-supplied buffer" supposed to
mean in practical terms. How do they expect us to use it?
-- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610)
359-1001+ If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square,
Pennsylvania19073