bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-gnulib] error.c merge from glibc


From: Paul Eggert
Subject: [Bug-gnulib] error.c merge from glibc
Date: Fri, 26 Sep 2003 00:38:20 -0700

I think I'll try to merge error.c with glibc.  The first step is to
import glibc's changes into gnulib, so I installed this patch.  It
looks pretty harmless from gnulib's point of view.

2003-09-26  Paul Eggert  <address@hidden>

        Merge error changes from glibc.

        * error.c, error.h: Update copyright notice header to match glibc.
        * error.c [defined _LIBC]: Include <errno.h>, <bits/libc-lock.h>.
        (error, error_at_line) [defined _LIBC && defined __libc_ptf_call]:
        Disable cancellation while printing error.
        * error.h: Prepend __ to parameter names.

Index: lib/error.c
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/error.c,v
retrieving revision 1.33
diff -p -u -r1.33 error.c
--- lib/error.c 12 Sep 2003 19:47:20 -0000      1.33
+++ lib/error.c 26 Sep 2003 07:31:13 -0000
@@ -1,5 +1,7 @@
 /* Error handler for noninteractive utilities
-   Copyright (C) 1990-1998, 2000, 2001, 2002, 2003 Free Software Foundation, 
Inc.
+   Copyright (C) 1990-1998, 2000-2002, 2003 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
    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)
@@ -58,6 +60,7 @@ unsigned int error_message_count;
 /* In the GNU C library, there is a predefined variable for this.  */
 
 # 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.
@@ -76,6 +79,8 @@ extern void __error_at_line (int status,
 # 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
@@ -201,6 +206,14 @@ error (int status, int errnum, const cha
 {
   va_list args;
 
+#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);
@@ -222,6 +235,9 @@ error (int status, int errnum, const cha
 
 #ifdef _LIBC
   _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+  __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
 #endif
 }
 
@@ -250,6 +266,14 @@ error_at_line (int status, int errnum, c
       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);
@@ -281,6 +305,9 @@ error_at_line (int status, int errnum, c
 
 #ifdef _LIBC
   _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+  __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
 #endif
 }
 
Index: lib/error.h
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/error.h,v
retrieving revision 1.18
diff -p -u -r1.18 error.h
--- lib/error.h 8 Sep 2003 23:26:06 -0000       1.18
+++ lib/error.h 26 Sep 2003 07:31:13 -0000
@@ -1,24 +1,20 @@
 /* Declaration for error-reporting function
    Copyright (C) 1995, 1996, 1997, 2003 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
 
-
-   NOTE: The canonical source of this file is maintained with the GNU C 
Library.
-   Bugs can be reported to address@hidden
-
-   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.
+   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.
 
    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 General Public License for more details.
 
-   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.  */
+   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.  */
 
 #ifndef _ERROR_H
 #define _ERROR_H 1
@@ -44,11 +40,11 @@ extern "C" {
    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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]