Update.
authorUlrich Drepper <drepper@redhat.com>
Sat, 30 Aug 2003 08:31:39 +0000 (08:31 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 30 Aug 2003 08:31:39 +0000 (08:31 +0000)
2003-08-30  Ulrich Drepper  <drepper@redhat.com>

* misc/error.c (error): Disable cancellation handling around the
actual output.  The message should in any case be printed.
(error_at_line): Likewise.

* misc/error.h: Protect parameter names with leading __.

ChangeLog
misc/error.c
misc/error.h

index 4cb3b12..1b979b7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2003-08-30  Ulrich Drepper  <drepper@redhat.com>
+
+       * misc/error.c (error): Disable cancellation handling around the
+       actual output.  The message should in any case be printed.
+       (error_at_line): Likewise.
+
+       * misc/error.h: Protect parameter names with leading __.
+
 2003-08-28  Carlos O'Donell  <carlos@baldric.uwo.ca>
 
        * sysdeps/unix/sysv/linux/hppa/syscalls.list: Add semtimedop.
index 17dda08..de3b797 100644 (file)
@@ -1,5 +1,5 @@
 /* Error handler for noninteractive utilities
-   Copyright (C) 1990-1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1990-1998, 2000-2002, 2003 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.
 
@@ -92,6 +92,8 @@ extern void __error_at_line (int status, int errnum, const char *file_name,
 # undef putc
 # define putc(c, fp) INTUSE(_IO_putc) (c, fp)
 
+# include <bits/libc-lock.h>
+
 #else /* not _LIBC */
 
 # if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
@@ -255,6 +257,14 @@ error (status, errnum, message, va_alist)
   va_list args;
 #endif
 
+#if defined _LIBC && defined __libc_ptf_call
+  /* We do not want this call to be cut short by a thread
+     cancellation.  Therefore disable cancellation for now.  */
+  int state = PTHREAD_CANCEL_ENABLE;
+  __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
+                  0);
+#endif
+
   fflush (stdout);
 #ifdef _LIBC
   _IO_flockfile (stderr);
@@ -288,6 +298,9 @@ error (status, errnum, message, va_alist)
 
 #ifdef _LIBC
   _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+  __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
 #endif
 }
 \f
@@ -328,6 +341,14 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
       old_line_number = line_number;
     }
 
+#if defined _LIBC && defined __libc_ptf_call
+  /* We do not want this call to be cut short by a thread
+     cancellation.  Therefore disable cancellation for now.  */
+  int state = PTHREAD_CANCEL_ENABLE;
+  __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
+                  0);
+#endif
+
   fflush (stdout);
 #ifdef _LIBC
   _IO_flockfile (stderr);
@@ -371,6 +392,9 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
 
 #ifdef _LIBC
   _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+  __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
 #endif
 }
 
index da5cf2f..3638bc6 100644 (file)
@@ -1,7 +1,6 @@
 /* Declaration for error-reporting function
-   Copyright (C) 1995, 1996, 1997 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) 1995, 1996, 1997, 2003 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
    modify it under the terms of the GNU Lesser General Public
 extern "C" {
 #endif
 
-#if defined (__STDC__) && __STDC__
+#if defined __STDC__ && __STDC__
 
 /* Print a message with `fprintf (stderr, FORMAT, ...)';
    if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
    If STATUS is nonzero, terminate the program with `exit (STATUS)'.  */
 
-extern void error (int status, int errnum, const char *format, ...)
+extern void error (int __status, int __errnum, const char *__format, ...)
      __attribute__ ((__format__ (__printf__, 3, 4)));
 
-extern void error_at_line (int status, int errnum, const char *fname,
-                          unsigned int lineno, const char *format, ...)
+extern void error_at_line (int __status, int __errnum, const char *__fname,
+                          unsigned int __lineno, const char *__format, ...)
      __attribute__ ((__format__ (__printf__, 5, 6)));
 
 /* If NULL, error will flush stdout, then print on stderr the program