aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-08-29 19:58:49 +0000
committerUlrich Drepper <drepper@redhat.com>2003-08-29 19:58:49 +0000
commit0261d33f8745765a829fe5d59cd4dc6534bcd1b3 (patch)
treeaa792e9c18feadd3a46d7234466e718776cc359f
parentfeda52c086b82e5c756cb60532b844a1d4554d35 (diff)
downloadglibc-0261d33f8745765a829fe5d59cd4dc6534bcd1b3.zip
glibc-0261d33f8745765a829fe5d59cd4dc6534bcd1b3.tar.gz
glibc-0261d33f8745765a829fe5d59cd4dc6534bcd1b3.tar.bz2
Update.
2003-08-29 Jakub Jelinek <jakub@redhat.com> * libio/Makefile: Compile fputc.c, fputwc.c, freopen64.c, freopen.c, fseek.c, fseeko64.c, fseeko.c, ftello64.c, ftello.c, fwide.c, getc.c, getchar.c, getwc.c, getwchar.c, iofclose.c, iofflush.c, iofgetpos64.c, iofgetpos.c, iofgets.c, iofgetws.c, iofputs.c, iofputws.c, iofread.c, iofsetpos64.c, iofsetpos.c, ioftell.c, iofwrite.c, iogetdelim.c, iogetline.c, iogets.c, iogetwline.c, ioputs.c, ioseekoff.c, ioseekpos.c, iosetbuffer.c, iosetvbuf.c, ioungetc.c, ioungetwc.c, oldfileops.c, oldiofclose.c, oldiofgetpos64.c, oldiofgetpos.c, oldiofsetpos64.c, oldiofsetpos.c, peekc.c, putc.c, putchar.c, putwc.c, putwchar.c and rewind.c with exceptions. * sysdeps/generic/bits/stdio-lock.h (_IO_acquire_lock, _IO_release_lock): Define. * libio/fileops.c (_IO_new_file_underflow): Use it. * libio/fputc.c (fputc): Likewise. * libio/fputwc.c (fputwc): Likewise. * libio/freopen64.c (freopen64): * libio/freopen.c (freopen): Likewise. * libio/fseek.c (fseek): Likewise. * libio/fseeko64.c (fseeko64): Likewise. * libio/fseeko.c (fseeko): Likewise. * libio/ftello64.c (ftello64): Likewise. * libio/ftello.c (ftello): Likewise. * libio/fwide.c (fwide): Likewise. * libio/getc.c (_IO_getc): Likewise. * libio/getchar.c (getchar): Likewise. * libio/getwc.c (_IO_getwc): Likewise. * libio/getwchar.c (getwchar): Likewise. * libio/iofclose.c (_IO_new_fclose): * libio/iofflush.c (_IO_fflush): Likewise. * libio/iofgetpos64.c (_IO_new_fgetpos64): Likewise. * libio/iofgetpos.c (_IO_new_fgetpos): Likewise. * libio/iofgets.c (_IO_fgets): Likewise. * libio/iofgetws.c (fgetws): Likewise. * libio/iofputs.c (_IO_fputs): * libio/iofputws.c (_IO_fputs): Likewise. * libio/iofread.c (_IO_fread): Likewise. * libio/iofsetpos64.c (_IO_new_fsetpos64): Likewise. * libio/iofsetpos.c (_IO_new_fsetpos): Likewise. * libio/ioftell.c (_IO_ftell): Likewise. * libio/iofwrite.c (_IO_fwrite): Likewise. * libio/iogetdelim.c (_IO_getdelim): Likewise. * libio/iogets.c (_IO_gets): Likewise. * libio/ioputs.c (_IO_puts): Likewise. * libio/ioseekoff.c (_IO_seekoff): Likewise. * libio/ioseekpos.c (_IO_seekpos): Likewise. * libio/iosetbuffer.c (_IO_setbuffer): Likewise. * libio/iosetvbuf.c (_IO_setvbuf): Likewise. * libio/ioungetc.c (_IO_ungetc): Likewise. * libio/ioungetwc.c (ungetwc): Likewise. * libio/oldiofclose.c (_IO_old_fclose): Likewise. * libio/oldiofgetpos64.c (_IO_old_fgetpos64): Likewise. * libio/oldiofgetpos.c (_IO_old_fgetpos): Likewise. * libio/oldiofsetpos64.c (_IO_old_fsetpos64): Likewise. * libio/oldiofsetpos.c (_IO_old_fsetpos): Likewise. * libio/peekc.c (_IO_peekc_locked): Likewise. * libio/putc.c (_IO_putc): Likewise. * libio/putchar.c (putchar): Likewise. * libio/putwc.c (putwc): Likewise. * libio/putwchar.c (putwchar): Likewise. * libio/rewind.c (rewind): Likewise. * libio/wfileops.c (_IO_wfile_underflow): Likewise.
-rw-r--r--ChangeLog64
-rw-r--r--bits/stdio-lock.h11
-rw-r--r--libio/Makefile54
-rw-r--r--libio/fileops.c7
-rw-r--r--libio/fputc.c8
-rw-r--r--libio/fputwc.c8
-rw-r--r--libio/freopen.c6
-rw-r--r--libio/freopen64.c6
-rw-r--r--libio/fseek.c9
-rw-r--r--libio/fseeko.c8
-rw-r--r--libio/fseeko64.c8
-rw-r--r--libio/ftello.c8
-rw-r--r--libio/ftello64.c8
-rw-r--r--libio/fwide.c10
-rw-r--r--libio/getc.c9
-rw-r--r--libio/getchar.c9
-rw-r--r--libio/getwc.c9
-rw-r--r--libio/getwchar.c9
-rw-r--r--libio/iofclose.c6
-rw-r--r--libio/iofflush.c9
-rw-r--r--libio/iofgetpos.c8
-rw-r--r--libio/iofgetpos64.c8
-rw-r--r--libio/iofgets.c9
-rw-r--r--libio/iofgetws.c9
-rw-r--r--libio/iofputs.c6
-rw-r--r--libio/iofputws.c9
-rw-r--r--libio/iofread.c9
-rw-r--r--libio/iofsetpos.c9
-rw-r--r--libio/iofsetpos64.c9
-rw-r--r--libio/ioftell.c6
-rw-r--r--libio/iofwrite.c6
-rw-r--r--libio/iogetdelim.c8
-rw-r--r--libio/iogets.c9
-rw-r--r--libio/ioputs.c7
-rw-r--r--libio/ioseekoff.c8
-rw-r--r--libio/ioseekpos.c10
-rw-r--r--libio/iosetbuffer.c6
-rw-r--r--libio/iosetvbuf.c9
-rw-r--r--libio/ioungetc.c8
-rw-r--r--libio/ioungetwc.c9
-rw-r--r--libio/oldiofclose.c6
-rw-r--r--libio/oldiofgetpos.c9
-rw-r--r--libio/oldiofgetpos64.c9
-rw-r--r--libio/oldiofsetpos.c9
-rw-r--r--libio/oldiofsetpos64.c9
-rw-r--r--libio/peekc.c8
-rw-r--r--libio/putc.c9
-rw-r--r--libio/putchar.c9
-rw-r--r--libio/putwc.c9
-rw-r--r--libio/putwchar.c9
-rw-r--r--libio/rewind.c8
-rw-r--r--libio/wfileops.c7
-rw-r--r--nptl/ChangeLog2
-rw-r--r--nptl/sysdeps/pthread/bits/stdio-lock.h25
-rw-r--r--sysdeps/generic/bits/stdio-lock.h11
55 files changed, 313 insertions, 254 deletions
diff --git a/ChangeLog b/ChangeLog
index 7388e2a..5946d61 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,67 @@
+2003-08-29 Jakub Jelinek <jakub@redhat.com>
+
+ * libio/Makefile: Compile fputc.c, fputwc.c, freopen64.c, freopen.c,
+ fseek.c, fseeko64.c, fseeko.c, ftello64.c, ftello.c, fwide.c, getc.c,
+ getchar.c, getwc.c, getwchar.c, iofclose.c, iofflush.c, iofgetpos64.c,
+ iofgetpos.c, iofgets.c, iofgetws.c, iofputs.c, iofputws.c, iofread.c,
+ iofsetpos64.c, iofsetpos.c, ioftell.c, iofwrite.c, iogetdelim.c,
+ iogetline.c, iogets.c, iogetwline.c, ioputs.c, ioseekoff.c,
+ ioseekpos.c, iosetbuffer.c, iosetvbuf.c, ioungetc.c, ioungetwc.c,
+ oldfileops.c, oldiofclose.c, oldiofgetpos64.c, oldiofgetpos.c,
+ oldiofsetpos64.c, oldiofsetpos.c, peekc.c, putc.c, putchar.c, putwc.c,
+ putwchar.c and rewind.c with exceptions.
+ * sysdeps/generic/bits/stdio-lock.h (_IO_acquire_lock,
+ _IO_release_lock): Define.
+ * libio/fileops.c (_IO_new_file_underflow): Use it.
+ * libio/fputc.c (fputc): Likewise.
+ * libio/fputwc.c (fputwc): Likewise.
+ * libio/freopen64.c (freopen64):
+ * libio/freopen.c (freopen): Likewise.
+ * libio/fseek.c (fseek): Likewise.
+ * libio/fseeko64.c (fseeko64): Likewise.
+ * libio/fseeko.c (fseeko): Likewise.
+ * libio/ftello64.c (ftello64): Likewise.
+ * libio/ftello.c (ftello): Likewise.
+ * libio/fwide.c (fwide): Likewise.
+ * libio/getc.c (_IO_getc): Likewise.
+ * libio/getchar.c (getchar): Likewise.
+ * libio/getwc.c (_IO_getwc): Likewise.
+ * libio/getwchar.c (getwchar): Likewise.
+ * libio/iofclose.c (_IO_new_fclose):
+ * libio/iofflush.c (_IO_fflush): Likewise.
+ * libio/iofgetpos64.c (_IO_new_fgetpos64): Likewise.
+ * libio/iofgetpos.c (_IO_new_fgetpos): Likewise.
+ * libio/iofgets.c (_IO_fgets): Likewise.
+ * libio/iofgetws.c (fgetws): Likewise.
+ * libio/iofputs.c (_IO_fputs):
+ * libio/iofputws.c (_IO_fputs): Likewise.
+ * libio/iofread.c (_IO_fread): Likewise.
+ * libio/iofsetpos64.c (_IO_new_fsetpos64): Likewise.
+ * libio/iofsetpos.c (_IO_new_fsetpos): Likewise.
+ * libio/ioftell.c (_IO_ftell): Likewise.
+ * libio/iofwrite.c (_IO_fwrite): Likewise.
+ * libio/iogetdelim.c (_IO_getdelim): Likewise.
+ * libio/iogets.c (_IO_gets): Likewise.
+ * libio/ioputs.c (_IO_puts): Likewise.
+ * libio/ioseekoff.c (_IO_seekoff): Likewise.
+ * libio/ioseekpos.c (_IO_seekpos): Likewise.
+ * libio/iosetbuffer.c (_IO_setbuffer): Likewise.
+ * libio/iosetvbuf.c (_IO_setvbuf): Likewise.
+ * libio/ioungetc.c (_IO_ungetc): Likewise.
+ * libio/ioungetwc.c (ungetwc): Likewise.
+ * libio/oldiofclose.c (_IO_old_fclose): Likewise.
+ * libio/oldiofgetpos64.c (_IO_old_fgetpos64): Likewise.
+ * libio/oldiofgetpos.c (_IO_old_fgetpos): Likewise.
+ * libio/oldiofsetpos64.c (_IO_old_fsetpos64): Likewise.
+ * libio/oldiofsetpos.c (_IO_old_fsetpos): Likewise.
+ * libio/peekc.c (_IO_peekc_locked): Likewise.
+ * libio/putc.c (_IO_putc): Likewise.
+ * libio/putchar.c (putchar): Likewise.
+ * libio/putwc.c (putwc): Likewise.
+ * libio/putwchar.c (putwchar): Likewise.
+ * libio/rewind.c (rewind): Likewise.
+ * libio/wfileops.c (_IO_wfile_underflow): Likewise.
+
2003-08-29 Ulrich Drepper <drepper@redhat.com>
* signal/signal.h: sighold, sigrelse, sigignore, sigset were
diff --git a/bits/stdio-lock.h b/bits/stdio-lock.h
index b6eb98d..d7c1db0 100644
--- a/bits/stdio-lock.h
+++ b/bits/stdio-lock.h
@@ -1,5 +1,5 @@
/* Thread package specific definitions of stream lock type. Generic version.
- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -45,5 +45,14 @@ __libc_lock_define_recursive (typedef, _IO_lock_t)
#define _IO_cleanup_region_end(_doit) \
__libc_cleanup_region_end (_doit)
+#if defined _LIBC && !defined NOT_IN_libc
+# define _IO_acquire_lock(_fp) \
+ _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp)); \
+ _IO_flockfile (_fp)
+
+# define _IO_release_lock(_fp) \
+ _IO_funlockfile (_fp); \
+ _IO_cleanup_region_end (0)
+#endif
#endif /* bits/stdio-lock.h */
diff --git a/libio/Makefile b/libio/Makefile
index ad2d5dd..645448f 100644
--- a/libio/Makefile
+++ b/libio/Makefile
@@ -75,10 +75,60 @@ CPPFLAGS += -D_IO_MTSAFE_IO
endif
# Support for exception handling.
-CFLAGS-genops.c = $(exceptions)
-CFLAGS-wgenops.c = $(exceptions)
CFLAGS-fileops.c = $(exceptions)
+CFLAGS-fputc.c = $(exceptions)
+CFLAGS-fputwc.c = $(exceptions)
+CFLAGS-freopen64.c = $(exceptions)
+CFLAGS-freopen.c = $(exceptions)
+CFLAGS-fseek.c = $(exceptions)
+CFLAGS-fseeko64.c = $(exceptions)
+CFLAGS-fseeko.c = $(exceptions)
+CFLAGS-ftello64.c = $(exceptions)
+CFLAGS-ftello.c = $(exceptions)
+CFLAGS-fwide.c = $(exceptions)
+CFLAGS-genops.c = $(exceptions)
+CFLAGS-getc.c = $(exceptions)
+CFLAGS-getchar.c = $(exceptions)
+CFLAGS-getwc.c = $(exceptions)
+CFLAGS-getwchar.c = $(exceptions)
+CFLAGS-iofclose.c = $(exceptions)
+CFLAGS-iofflush.c = $(exceptions)
+CFLAGS-iofgetpos64.c = $(exceptions)
+CFLAGS-iofgetpos.c = $(exceptions)
+CFLAGS-iofgets.c = $(exceptions)
+CFLAGS-iofgetws.c = $(exceptions)
+CFLAGS-iofputs.c = $(exceptions)
+CFLAGS-iofputws.c = $(exceptions)
+CFLAGS-iofread.c = $(exceptions)
+CFLAGS-iofsetpos64.c = $(exceptions)
+CFLAGS-iofsetpos.c = $(exceptions)
+CFLAGS-ioftell.c = $(exceptions)
+CFLAGS-iofwrite.c = $(exceptions)
+CFLAGS-iogetdelim.c = $(exceptions)
+CFLAGS-iogetline.c = $(exceptions)
+CFLAGS-iogets.c = $(exceptions)
+CFLAGS-iogetwline.c = $(exceptions)
+CFLAGS-ioputs.c = $(exceptions)
+CFLAGS-ioseekoff.c = $(exceptions)
+CFLAGS-ioseekpos.c = $(exceptions)
+CFLAGS-iosetbuffer.c = $(exceptions)
+CFLAGS-iosetvbuf.c = $(exceptions)
+CFLAGS-ioungetc.c = $(exceptions)
+CFLAGS-ioungetwc.c = $(exceptions)
+CFLAGS-oldfileops.c = $(exceptions)
+CFLAGS-oldiofclose.c = $(exceptions)
+CFLAGS-oldiofgetpos64.c = $(exceptions)
+CFLAGS-oldiofgetpos.c = $(exceptions)
+CFLAGS-oldiofsetpos64.c = $(exceptions)
+CFLAGS-oldiofsetpos.c = $(exceptions)
+CFLAGS-peekc.c = $(exceptions)
+CFLAGS-putc.c = $(exceptions)
+CFLAGS-putchar.c = $(exceptions)
+CFLAGS-putwc.c = $(exceptions)
+CFLAGS-putwchar.c = $(exceptions)
+CFLAGS-rewind.c = $(exceptions)
CFLAGS-wfileops.c = $(exceptions)
+CFLAGS-wgenops.c = $(exceptions)
# XXX Do we need filedoalloc and wfiledoalloc? Others?
CFLAGS-tst_putwc.c = -DOBJPFX=\"$(objpfx)\"
diff --git a/libio/fileops.c b/libio/fileops.c
index 0faf01f..4993630 100644
--- a/libio/fileops.c
+++ b/libio/fileops.c
@@ -562,16 +562,13 @@ _IO_new_file_underflow (fp)
traditional Unix systems did this for stdout. stderr better
not be line buffered. So we do just that here
explicitly. --drepper */
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _IO_stdout);
- _IO_flockfile (_IO_stdout);
+ _IO_acquire_lock (_IO_stdout);
if ((_IO_stdout->_flags & (_IO_LINKED | _IO_NO_WRITES | _IO_LINE_BUF))
== (_IO_LINKED | _IO_LINE_BUF))
_IO_OVERFLOW (_IO_stdout, EOF);
- _IO_funlockfile (_IO_stdout);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (_IO_stdout);
#endif
}
diff --git a/libio/fputc.c b/libio/fputc.c
index 5ef048f..8fd0b80 100644
--- a/libio/fputc.c
+++ b/libio/fputc.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1996, 1997, 1998, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -35,11 +35,9 @@ fputc (c, fp)
{
int result;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
result = _IO_putc_unlocked (c, fp);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/fputwc.c b/libio/fputwc.c
index 600d730..8c74943 100644
--- a/libio/fputwc.c
+++ b/libio/fputwc.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1996,1997,1998,1999,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -35,13 +35,11 @@ fputwc (wc, fp)
{
int result;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
if (_IO_fwide (fp, 1) < 0)
result = WEOF;
else
result = _IO_putwc_unlocked (wc, fp);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/freopen.c b/libio/freopen.c
index cae9d30..d94a562 100644
--- a/libio/freopen.c
+++ b/libio/freopen.c
@@ -44,8 +44,7 @@ freopen (filename, mode, fp)
CHECK_FILE (fp, NULL);
if (!(fp->_flags & _IO_IS_FILEBUF))
return NULL;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
if (filename == NULL && _IO_fileno (fp) >= 0)
{
fd = __dup (_IO_fileno (fp));
@@ -84,7 +83,6 @@ freopen (filename, mode, fp)
if (filename != NULL)
free ((char *) filename);
}
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/freopen64.c b/libio/freopen64.c
index d57994d..f8da78c 100644
--- a/libio/freopen64.c
+++ b/libio/freopen64.c
@@ -44,8 +44,7 @@ freopen64 (filename, mode, fp)
CHECK_FILE (fp, NULL);
if (!(fp->_flags & _IO_IS_FILEBUF))
return NULL;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
if (filename == NULL && _IO_fileno (fp) >= 0)
{
fd = __dup (_IO_fileno (fp));
@@ -68,8 +67,7 @@ freopen64 (filename, mode, fp)
if (filename != NULL)
free ((char *) filename);
}
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
#else
__set_errno (ENOSYS);
diff --git a/libio/fseek.c b/libio/fseek.c
index 831a4d4..0515822 100644
--- a/libio/fseek.c
+++ b/libio/fseek.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993,1995,1996,1997,1998,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -36,11 +37,9 @@ fseek (fp, offset, whence)
{
int result;
CHECK_FILE (fp, -1);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
result = _IO_fseek (fp, offset, whence);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
libc_hidden_def (fseek)
diff --git a/libio/fseeko.c b/libio/fseeko.c
index 8087b95..d464c99 100644
--- a/libio/fseeko.c
+++ b/libio/fseeko.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1995,1996,1997,1998,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -36,10 +36,8 @@ fseeko (fp, offset, whence)
{
int result;
CHECK_FILE (fp, -1);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
result = _IO_fseek (fp, offset, whence);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/fseeko64.c b/libio/fseeko64.c
index 149e701..5dbfc45 100644
--- a/libio/fseeko64.c
+++ b/libio/fseeko64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1995,1996,1997,1998,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -38,11 +38,9 @@ fseeko64 (fp, offset, whence)
#ifdef _G_LSEEK64
int result;
CHECK_FILE (fp, -1);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
result = _IO_fseek (fp, offset, whence);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
#else
__set_errno (ENOSYS);
diff --git a/libio/ftello.c b/libio/ftello.c
index e148664..4975a0b 100644
--- a/libio/ftello.c
+++ b/libio/ftello.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995-2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -37,16 +37,14 @@ ftello (fp)
{
_IO_off64_t pos;
CHECK_FILE (fp, -1L);
- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
if (_IO_in_backup (fp))
{
if (fp->_mode <= 0)
pos -= fp->_IO_save_end - fp->_IO_save_base;
}
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
if (pos == _IO_pos_BAD)
{
#ifdef EIO
diff --git a/libio/ftello64.c b/libio/ftello64.c
index b2da11d..0275c0c 100644
--- a/libio/ftello64.c
+++ b/libio/ftello64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995-2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -38,16 +38,14 @@ ftello64 (fp)
#ifdef _G_LSEEK64
_IO_off64_t pos;
CHECK_FILE (fp, -1L);
- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
if (_IO_in_backup (fp))
{
if (fp->_mode <= 0)
pos -= fp->_IO_save_end - fp->_IO_save_base;
}
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
if (pos == _IO_pos_BAD)
{
#ifdef EIO
diff --git a/libio/fwide.c b/libio/fwide.c
index c435e5e..21214a9 100644
--- a/libio/fwide.c
+++ b/libio/fwide.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -44,13 +44,9 @@ fwide (fp, mode)
or the orientation already has been determined. */
return fp->_mode;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
-
+ _IO_acquire_lock (fp);
result = _IO_fwide (fp, mode);
-
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/getc.c b/libio/getc.c
index a35dcb9..9121e40 100644
--- a/libio/getc.c
+++ b/libio/getc.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -36,11 +37,9 @@ _IO_getc (fp)
{
int result;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
result = _IO_getc_unlocked (fp);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/getchar.c b/libio/getchar.c
index 8ce67fe..d256050 100644
--- a/libio/getchar.c
+++ b/libio/getchar.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1996, 1997, 1998, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -34,12 +34,9 @@ int
getchar ()
{
int result;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _IO_stdin);
- _IO_flockfile (_IO_stdin);
+ _IO_acquire_lock (_IO_stdin);
result = _IO_getc_unlocked (_IO_stdin);
- _IO_funlockfile (_IO_stdin);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (_IO_stdin);
return result;
}
diff --git a/libio/getwc.c b/libio/getwc.c
index 0617e2d..656f1d8 100644
--- a/libio/getwc.c
+++ b/libio/getwc.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -37,11 +38,9 @@ _IO_getwc (fp)
{
wint_t result;
CHECK_FILE (fp, WEOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
result = _IO_getwc_unlocked (fp);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/getwchar.c b/libio/getwchar.c
index 0298e22..a477b45 100644
--- a/libio/getwchar.c
+++ b/libio/getwchar.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1996,1997,1998,1999,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -34,11 +34,8 @@ wint_t
getwchar ()
{
wint_t result;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _IO_stdin);
- _IO_flockfile (_IO_stdin);
+ _IO_acquire_lock (_IO_stdin);
result = _IO_getwc_unlocked (_IO_stdin);
- _IO_funlockfile (_IO_stdin);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (_IO_stdin);
return result;
}
diff --git a/libio/iofclose.c b/libio/iofclose.c
index eb01c88..da0f9fe 100644
--- a/libio/iofclose.c
+++ b/libio/iofclose.c
@@ -57,15 +57,13 @@ _IO_new_fclose (fp)
if (fp->_IO_file_flags & _IO_IS_FILEBUF)
INTUSE(_IO_un_link) ((struct _IO_FILE_plus *) fp);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
if (fp->_IO_file_flags & _IO_IS_FILEBUF)
status = INTUSE(_IO_file_close_it) (fp);
else
status = fp->_flags & _IO_ERR_SEEN ? -1 : 0;
_IO_FINISH (fp);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
if (fp->_mode > 0)
{
#if _LIBC
diff --git a/libio/iofflush.c b/libio/iofflush.c
index d1a76cc..d2d57f5 100644
--- a/libio/iofflush.c
+++ b/libio/iofflush.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993,1995,1996,1997,1998,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -38,11 +39,9 @@ _IO_fflush (fp)
{
int result;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
result = _IO_SYNC (fp) ? EOF : 0;
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
}
diff --git a/libio/iofgetpos.c b/libio/iofgetpos.c
index 0c80b2f..aff39bb 100644
--- a/libio/iofgetpos.c
+++ b/libio/iofgetpos.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995-2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -38,8 +38,7 @@ _IO_new_fgetpos (fp, posp)
_IO_off64_t pos;
int result = 0;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
if (_IO_in_backup (fp))
{
@@ -72,8 +71,7 @@ _IO_new_fgetpos (fp, posp)
posp->__state = fp->_wide_data->_IO_state;
}
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/iofgetpos64.c b/libio/iofgetpos64.c
index 3ad7e11..029556f 100644
--- a/libio/iofgetpos64.c
+++ b/libio/iofgetpos64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995-2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995-2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -38,16 +38,14 @@ _IO_new_fgetpos64 (fp, posp)
#ifdef _G_LSEEK64
_IO_off64_t pos;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
if (_IO_in_backup (fp))
{
if (fp->_mode <= 0)
pos -= fp->_IO_save_end - fp->_IO_save_base;
}
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
if (pos == _IO_pos_BAD)
{
/* ANSI explicitly requires setting errno to a positive value on
diff --git a/libio/iofgets.c b/libio/iofgets.c
index ea1d3ed..879cc97 100644
--- a/libio/iofgets.c
+++ b/libio/iofgets.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993, 95, 96, 97, 98, 99, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -40,8 +41,7 @@ _IO_fgets (buf, n, fp)
CHECK_FILE (fp, NULL);
if (n <= 0)
return NULL;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
/* This is very tricky since a file descriptor may be in the
non-blocking mode. The error flag doesn't mean much in this
case. We return an error only when there is a new error. */
@@ -59,8 +59,7 @@ _IO_fgets (buf, n, fp)
result = buf;
}
fp->_IO_file_flags |= old_error;
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/iofgetws.c b/libio/iofgetws.c
index 741bb49..654c051 100644
--- a/libio/iofgetws.c
+++ b/libio/iofgetws.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993, 95, 96, 97, 98, 99, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2001
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -40,8 +41,7 @@ fgetws (buf, n, fp)
CHECK_FILE (fp, NULL);
if (n <= 0)
return NULL;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
/* This is very tricky since a file descriptor may be in the
non-blocking mode. The error flag doesn't mean much in this
case. We return an error only when there is a new error. */
@@ -58,7 +58,6 @@ fgetws (buf, n, fp)
result = buf;
}
fp->_IO_file_flags |= old_error;
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/iofputs.c b/libio/iofputs.c
index 088fd5f..b596a99 100644
--- a/libio/iofputs.c
+++ b/libio/iofputs.c
@@ -37,13 +37,11 @@ _IO_fputs (str, fp)
_IO_size_t len = strlen (str);
int result = EOF;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
if ((_IO_vtable_offset (fp) != 0 || _IO_fwide (fp, -1) == -1)
&& _IO_sputn (fp, str, len) == len)
result = 1;
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
libc_hidden_def (_IO_fputs)
diff --git a/libio/iofputws.c b/libio/iofputws.c
index c23156d..44e6005 100644
--- a/libio/iofputws.c
+++ b/libio/iofputws.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993,1996,1997,1998,1999,2000 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -36,12 +37,10 @@ fputws (str, fp)
_IO_size_t len = __wcslen (str);
int result = EOF;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
if (_IO_fwide (fp, 1) == 1
&& _IO_sputn (fp, (char *) str, len) == len)
result = 1;
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/iofread.c b/libio/iofread.c
index 6eb99da..c015baf 100644
--- a/libio/iofread.c
+++ b/libio/iofread.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993,1995,1997,1998,1999,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -39,11 +40,9 @@ _IO_fread (buf, size, count, fp)
CHECK_FILE (fp, 0);
if (bytes_requested == 0)
return 0;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
bytes_read = INTUSE(_IO_sgetn) (fp, (char *) buf, bytes_requested);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return bytes_requested == bytes_read ? count : bytes_read / size;
}
INTDEF(_IO_fread)
diff --git a/libio/iofsetpos.c b/libio/iofsetpos.c
index f3821e2..a907b02 100644
--- a/libio/iofsetpos.c
+++ b/libio/iofsetpos.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993, 1995, 1997-2000, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -36,8 +37,7 @@ _IO_new_fsetpos (fp, posp)
{
int result;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT)
== _IO_pos_BAD)
{
@@ -57,8 +57,7 @@ _IO_new_fsetpos (fp, posp)
/* This is a stateful encoding, restore the state. */
fp->_wide_data->_IO_state = posp->__state;
}
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/iofsetpos64.c b/libio/iofsetpos64.c
index 4746d72..5ef8104 100644
--- a/libio/iofsetpos64.c
+++ b/libio/iofsetpos64.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993, 1995, 1997-2000, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -37,8 +38,7 @@ _IO_new_fsetpos64 (fp, posp)
#ifdef _G_LSEEK64
int result;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT)
== _IO_pos_BAD)
{
@@ -58,8 +58,7 @@ _IO_new_fsetpos64 (fp, posp)
/* This is a stateful encoding, safe the state. */
fp->_wide_data->_IO_state = posp->__state;
}
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
#else
__set_errno (ENOSYS);
diff --git a/libio/ioftell.c b/libio/ioftell.c
index 589a2a2..b991ef6 100644
--- a/libio/ioftell.c
+++ b/libio/ioftell.c
@@ -36,16 +36,14 @@ _IO_ftell (fp)
{
_IO_off64_t pos;
CHECK_FILE (fp, -1L);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
if (_IO_in_backup (fp))
{
if (_IO_vtable_offset (fp) != 0 || fp->_mode <= 0)
pos -= fp->_IO_save_end - fp->_IO_save_base;
}
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
if (pos == _IO_pos_BAD)
{
#ifdef EIO
diff --git a/libio/iofwrite.c b/libio/iofwrite.c
index 6f0d273..1f4331c 100644
--- a/libio/iofwrite.c
+++ b/libio/iofwrite.c
@@ -40,12 +40,10 @@ _IO_fwrite (buf, size, count, fp)
CHECK_FILE (fp, 0);
if (request == 0)
return 0;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
if (_IO_vtable_offset (fp) != 0 || _IO_fwide (fp, -1) == -1)
written = _IO_sputn (fp, (const char *) buf, request);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
if (written == request)
return count;
else
diff --git a/libio/iogetdelim.c b/libio/iogetdelim.c
index edc5228..3d0c976 100644
--- a/libio/iogetdelim.c
+++ b/libio/iogetdelim.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1996, 1997, 1998, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1994,1996,1997,1998,2001,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -55,8 +55,7 @@ _IO_getdelim (lineptr, n, delimiter, fp)
return -1;
}
CHECK_FILE (fp, -1);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
if (_IO_ferror_unlocked (fp))
{
result = -1;
@@ -120,8 +119,7 @@ _IO_getdelim (lineptr, n, delimiter, fp)
result = cur_len;
unlock_return:
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/iogets.c b/libio/iogets.c
index 95e8368..a901b8a 100644
--- a/libio/iogets.c
+++ b/libio/iogets.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1996, 1997, 1998, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1996,1997,1998,2002,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -36,9 +36,7 @@ _IO_gets (buf)
int ch;
char *retval;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _IO_stdin);
- _IO_flockfile (_IO_stdin);
+ _IO_acquire_lock (_IO_stdin);
ch = _IO_getc_unlocked (_IO_stdin);
if (ch == EOF)
{
@@ -67,8 +65,7 @@ _IO_gets (buf)
buf[count] = 0;
retval = buf;
unlock_return:
- _IO_funlockfile (_IO_stdin);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (_IO_stdin);
return retval;
}
diff --git a/libio/ioputs.c b/libio/ioputs.c
index f878ea6..2f43e99 100644
--- a/libio/ioputs.c
+++ b/libio/ioputs.c
@@ -34,9 +34,7 @@ _IO_puts (str)
{
int result = EOF;
_IO_size_t len = strlen (str);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _IO_stdout);
- _IO_flockfile (_IO_stdout);
+ _IO_acquire_lock (_IO_stdout);
if ((_IO_vtable_offset (_IO_stdout) != 0
|| _IO_fwide (_IO_stdout, -1) == -1)
@@ -44,8 +42,7 @@ _IO_puts (str)
&& _IO_putc_unlocked ('\n', _IO_stdout) != EOF)
result = len + 1;
- _IO_funlockfile (_IO_stdout);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (_IO_stdout);
return result;
}
diff --git a/libio/ioseekoff.c b/libio/ioseekoff.c
index 9229166..dd8a37f 100644
--- a/libio/ioseekoff.c
+++ b/libio/ioseekoff.c
@@ -81,12 +81,8 @@ _IO_seekoff (fp, offset, dir, mode)
{
_IO_off64_t retval;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
-
+ _IO_acquire_lock (fp);
retval = _IO_seekoff_unlocked (fp, offset, dir, mode);
-
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return retval;
}
diff --git a/libio/ioseekpos.c b/libio/ioseekpos.c
index 37d32af..4683ffe 100644
--- a/libio/ioseekpos.c
+++ b/libio/ioseekpos.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1997, 1998, 1999, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1997,1998,1999,2002,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -59,12 +59,8 @@ _IO_seekpos (fp, pos, mode)
{
_IO_off64_t retval;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
-
+ _IO_acquire_lock (fp);
retval = _IO_seekpos_unlocked (fp, pos, mode);
-
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return retval;
}
diff --git a/libio/iosetbuffer.c b/libio/iosetbuffer.c
index 2497304..d43d0eb 100644
--- a/libio/iosetbuffer.c
+++ b/libio/iosetbuffer.c
@@ -35,8 +35,7 @@ _IO_setbuffer (fp, buf, size)
_IO_size_t size;
{
CHECK_FILE (fp, );
- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
fp->_flags &= ~_IO_LINE_BUF;
if (!buf)
size = 0;
@@ -44,8 +43,7 @@ _IO_setbuffer (fp, buf, size)
if (_IO_vtable_offset (fp) == 0 && fp->_mode == 0 && _IO_CHECK_WIDE (fp))
/* We also have to set the buffer using the wide char function. */
(void) _IO_WSETBUF (fp, buf, size);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
}
INTDEF(_IO_setbuffer)
diff --git a/libio/iosetvbuf.c b/libio/iosetvbuf.c
index 06d9f73..7580230 100644
--- a/libio/iosetvbuf.c
+++ b/libio/iosetvbuf.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -40,8 +41,7 @@ _IO_setvbuf (fp, buf, mode, size)
{
int result;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
switch (mode)
{
case _IOFBF:
@@ -96,8 +96,7 @@ _IO_setvbuf (fp, buf, mode, size)
result = _IO_SETBUF (fp, buf, size) == NULL ? EOF : 0;
unlock_return:
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
INTDEF(_IO_setvbuf)
diff --git a/libio/ioungetc.c b/libio/ioungetc.c
index d32359b..df746b5 100644
--- a/libio/ioungetc.c
+++ b/libio/ioungetc.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993,1996,1997,1998,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1996,1997,1998,2002,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -36,11 +36,9 @@ _IO_ungetc (c, fp)
CHECK_FILE (fp, EOF);
if (c == EOF)
return EOF;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
result = INTUSE(_IO_sputbackc) (fp, (unsigned char) c);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/ioungetwc.c b/libio/ioungetwc.c
index 1bff412..00d3e96 100644
--- a/libio/ioungetwc.c
+++ b/libio/ioungetwc.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993, 1996-1999, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1996, 1997, 1998, 1999, 2001, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -35,14 +36,12 @@ ungetwc (c, fp)
{
int result;
CHECK_FILE (fp, WEOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
_IO_fwide (fp, 1);
if (c == WEOF)
result = WEOF;
else
result = INTUSE(_IO_sputbackwc) (fp, c);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/oldiofclose.c b/libio/oldiofclose.c
index 18db7b8..3762279 100644
--- a/libio/oldiofclose.c
+++ b/libio/oldiofclose.c
@@ -52,15 +52,13 @@ _IO_old_fclose (fp)
if (fp->_IO_file_flags & _IO_IS_FILEBUF)
INTUSE(_IO_un_link) ((struct _IO_FILE_plus *) fp);
- _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
if (fp->_IO_file_flags & _IO_IS_FILEBUF)
status = _IO_old_file_close_it (fp);
else
status = fp->_flags & _IO_ERR_SEEN ? -1 : 0;
_IO_FINISH (fp);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
if (_IO_have_backup (fp))
INTUSE(_IO_free_backup_area) (fp);
if (fp != _IO_stdin && fp != _IO_stdout && fp != _IO_stderr)
diff --git a/libio/oldiofgetpos.c b/libio/oldiofgetpos.c
index 596c405..b00a520 100644
--- a/libio/oldiofgetpos.c
+++ b/libio/oldiofgetpos.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993,95,96,97,98,99,2000, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -38,13 +39,11 @@ _IO_old_fgetpos (fp, posp)
{
_IO_off_t pos;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
if (_IO_in_backup (fp))
pos -= fp->_IO_save_end - fp->_IO_save_base;
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
if (pos == _IO_pos_BAD)
{
/* ANSI explicitly requires setting errno to a positive value on
diff --git a/libio/oldiofgetpos64.c b/libio/oldiofgetpos64.c
index 4a38c38..b3a4e0e 100644
--- a/libio/oldiofgetpos64.c
+++ b/libio/oldiofgetpos64.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993,95,96,97,98,99,2000, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -39,13 +40,11 @@ _IO_old_fgetpos64 (fp, posp)
#ifdef _G_LSEEK64
_IO_off64_t pos;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
pos = _IO_seekoff_unlocked (fp, 0, _IO_seek_cur, 0);
if (_IO_in_backup (fp))
pos -= fp->_IO_save_end - fp->_IO_save_base;
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
if (pos == _IO_pos_BAD)
{
/* ANSI explicitly requires setting errno to a positive value on
diff --git a/libio/oldiofsetpos.c b/libio/oldiofsetpos.c
index ce3bb12..23ef565 100644
--- a/libio/oldiofsetpos.c
+++ b/libio/oldiofsetpos.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993,95,97,98,99,2000,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -37,8 +38,7 @@ _IO_old_fsetpos (fp, posp)
{
int result;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT)
== _IO_pos_BAD)
{
@@ -52,8 +52,7 @@ _IO_old_fsetpos (fp, posp)
}
else
result = 0;
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/oldiofsetpos64.c b/libio/oldiofsetpos64.c
index 834f154..3475859 100644
--- a/libio/oldiofsetpos64.c
+++ b/libio/oldiofsetpos64.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1993,95,97,98,99,2000,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2000, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -39,8 +40,7 @@ _IO_old_fsetpos64 (fp, posp)
#ifdef _G_LSEEK64
int result;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
if (_IO_seekpos_unlocked (fp, posp->__pos, _IOS_INPUT|_IOS_OUTPUT)
== _IO_pos_BAD)
{
@@ -54,8 +54,7 @@ _IO_old_fsetpos64 (fp, posp)
}
else
result = 0;
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
#else
__set_errno (ENOSYS);
diff --git a/libio/peekc.c b/libio/peekc.c
index 95ba8ae..c829c5f 100644
--- a/libio/peekc.c
+++ b/libio/peekc.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1993,1995,1996,1997,1998,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -36,10 +36,8 @@ _IO_peekc_locked (fp)
{
int result;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
result = _IO_peekc_unlocked (fp);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
diff --git a/libio/putc.c b/libio/putc.c
index 6495744..db3aab0 100644
--- a/libio/putc.c
+++ b/libio/putc.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,1995,1996,1997,1998,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1997, 1998, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -28,11 +29,9 @@ _IO_putc (c, fp)
{
int result;
CHECK_FILE (fp, EOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
result = _IO_putc_unlocked (c, fp);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
INTDEF(_IO_putc)
diff --git a/libio/putchar.c b/libio/putchar.c
index ac20727..5b1f292 100644
--- a/libio/putchar.c
+++ b/libio/putchar.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1995,1996,1997,1998,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -26,12 +26,9 @@ putchar (c)
int c;
{
int result;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _IO_stdout);
- _IO_flockfile (_IO_stdout);
+ _IO_acquire_lock (_IO_stdout);
result = _IO_putc_unlocked (c, _IO_stdout);
- _IO_funlockfile (_IO_stdout);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (_IO_stdout);
return result;
}
diff --git a/libio/putwc.c b/libio/putwc.c
index 33da712..b43eb03 100644
--- a/libio/putwc.c
+++ b/libio/putwc.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,95,96,97,98,99,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1997, 1998, 1999, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -26,11 +27,9 @@ putwc (wc, fp)
{
wint_t result;
CHECK_FILE (fp, WEOF);
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
result = _IO_putwc_unlocked (wc, fp);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
return result;
}
libc_hidden_def (putwc)
diff --git a/libio/putwchar.c b/libio/putwchar.c
index 56fec58..d211640 100644
--- a/libio/putwchar.c
+++ b/libio/putwchar.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
+/* Copyright (C) 1991,95,96,97,98,99,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -24,11 +24,8 @@ putwchar (wc)
wchar_t wc;
{
wint_t result;
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _IO_stdout);
- _IO_flockfile (_IO_stdout);
+ _IO_acquire_lock (_IO_stdout);
result = _IO_putwc_unlocked (wc, _IO_stdout);
- _IO_funlockfile (_IO_stdout);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (_IO_stdout);
return result;
}
diff --git a/libio/rewind.c b/libio/rewind.c
index e1bdc57..e77e7b5 100644
--- a/libio/rewind.c
+++ b/libio/rewind.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993,96,97,98,2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993,96,97,98,2002,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -33,11 +33,9 @@ rewind (fp)
_IO_FILE *fp;
{
CHECK_FILE (fp, );
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
- _IO_flockfile (fp);
+ _IO_acquire_lock (fp);
_IO_rewind (fp);
_IO_clearerr (fp);
- _IO_funlockfile (fp);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (fp);
}
libc_hidden_def (rewind)
diff --git a/libio/wfileops.c b/libio/wfileops.c
index 569a0d7..5292f48 100644
--- a/libio/wfileops.c
+++ b/libio/wfileops.c
@@ -217,16 +217,13 @@ _IO_wfile_underflow (fp)
traditional Unix systems did this for stdout. stderr better
not be line buffered. So we do just that here
explicitly. --drepper */
- _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile,
- _IO_stdout);
- _IO_flockfile (_IO_stdout);
+ _IO_acquire_lock (_IO_stdout);
if ((_IO_stdout->_flags & (_IO_LINKED | _IO_NO_WRITES | _IO_LINE_BUF))
== (_IO_LINKED | _IO_LINE_BUF))
_IO_OVERFLOW (_IO_stdout, EOF);
- _IO_funlockfile (_IO_stdout);
- _IO_cleanup_region_end (0);
+ _IO_release_lock (_IO_stdout);
#endif
}
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 8702160..3961b0c 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -5,7 +5,7 @@
2003-08-29 Jakub Jelinek <jakuB@redhat.com>
- * tst-cancel.c (tf_sigwait, tf_sigwaitinfo, tf_sigtimedwait): Add
+ * tst-cancel4.c (tf_sigwait, tf_sigwaitinfo, tf_sigtimedwait): Add
sigemptyset before sigaddset. Reported by jreiser@BitWagon.com.
2003-08-27 Ulrich Drepper <drepper@redhat.com>
diff --git a/nptl/sysdeps/pthread/bits/stdio-lock.h b/nptl/sysdeps/pthread/bits/stdio-lock.h
index fbb14a1..3bc3c06 100644
--- a/nptl/sysdeps/pthread/bits/stdio-lock.h
+++ b/nptl/sysdeps/pthread/bits/stdio-lock.h
@@ -1,5 +1,5 @@
-/* Thread package specific definitions of stream lock type. Generic version.
- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Thread package specific definitions of stream lock type. NPTL version.
+ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -85,5 +85,26 @@ typedef struct { int lock; int cnt; void *owner; } _IO_lock_t;
#define _IO_cleanup_region_end(_doit) \
__libc_cleanup_region_end (_doit)
+#if defined _LIBC && !defined NOT_IN_libc
+
+# ifdef __EXCEPTIONS
+# define _IO_acquire_lock(_fp) \
+ do { \
+ auto inline __attribute__((always_inline)) void \
+ _IO_acquire_lock_fct (int *p __attribute__ ((__unused__))) \
+ { \
+ if (((_fp)->_flags & _IO_USER_LOCK) == 0) \
+ _IO_funlockfile (_fp); \
+ } \
+ int _IO_acquire_lock_dummy \
+ __attribute__ ((cleanup (_IO_acquire_lock_fct))); \
+ _IO_flockfile (_fp)
+
+# else
+# define _IO_acquire_lock(_fp) _IO_acquire_lock_needs_exceptions_enabled
+# endif
+# define _IO_release_lock(_fp) ; } while (0)
+
+#endif
#endif /* bits/stdio-lock.h */
diff --git a/sysdeps/generic/bits/stdio-lock.h b/sysdeps/generic/bits/stdio-lock.h
index b6eb98d..d7c1db0 100644
--- a/sysdeps/generic/bits/stdio-lock.h
+++ b/sysdeps/generic/bits/stdio-lock.h
@@ -1,5 +1,5 @@
/* Thread package specific definitions of stream lock type. Generic version.
- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -45,5 +45,14 @@ __libc_lock_define_recursive (typedef, _IO_lock_t)
#define _IO_cleanup_region_end(_doit) \
__libc_cleanup_region_end (_doit)
+#if defined _LIBC && !defined NOT_IN_libc
+# define _IO_acquire_lock(_fp) \
+ _IO_cleanup_region_start ((void (*) (void *)) _IO_funlockfile, (_fp)); \
+ _IO_flockfile (_fp)
+
+# define _IO_release_lock(_fp) \
+ _IO_funlockfile (_fp); \
+ _IO_cleanup_region_end (0)
+#endif
#endif /* bits/stdio-lock.h */