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 __.
This commit is contained in:
Ulrich Drepper 2003-08-30 08:31:39 +00:00
parent bc2e36893a
commit 8c620ae082
3 changed files with 39 additions and 8 deletions

View File

@ -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> 2003-08-28 Carlos O'Donell <carlos@baldric.uwo.ca>
* sysdeps/unix/sysv/linux/hppa/syscalls.list: Add semtimedop. * sysdeps/unix/sysv/linux/hppa/syscalls.list: Add semtimedop.

View File

@ -1,5 +1,5 @@
/* Error handler for noninteractive utilities /* 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 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. 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 # undef putc
# define putc(c, fp) INTUSE(_IO_putc) (c, fp) # define putc(c, fp) INTUSE(_IO_putc) (c, fp)
# include <bits/libc-lock.h>
#else /* not _LIBC */ #else /* not _LIBC */
# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P # if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
@ -255,6 +257,14 @@ error (status, errnum, message, va_alist)
va_list args; va_list args;
#endif #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); fflush (stdout);
#ifdef _LIBC #ifdef _LIBC
_IO_flockfile (stderr); _IO_flockfile (stderr);
@ -288,6 +298,9 @@ error (status, errnum, message, va_alist)
#ifdef _LIBC #ifdef _LIBC
_IO_funlockfile (stderr); _IO_funlockfile (stderr);
# ifdef __libc_ptf_call
__libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
# endif
#endif #endif
} }
@ -328,6 +341,14 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
old_line_number = line_number; 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); fflush (stdout);
#ifdef _LIBC #ifdef _LIBC
_IO_flockfile (stderr); _IO_flockfile (stderr);
@ -371,6 +392,9 @@ error_at_line (status, errnum, file_name, line_number, message, va_alist)
#ifdef _LIBC #ifdef _LIBC
_IO_funlockfile (stderr); _IO_funlockfile (stderr);
# ifdef __libc_ptf_call
__libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
# endif
#endif #endif
} }

View File

@ -1,7 +1,6 @@
/* Declaration for error-reporting function /* Declaration for error-reporting function
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library. Its master source is NOT part of This file is part of the GNU C Library.
the C library, however. The master source lives in /gd/gnu/lib.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public modify it under the terms of the GNU Lesser General Public
@ -38,17 +37,17 @@
extern "C" { extern "C" {
#endif #endif
#if defined (__STDC__) && __STDC__ #if defined __STDC__ && __STDC__
/* Print a message with `fprintf (stderr, FORMAT, ...)'; /* Print a message with `fprintf (stderr, FORMAT, ...)';
if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM). if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
If STATUS is nonzero, terminate the program with `exit (STATUS)'. */ 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))); __attribute__ ((__format__ (__printf__, 3, 4)));
extern void error_at_line (int status, int errnum, const char *fname, extern void error_at_line (int __status, int __errnum, const char *__fname,
unsigned int lineno, const char *format, ...) unsigned int __lineno, const char *__format, ...)
__attribute__ ((__format__ (__printf__, 5, 6))); __attribute__ ((__format__ (__printf__, 5, 6)));
/* If NULL, error will flush stdout, then print on stderr the program /* If NULL, error will flush stdout, then print on stderr the program