diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-08-30 08:31:39 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-08-30 08:31:39 +0000 |
commit | 8c620ae0822b1c4439b42f4f7f01e5b6959f0574 (patch) | |
tree | f4842585fb9df365129514d61c8e01931095447e /misc/error.c | |
parent | bc2e36893ac897047556babee5f7eb8eee7003aa (diff) | |
download | glibc-8c620ae0822b1c4439b42f4f7f01e5b6959f0574.tar glibc-8c620ae0822b1c4439b42f4f7f01e5b6959f0574.tar.gz glibc-8c620ae0822b1c4439b42f4f7f01e5b6959f0574.tar.bz2 glibc-8c620ae0822b1c4439b42f4f7f01e5b6959f0574.zip |
Update.
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 __.
Diffstat (limited to 'misc/error.c')
-rw-r--r-- | misc/error.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/misc/error.c b/misc/error.c index 17dda08814..de3b797a40 100644 --- a/misc/error.c +++ b/misc/error.c @@ -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 } @@ -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 } |