mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-18 20:39:33 +08:00
2006-02-20 Jeff Johnston <jjohnstn@redhat.com>
* libc/stdio/fflush.c (fflush): For an fflush on a read-only stream, turn off fseek/rewind optimization as per POSIX/SUSv3. * libc/stdio/fseek.c (_fseek_r): After a successful unoptimized seek, turn off the __SNPT no-optimization flag.
This commit is contained in:
parent
8aaf07c7a2
commit
99db626d21
@ -1,3 +1,10 @@
|
|||||||
|
2006-02-20 Jeff Johnston <jjohnstn@redhat.com>
|
||||||
|
|
||||||
|
* libc/stdio/fflush.c (fflush): For an fflush on a read-only
|
||||||
|
stream, turn off fseek/rewind optimization as per POSIX/SUSv3.
|
||||||
|
* libc/stdio/fseek.c (_fseek_r): After a successful unoptimized
|
||||||
|
seek, turn off the __SNPT no-optimization flag.
|
||||||
|
|
||||||
2006-02-16 Jeff Johnston <jjohnstn@redhat.com>
|
2006-02-16 Jeff Johnston <jjohnstn@redhat.com>
|
||||||
|
|
||||||
* libc/sys/linux/aio.c: Define _GNU_SOURCE so struct aioinit
|
* libc/sys/linux/aio.c: Define _GNU_SOURCE so struct aioinit
|
||||||
|
@ -72,8 +72,18 @@ _DEFUN(fflush, (fp),
|
|||||||
_flockfile (fp);
|
_flockfile (fp);
|
||||||
|
|
||||||
t = fp->_flags;
|
t = fp->_flags;
|
||||||
if ((t & __SWR) == 0 || (p = fp->_bf._base) == NULL)
|
if ((t & __SWR) == 0)
|
||||||
{
|
{
|
||||||
|
/* For a read stream, an fflush causes the next seek to be
|
||||||
|
unoptimized (i.e. forces a system-level seek). This conforms
|
||||||
|
to the POSIX and SUSv3 standards. */
|
||||||
|
fp->_flags |= __SNPT;
|
||||||
|
_funlockfile (fp);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if ((p = fp->_bf._base) == NULL)
|
||||||
|
{
|
||||||
|
/* Nothing to flush. */
|
||||||
_funlockfile (fp);
|
_funlockfile (fp);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -359,6 +359,13 @@ dumb:
|
|||||||
fp->_r = 0;
|
fp->_r = 0;
|
||||||
/* fp->_w = 0; *//* unnecessary (I think...) */
|
/* fp->_w = 0; *//* unnecessary (I think...) */
|
||||||
fp->_flags &= ~__SEOF;
|
fp->_flags &= ~__SEOF;
|
||||||
|
/* Reset no-optimization flag after successful seek. The
|
||||||
|
no-optimization flag may be set in the case of a read
|
||||||
|
stream that is flushed which by POSIX/SUSv3 standards,
|
||||||
|
means that a corresponding seek must not optimize. The
|
||||||
|
optimization is then allowed if no subsequent flush
|
||||||
|
is performed. */
|
||||||
|
fp->_flags &= ~__SNPT;
|
||||||
_funlockfile (fp);
|
_funlockfile (fp);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user