(perror): If stderr is wide-oriented, use fwprintf instead of fprintf.
authordrepper <drepper>
Mon, 4 Dec 2000 23:38:34 +0000 (23:38 +0000)
committerdrepper <drepper>
Mon, 4 Dec 2000 23:38:34 +0000 (23:38 +0000)
stdio-common/perror.c

index 4c29cb0..239d43e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1993, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1993,1997,1998,2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
+#include <errno.h>
 #include <stdio.h>
 #include <string.h>
-#include <errno.h>
+#include <wchar.h>
 
 /* Print a line on stderr consisting of the text in S, a colon, a space,
    a message describing the meaning of the contents of `errno' and a newline.
@@ -29,12 +30,17 @@ perror (const char *s)
   char buf[1024];
   int errnum = errno;
   const char *colon;
+  const char *errstring;
 
   if (s == NULL || *s == '\0')
     s = colon = "";
   else
     colon = ": ";
 
-  (void) fprintf (stderr, "%s%s%s\n",
-                 s, colon, __strerror_r (errnum, buf, sizeof buf));
+  errstring = __strerror_r (errnum, buf, sizeof buf);
+
+  if (fwide (stderr, 0) > 0)
+    (void) fwprintf (stderr, L"%s%s%s\n", s, colon, errstring);
+  else
+    (void) fprintf (stderr, "%s%s%s\n", s, colon, errstring);
 }