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.
This commit is contained in:
Ulrich Drepper 2003-08-29 19:58:49 +00:00
parent feda52c086
commit 0261d33f87
55 changed files with 313 additions and 254 deletions

View File

@ -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

View File

@ -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 */

View File

@ -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)\"

View File

@ -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
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);

View File

@ -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)

View File

@ -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;
}

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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)

View File

@ -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;
}

View File

@ -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)

View File

@ -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;
}

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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)

View File

@ -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)

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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;
}

View File

@ -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);

View File

@ -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;
}

View File

@ -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)

View File

@ -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;
}

View File

@ -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)

View File

@ -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;
}

View File

@ -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)

View File

@ -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
}

View File

@ -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>

View File

@ -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 */

View File

@ -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 */