/* Error handler for noninteractive utilities
- Copyright (C) 1990-1998, 2000-2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1990-1998, 2000-2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
This program is free software; you can redistribute it and/or modify
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
#include <stdlib.h>
#include <string.h>
-#ifdef _LIBC
-# include <libintl.h>
-#else
+#if !_LIBC && ENABLE_NLS
# include "gettext.h"
#endif
# define mbsrtowcs __mbsrtowcs
#endif
-#if !_LIBC
+#if USE_UNLOCKED_IO
# include "unlocked-io.h"
#endif
char *strerror_r ();
# endif
-#ifndef SIZE_MAX
-# define SIZE_MAX ((size_t) -1)
-#endif
+# ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+# endif
/* The calling program should define program_name and set it to the
name of the executing program. */
static void
print_errno_message (int errnum)
{
- char const *s;
+ char const *s = NULL;
#if defined HAVE_STRERROR_R || _LIBC
char errbuf[1024];
# else
if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0)
s = errbuf;
- else
- s = 0;
# endif
-#else
- s = strerror (errnum);
#endif
#if !_LIBC
- if (! s)
+ if (! s && ! (s = strerror (errnum)))
s = _("Unknown system error");
#endif
# define ALLOCA_LIMIT 2000
size_t len = strlen (message) + 1;
const wchar_t *wmessage = L"out of memory";
- mbstate_t st;
- size_t res;
- const char *tmp;
wchar_t *wbuf = (len < ALLOCA_LIMIT
- ? (void *) alloca (len * sizeof *wbuf)
+ ? alloca (len * sizeof *wbuf)
: len <= SIZE_MAX / sizeof *wbuf
? malloc (len * sizeof *wbuf)
: NULL);
if (wbuf)
{
+ size_t res;
+ mbstate_t st;
+ const char *tmp = message;
memset (&st, '\0', sizeof (st));
- tmp =message;
res = mbsrtowcs (wbuf, &tmp, len, &st);
wmessage = res == (size_t) -1 ? L"???" : wbuf;
}