merge from gcc
authorDJ Delorie <dj@redhat.com>
Tue, 26 Apr 2005 01:02:02 +0000 (01:02 +0000)
committerDJ Delorie <dj@redhat.com>
Tue, 26 Apr 2005 01:02:02 +0000 (01:02 +0000)
include/ChangeLog
include/libiberty.h
libiberty/ChangeLog
libiberty/fopen_unlocked.c
libiberty/functions.texi

index 97a67de0ccd4d98e630c0ebb3183ea6eda64850c..88f6de2bb63676d9ccb77df80e071c949aa4ac07 100644 (file)
@@ -1,3 +1,7 @@
+2005-04-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * libiberty.h (unlock_std_streams): New.
+
 2005-04-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * hashtab.h, libiberty.h, objalloc.h, splay-tree.h, ternary.h:
index df36cdc8ab3f5463afe7f5e65fe9fedf54160968..215e832bb57f10b5d91f54202fd9603e01ed2e3b 100644 (file)
@@ -54,6 +54,12 @@ extern "C" {
 
 extern void unlock_stream (FILE *);
 
+/* If the OS supports it, ensure that the standard I/O streams, stdin,
+   stdout and stderr are setup to avoid any multi-threaded locking.
+   Otherwise do nothing.  */
+
+extern void unlock_std_streams (void);
+
 /* Open and return a FILE pointer.  If the OS supports it, ensure that
    the stream is setup to avoid any multi-threaded locking.  Otherwise
    return the FILE pointer unchanged.  */
index a92bcdc76d78e6123e30e9859940ab7ef51af94c..9956cf5dd29857f6a1583ac6d26cb76a3a73ecaf 100644 (file)
@@ -1,3 +1,9 @@
+2005-04-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * fopen_unlocked.c (unlock_std_streams): New.
+       
+       * functions.texi: Regenerate.
+
 2005-04-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * fopen_unlocked.c (unlock_stream): New.
index 8f9f300d10121b666ef8a46757fae01dac32db69..84e3be54b28acac5cc639ea89799d89a8678b5a1 100644 (file)
@@ -28,6 +28,14 @@ pointer unchanged.  If the @var{stream} is @code{NULL} do nothing.
 
 @end deftypefn
 
+@deftypefn Extension void unlock_std_streams (void)
+
+If the OS supports it, ensure that the standard I/O streams,
+@code{stdin}, @code{stdout} and @code{stderr} are setup to avoid any
+multi-threaded locking.  Otherwise do nothing.
+
+@end deftypefn
+
 @deftypefn Extension FILE * fopen_unlocked (const char *@var{path}, const char * @var{mode})
 
 Opens and returns a @code{FILE} pointer via @code{fopen}.  If the
@@ -80,11 +88,19 @@ unlock_1 (FILE *const fp ATTRIBUTE_UNUSED)
 }
 
 void
-unlock_stream(FILE *fp)
+unlock_stream (FILE *fp)
 {
   unlock_1 (fp);
 }
 
+void
+unlock_std_streams (void)
+{
+  unlock_1 (stdin);
+  unlock_1 (stdout);
+  unlock_1 (stderr);
+}
+
 FILE *
 fopen_unlocked (const char *path, const char *mode)            
 {
index e55d2d50e715cd2659f24d7920b274f15e9c6aac..ac97726805ae4587e0baa3597910e7c795527f80 100644 (file)
@@ -176,7 +176,7 @@ the possibility of a GCC built-in function.
 
 @end deftypefn
 
-@c asprintf.c:29
+@c asprintf.c:32
 @deftypefn Extension int asprintf (char **@var{resptr}, const char *@var{format}, ...)
 
 Like @code{sprintf}, but instead of passing a pointer to a buffer, you
@@ -237,7 +237,7 @@ is respectively less than, matching, or greater than the array member.
 
 @end deftypefn
 
-@c argv.c:121
+@c argv.c:124
 @deftypefn Extension char** buildargv (char *@var{sp})
 
 Given a pointer to a string, parse the string extracting fields
@@ -318,7 +318,7 @@ pointer encountered.  Pointers to empty strings are ignored.
 
 @end deftypefn
 
-@c argv.c:49
+@c argv.c:52
 @deftypefn Extension char** dupargv (char **@var{vector})
 
 Duplicate an argument vector.  Simply scans through @var{vector},
@@ -362,7 +362,7 @@ and inode numbers.
 
 @end deftypefn
 
-@c fopen_unlocked.c:40
+@c fopen_unlocked.c:48
 @deftypefn Extension FILE * fdopen_unlocked (int @var{fildes}, const char * @var{mode})
 
 Opens and returns a @code{FILE} pointer via @code{fdopen}.  If the
@@ -431,7 +431,7 @@ Ignores case when performing the comparison.
 
 @end deftypefn
 
-@c fopen_unlocked.c:31
+@c fopen_unlocked.c:39
 @deftypefn Extension FILE * fopen_unlocked (const char *@var{path}, const char * @var{mode})
 
 Opens and returns a @code{FILE} pointer via @code{fopen}.  If the
@@ -441,7 +441,7 @@ unchanged.
 
 @end deftypefn
 
-@c argv.c:94
+@c argv.c:97
 @deftypefn Extension void freeargv (char **@var{vector})
 
 Free an argument vector that was built using @code{buildargv}.  Simply
@@ -451,7 +451,7 @@ itself.
 
 @end deftypefn
 
-@c fopen_unlocked.c:49
+@c fopen_unlocked.c:57
 @deftypefn Extension FILE * freopen_unlocked (const char * @var{path}, const char * @var{mode}, FILE * @var{stream})
 
 Opens and returns a @code{FILE} pointer via @code{freopen}.  If the
@@ -510,7 +510,7 @@ that @var{tz} be NULL.  Returns 0 on success, -1 on failure.
 
 @end deftypefn
 
-@c hex.c:30
+@c hex.c:33
 @deftypefn Extension void hex_init (void)
 
 Initializes the array mapping the current character set to
@@ -520,7 +520,7 @@ default ASCII-based table will normally be used on ASCII systems.
 
 @end deftypefn
 
-@c hex.c:39
+@c hex.c:42
 @deftypefn Extension int hex_p (int @var{c})
 
 Evaluates to non-zero if the given character is a valid hex character,
@@ -529,7 +529,7 @@ or zero if it is not.  Note that the value you pass will be cast to
 
 @end deftypefn
 
-@c hex.c:47
+@c hex.c:50
 @deftypefn Extension {unsigned int} hex_value (int @var{c})
 
 Returns the numeric equivalent of the given character when interpreted
@@ -1201,6 +1201,15 @@ was made to unlink the file because it is special.
 
 @end deftypefn
 
+@c fopen_unlocked.c:31
+@deftypefn Extension void unlock_std_streams (void)
+
+If the OS supports it, ensure that the standard I/O streams,
+@code{stdin}, @code{stdout} and @code{stderr} are setup to avoid any
+multi-threaded locking.  Otherwise do nothing.
+
+@end deftypefn
+
 @c fopen_unlocked.c:23
 @deftypefn Extension void unlock_stream (FILE * @var{stream})