Document merges from coreutils.
[gnulib.git] / lib / error.c
index 9c0700c..308ed3c 100644 (file)
@@ -1,22 +1,18 @@
 /* Error handler for noninteractive utilities
-   Copyright (C) 1990-1998, 2000, 2001 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.  Its master source is NOT part of
-   the C library, however.  The master source lives in /gd/gnu/lib.
+   Copyright (C) 1990-1998, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   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.  */
 
 /* Written by David MacKenzie <djm@gnu.ai.mit.edu>.  */
 
 #endif
 
 #include <stdio.h>
-#if HAVE_LIBINTL_H
+
+#ifdef _LIBC
 # include <libintl.h>
+#else
+# include "gettext.h"
 #endif
+
 #ifdef _LIBC
 # include <wchar.h>
 # define mbsrtowcs __mbsrtowcs
@@ -55,6 +55,10 @@ void exit ();
 
 #include "error.h"
 
+#if !_LIBC
+# include "unlocked-io.h"
+#endif
+
 #ifndef _
 # define _(String) String
 #endif
@@ -76,6 +80,7 @@ unsigned int error_message_count;
 
 # define program_name program_invocation_name
 # include <errno.h>
+# include <libio/libioP.h>
 
 /* In GNU libc we want do not want to use the common name `error' directly.
    Instead make it a weak alias.  */
@@ -88,10 +93,10 @@ extern void __error_at_line (int status, int errnum, const char *file_name,
 # define error __error
 # define error_at_line __error_at_line
 
-# ifdef USE_IN_LIBIO
-#  include <libio/iolibio.h>
-#  define fflush(s) _IO_fflush (s)
-# endif
+# include <libio/iolibio.h>
+# define fflush(s) INTUSE(_IO_fflush) (s)
+# undef putc
+# define putc(c, fp) INTUSE(_IO_putc) (c, fp)
 
 #else /* not _LIBC */
 
@@ -156,7 +161,7 @@ print_errno_message (int errnum)
     s = _("Unknown system error");
 #endif
 
-#if _LIBC && USE_IN_LIBIO
+#if _LIBC
   if (_IO_fwide (stderr, 0) > 0)
     {
       __fwprintf (stderr, L": %s", s);
@@ -172,7 +177,7 @@ static void
 error_tail (int status, int errnum, const char *message, va_list args)
 {
 # if HAVE_VPRINTF || _LIBC
-#  if _LIBC && USE_IN_LIBIO
+#  if _LIBC
   if (_IO_fwide (stderr, 0) > 0)
     {
 #   define ALLOCA_LIMIT        2000
@@ -223,7 +228,7 @@ error_tail (int status, int errnum, const char *message, va_list args)
   ++error_message_count;
   if (errnum)
     print_errno_message (errnum);
-# if _LIBC && USE_IN_LIBIO
+# if _LIBC
   if (_IO_fwide (stderr, 0) > 0)
     putwc (L'\n', stderr);
   else
@@ -258,17 +263,13 @@ error (status, errnum, message, va_alist)
 
   fflush (stdout);
 #ifdef _LIBC
-# ifdef USE_IN_LIBIO
   _IO_flockfile (stderr);
-# else
-  __flockfile (stderr);
-# endif
 #endif
   if (error_print_progname)
     (*error_print_progname) ();
   else
     {
-#if _LIBC && USE_IN_LIBIO
+#if _LIBC
       if (_IO_fwide (stderr, 0) > 0)
        __fwprintf (stderr, L"%s: ", program_name);
       else
@@ -292,11 +293,7 @@ error (status, errnum, message, va_alist)
 #endif
 
 #ifdef _LIBC
-# ifdef USE_IN_LIBIO
   _IO_funlockfile (stderr);
-# else
-  __funlockfile (stderr);
-# endif
 #endif
 }
 \f
@@ -339,17 +336,13 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
 
   fflush (stdout);
 #ifdef _LIBC
-# ifdef USE_IN_LIBIO
   _IO_flockfile (stderr);
-# else
-  __flockfile (stderr);
-# endif
 #endif
   if (error_print_progname)
     (*error_print_progname) ();
   else
     {
-#if _LIBC && USE_IN_LIBIO
+#if _LIBC
       if (_IO_fwide (stderr, 0) > 0)
        __fwprintf (stderr, L"%s: ", program_name);
       else
@@ -359,7 +352,7 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
 
   if (file_name != NULL)
     {
-#if _LIBC && USE_IN_LIBIO
+#if _LIBC
       if (_IO_fwide (stderr, 0) > 0)
        __fwprintf (stderr, L"%s:%d: ", file_name, line_number);
       else
@@ -383,11 +376,7 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
 #endif
 
 #ifdef _LIBC
-# ifdef USE_IN_LIBIO
   _IO_funlockfile (stderr);
-# else
-  __funlockfile (stderr);
-# endif
 #endif
 }