OSDN Git Service

* dtable.cc (dtable::init_std_file_from_handle): Set access to
authorcorinna <corinna>
Thu, 7 Feb 2008 18:59:39 +0000 (18:59 +0000)
committercorinna <corinna>
Thu, 7 Feb 2008 18:59:39 +0000 (18:59 +0000)
read/write of handle is connected to a tty or console.
* fhandler_dsp.cc (fhandler_dev_dsp::dup): Set open flags correctly
after duplicating from archetype.
* fhandler_tty.cc (fhandler_tty_slave::dup): Ditto.
(fhandler_pty_master::dup): Ditto.

winsup/cygwin/ChangeLog
winsup/cygwin/dtable.cc
winsup/cygwin/fhandler_dsp.cc
winsup/cygwin/fhandler_tty.cc

index 52d4212..6078d7d 100644 (file)
@@ -1,3 +1,12 @@
+2008-02-07  Corinna Vinschen  <corinna@vinschen.de>
+
+       * dtable.cc (dtable::init_std_file_from_handle): Set access to
+       read/write of handle is connected to a tty or console.
+       * fhandler_dsp.cc (fhandler_dev_dsp::dup): Set open flags correctly
+       after duplicating from archetype.
+       * fhandler_tty.cc (fhandler_tty_slave::dup): Ditto.
+       (fhandler_pty_master::dup): Ditto.
+
 2008-02-06  Corinna Vinschen  <corinna@vinschen.de>
 
        * miscfuncs.cc (next_char): Fix typos in comment.
index 6fcf708..6260669 100644 (file)
@@ -336,7 +336,9 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle)
        }
 
       DWORD access;
-      if (fd == 0)
+      if (dev == FH_TTY || dev == FH_CONSOLE)
+       access = GENERIC_READ | GENERIC_WRITE;
+      else if (fd == 0)
        access = GENERIC_READ;
       else 
        access = GENERIC_WRITE;  /* Should be rdwr for stderr but not sure that's
index 8ef89bf..249fa77 100644 (file)
@@ -1131,6 +1131,7 @@ fhandler_dev_dsp::dup (fhandler_base * child)
 {
   debug_printf ("");
   child->archetype = archetype;
+  child->set_flags (get_flags ());
   archetype->usecount++;
   return 0;
 }
index 75dd8a0..44a811a 100644 (file)
@@ -928,6 +928,7 @@ fhandler_tty_slave::dup (fhandler_base *child)
 {
   fhandler_tty_slave *arch = (fhandler_tty_slave *) archetype;
   *(fhandler_tty_slave *) child = *arch;
+  child->set_flags (get_flags ());
   child->usecount = 0;
   arch->usecount++;
   cygheap->manage_console_count ("fhandler_tty_slave::dup", 1);
@@ -940,6 +941,7 @@ fhandler_pty_master::dup (fhandler_base *child)
 {
   fhandler_tty_master *arch = (fhandler_tty_master *) archetype;
   *(fhandler_tty_master *) child = *arch;
+  child->set_flags (get_flags ());
   child->usecount = 0;
   arch->usecount++;
   report_tty_counts (child, "duped master", "");