2001-08-23 Roland McGrath <roland@frob.com>
authorRoland McGrath <roland@gnu.org>
Fri, 24 Aug 2001 03:20:56 +0000 (03:20 +0000)
committerRoland McGrath <roland@gnu.org>
Fri, 24 Aug 2001 03:20:56 +0000 (03:20 +0000)
* sysdeps/generic/bits/stdio-lock.h (_IO_lock_initializer): Define to
_LIBC_LOCK_RECURSIVE_INITIALIZER if defined, else do an #error.
(__libc_cleanup_region_start, __libc_cleanup_region_end,
__libc_clean_end): Define these to call the cleanup function after
normal exit when they're supposed to.
* sysdeps/mach/bits/libc-lock.h (__libc_cleanup_region_start):
Take new first arg DOIT, a boolean saying whether to really install
any cleanup handler.
(__libc_cleanup_region_end): Do nothing if start's DOIT arg was zero.
(__libc_cleanup_end): Likewise.
* stdio-common/vfscanf.c (LOCK_STREAM): Pass new arg.
* stdio-common/vfprintf.c (buffered_vfprintf, vfprintf): Likewise.
* sysdeps/mach/hurd/bits/stdio-lock.h (_IO_cleanup_region_start):
Likewise.
* misc/syslog.c (vsyslog, openlog, closelog): Likewise.
* sysdeps/generic/bits/stdio-lock.h
(_IO_cleanup_region_start, _IO_cleanup_region_start_noarg): Likewise.

bits/stdio-lock.h
sysdeps/generic/bits/stdio-lock.h

index f7c6108..5b1c1b0 100644 (file)
@@ -1,4 +1,4 @@
-/* Thread package specific definitions of stream lock type.  Stub version.
+/* Thread package specific definitions of stream lock type.  Generic version.
    Copyright (C) 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
 __libc_lock_define_recursive (typedef, _IO_lock_t)
 
 /* We need recursive (counting) mutexes.  */
-#define _IO_lock_initializer ...
-#error libio needs recursive mutexes for _IO_MTSAFE_IO
+#ifdef _LIBC_LOCK_RECURSIVE_INITIALIZER
+# define _IO_lock_initializer _LIBC_LOCK_RECURSIVE_INITIALIZER
+#elif _IO_MTSAFE_IO
+ #error libio needs recursive mutexes for _IO_MTSAFE_IO
+#endif
 
 #define _IO_lock_init(_name)   __libc_lock_init_recursive (_name)
 #define _IO_lock_fini(_name)   __libc_lock_fini_recursive (_name)
@@ -35,11 +38,11 @@ __libc_lock_define_recursive (typedef, _IO_lock_t)
 
 
 #define _IO_cleanup_region_start(_fct, _fp) \
-     __libc_cleanup_region_start (_fct, _fp)
+  __libc_cleanup_region_start (((_fp)->_flags & _IO_USER_LOCK) == 0, _fct, _fp)
 #define _IO_cleanup_region_start_noarg(_fct) \
-     __libc_cleanup_region_start (_fct, NULL)
+  __libc_cleanup_region_start (1, _fct, NULL)
 #define _IO_cleanup_region_end(_doit) \
-     __libc_cleanup_region_end (_doit)
+  __libc_cleanup_region_end (_doit)
 
 
 #endif /* bits/stdio-lock.h */
index f7c6108..5b1c1b0 100644 (file)
@@ -1,4 +1,4 @@
-/* Thread package specific definitions of stream lock type.  Stub version.
+/* Thread package specific definitions of stream lock type.  Generic version.
    Copyright (C) 2000, 2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
 __libc_lock_define_recursive (typedef, _IO_lock_t)
 
 /* We need recursive (counting) mutexes.  */
-#define _IO_lock_initializer ...
-#error libio needs recursive mutexes for _IO_MTSAFE_IO
+#ifdef _LIBC_LOCK_RECURSIVE_INITIALIZER
+# define _IO_lock_initializer _LIBC_LOCK_RECURSIVE_INITIALIZER
+#elif _IO_MTSAFE_IO
+ #error libio needs recursive mutexes for _IO_MTSAFE_IO
+#endif
 
 #define _IO_lock_init(_name)   __libc_lock_init_recursive (_name)
 #define _IO_lock_fini(_name)   __libc_lock_fini_recursive (_name)
@@ -35,11 +38,11 @@ __libc_lock_define_recursive (typedef, _IO_lock_t)
 
 
 #define _IO_cleanup_region_start(_fct, _fp) \
-     __libc_cleanup_region_start (_fct, _fp)
+  __libc_cleanup_region_start (((_fp)->_flags & _IO_USER_LOCK) == 0, _fct, _fp)
 #define _IO_cleanup_region_start_noarg(_fct) \
-     __libc_cleanup_region_start (_fct, NULL)
+  __libc_cleanup_region_start (1, _fct, NULL)
 #define _IO_cleanup_region_end(_doit) \
-     __libc_cleanup_region_end (_doit)
+  __libc_cleanup_region_end (_doit)
 
 
 #endif /* bits/stdio-lock.h */