[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: sys_errlist deprecated? (ITS#3111)



Note that strerror_r() is not terrible portable.
The POSIX defn is:
  int strerror_r(int errnum, char *strerrbuf, size_t buflen);

while some systems (like Linux) use:
 char *strerror_r(int errnum, char *buf, size_t buflen);

and other systems one just uses strerrror() (which on these
systems uses a thread specific buffer unknown error numbers).

Kurt

At 02:38 AM 4/24/2004, ando@sys-net.it wrote:
>Full_Name: Pierangelo Masarati
>Version: HEAD
>OS: Linux, gcc >= 3.3
>URL: ftp://ftp.openldap.org/incoming/
>Submission from: (NULL) (81.74.43.82)
>Submitted by: ando
>
>
>recent versions of gcc (>=3.3 or even earlier) complain about sys_errlist being
>deprecated.  Since the direct use of sys_errlist was intended to safely provide
>error messages in a threaded environment, but the portability could be
>endangered by its deprecation, I'm patching HEAD code to use strerror_r(), as
>suggested by gcc, where available.  This requires an API change because the
>(braindead?) interface of strerror_r() requires a buffer to be passed, but the
>buffer may or may not be used.  Of course the code would remain as is if
>strerror_r() is not available; the sequence would be:
>
>strerror_r(); or sys_errlist[]; or strerror(); or "unknown"
>
>Would this change be considered worthy (I mean -- of general utility and
>interest)?
>
>p.