* dtable.cc (dtable::init_std_file_from_handle): Try to mimic standard open

behavior with files redirected from stdin/stdout/stderr, i.e., fmode settings
take precedence over mount settings.
This commit is contained in:
Christopher Faylor 2002-10-08 02:44:35 +00:00
parent d389acbabf
commit 9655ff2680
2 changed files with 13 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2002-10-07 Christopher Faylor <cgf@redhat.com>
* dtable.cc (dtable::init_std_file_from_handle): Try to mimic standard
open behavior with files redirected from stdin/stdout/stderr, i.e.,
fmode settings take precedence over mount settings.
2002-10-07 Christopher Faylor <cgf@redhat.com>
* dtable.cc (unknown_file): New variable.

View File

@ -267,8 +267,13 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle, DWORD myaccess)
else
{
path_conv pc;
build_fhandler_from_name (fd, name, handle, pc)
->init (handle, myaccess, (name == unknown_file) ? 0 : pc.binmode ());
unsigned bin;
fhandler_base *fh = build_fhandler_from_name (fd, name, handle, pc);
bin = fh->get_default_fmode (myaccess == GENERIC_READ ? O_RDONLY : O_WRONLY);
if (!bin && name != unknown_file)
bin = pc.binmode ();
fh->init (handle, myaccess, bin);
set_std_handle (fd);
paranoid_printf ("fd %d, handle %p", fd, handle);
}