>   strerror(3) claims that strerror_r returns an integer that is zero for 
> success and non-zero for failure; in fact, it returns a char * and the
> code 
> appears to say that there is no way to distinguish success and failure; 
> if the buffer is too small the string is just truncated.

Daniel,

I am _not_ looking at the Debian sources, but at recent glibc 
vanilla sources.   According to those (sysdeps/generic/xpg-strerror.c), 
the (vanilla) manual pages that I maintain are correct, *if* one
defines _XOPEN_SOURCE as 600, as the manual page specifies:

       #define _XOPEN_SOURCE 600
       #include <string.h>

       int strerror_r(int errnum, char *buf, size_t n);

The (vanilla) manual page also has the following text uner 
CONFORMING TO:

       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.

Does the Debian page not have all of this information?

Cheers,

Michael

-- 
Michael Kerrisk
maintainer of Linux man pages Sections 2, 3, 4, 5, and 7 

Want to help with man page maintenance?  Grab the latest
tarball at ftp://ftp.win.tue.nl/pub/linux-local/manpages/
and grep the source files for 'FIXME'.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to