mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-04-21 11:16:16 +02:00
Work around bug in OpenBSD 3.4 sterror_r: it
sometimes returns a positive errno value even when it succeeds. (print_errno_message) [!LIBC]: Fall back on strerror if __strerror_r fails.
This commit is contained in:
10
lib/error.c
10
lib/error.c
@@ -1,5 +1,5 @@
|
|||||||
/* Error handler for noninteractive utilities
|
/* Error handler for noninteractive utilities
|
||||||
Copyright (C) 1990-1998, 2000-2002, 2003 Free Software Foundation, Inc.
|
Copyright (C) 1990-1998, 2000-2002, 2003, 2004 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
@@ -106,7 +106,7 @@ extern char *program_name;
|
|||||||
static void
|
static void
|
||||||
print_errno_message (int errnum)
|
print_errno_message (int errnum)
|
||||||
{
|
{
|
||||||
char const *s;
|
char const *s = NULL;
|
||||||
|
|
||||||
#if defined HAVE_STRERROR_R || _LIBC
|
#if defined HAVE_STRERROR_R || _LIBC
|
||||||
char errbuf[1024];
|
char errbuf[1024];
|
||||||
@@ -115,15 +115,11 @@ print_errno_message (int errnum)
|
|||||||
# else
|
# else
|
||||||
if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0)
|
if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0)
|
||||||
s = errbuf;
|
s = errbuf;
|
||||||
else
|
|
||||||
s = 0;
|
|
||||||
# endif
|
# endif
|
||||||
#else
|
|
||||||
s = strerror (errnum);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !_LIBC
|
#if !_LIBC
|
||||||
if (! s)
|
if (! s && ! (s = strerror (errnum)))
|
||||||
s = _("Unknown system error");
|
s = _("Unknown system error");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user