diff options
| author | Ulrich Drepper <drepper@redhat.com> | 2003-08-29 19:58:49 +0000 |
|---|---|---|
| committer | Ulrich Drepper <drepper@redhat.com> | 2003-08-29 19:58:49 +0000 |
| commit | 0261d33f8745765a829fe5d59cd4dc6534bcd1b3 (patch) | |
| tree | aa792e9c18feadd3a46d7234466e718776cc359f | |
| parent | feda52c086b82e5c756cb60532b844a1d4554d35 (diff) | |
| download | glibc-0261d33f8745765a829fe5d59cd4dc6534bcd1b3.tar.xz glibc-0261d33f8745765a829fe5d59cd4dc6534bcd1b3.zip | |
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.
55 files changed, 313 insertions, 254 deletions
@@ -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 b6eb98d921..d7c1db0132 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 ad2d5dda75..645448f9f1 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 0faf01f09f..4993630efc 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 5ef048ff41..8fd0b8066c 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 600d7307c7..8c749435a0 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 |
