patch for freopen(NULL,...)
Jeff Johnston
jjohnstn@redhat.com
Tue Jan 10 17:11:00 GMT 2006
Patch checked in.
-- Jeff J.
Eric Blake wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> According to Jeff Johnston on 1/9/2006 10:54 AM:
>
>>Patch checked in with minor modifications. A check was required for
>>HAVE_FCNTL before using _fcntl_r. I also initialized e which was
>>generating a warning message because of the new if clause.
>
>
> Phooey - I botched the patch. Please check in this correction:
>
> 2006-01-10 Eric Blake <ebb9@byu.net>
>
> * libc/stdio/freopen.c (_freopen_r): Fix use of oflags.
> * libc/stdio64/freopen64.c (_freopen64_r): Likewise.
>
> - --
> Life is short - so eat dessert first!
>
> Eric Blake ebb9@byu.net
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.1 (Cygwin)
> Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
> Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
>
> iD8DBQFDw7nr84KuGfSFAYARAlCEAKDGWwM/FLYteXvYz9lLix4Jw+2bKgCeNK48
> UyL/CYPb1mrOHL+k/OXSUxc=
> =MSzn
> -----END PGP SIGNATURE-----
>
>
> ------------------------------------------------------------------------
>
> Index: libc/stdio/freopen.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/freopen.c,v
> retrieving revision 1.14
> diff -u -p -b -r1.14 freopen.c
> --- libc/stdio/freopen.c 9 Jan 2006 20:01:09 -0000 1.14
> +++ libc/stdio/freopen.c 10 Jan 2006 13:42:01 -0000
> @@ -146,14 +146,15 @@ _DEFUN(_freopen_r, (ptr, file, mode, fp)
> else
> {
> #ifdef HAVE_FCNTL
> + int oldflags;
> /*
> * Reuse the file descriptor, but only if the access mode is
> * unchanged. F_SETFL correctly ignores creation flags.
> */
> f = fp->_file;
> - if ((oflags = _fcntl_r (ptr, f, F_GETFL, 0)) == -1
> - || ((oflags ^ flags) & O_ACCMODE) != 0
> - || _fcntl_r (ptr, f, F_SETFL, flags) == -1)
> + if ((oldflags = _fcntl_r (ptr, f, F_GETFL, 0)) == -1
> + || ((oldflags ^ oflags) & O_ACCMODE) != 0
> + || _fcntl_r (ptr, f, F_SETFL, oflags) == -1)
> f = -1;
> #else
> /* We cannot modify without fcntl support. */
> Index: libc/stdio64/freopen64.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio64/freopen64.c,v
> retrieving revision 1.9
> diff -u -p -b -r1.9 freopen64.c
> --- libc/stdio64/freopen64.c 9 Jan 2006 20:01:09 -0000 1.9
> +++ libc/stdio64/freopen64.c 10 Jan 2006 13:42:01 -0000
> @@ -146,14 +146,15 @@ _DEFUN (_freopen64_r, (ptr, file, mode,
> else
> {
> #ifdef HAVE_FCNTL
> + int oldflags;
> /*
> * Reuse the file descriptor, but only if the access mode is
> * unchanged. F_SETFL correctly ignores creation flags.
> */
> f = fp->_file;
> - if ((oflags = _fcntl_r (ptr, f, F_GETFL, 0)) == -1
> - || ((oflags ^ flags) & O_ACCMODE) != 0
> - || _fcntl_r (ptr, f, F_SETFL, flags) == -1)
> + if ((oldflags = _fcntl_r (ptr, f, F_GETFL, 0)) == -1
> + || ((oldflags ^ oflags) & O_ACCMODE) != 0
> + || _fcntl_r (ptr, f, F_SETFL, oflags) == -1)
> f = -1;
> #else
> /* We cannot modify without fcntl support. */
More information about the Newlib
mailing list