Jason Edmeades : cmd.exe: Fix stdio redirects.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Mar 5 06:23:42 CST 2007


Module: wine
Branch: master
Commit: 9e518dc79d914062628791b623a1691256374ff5
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9e518dc79d914062628791b623a1691256374ff5

Author: Jason Edmeades <us at edmeades.me.uk>
Date:   Sun Mar  4 22:39:22 2007 +0000

cmd.exe: Fix stdio redirects.

---

 programs/cmd/wcmdmain.c |    8 +++-----
 1 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c
index bb805e6..1bea185 100644
--- a/programs/cmd/wcmdmain.c
+++ b/programs/cmd/wcmdmain.c
@@ -47,7 +47,6 @@ const char version_string[] = "CMD Version " PACKAGE_VERSION "\n\n";
 const char anykey[] = "Press Return key to continue: ";
 char quals[MAX_PATH], param1[MAX_PATH], param2[MAX_PATH];
 BATCH_CONTEXT *context = NULL;
-static HANDLE old_stdin = INVALID_HANDLE_VALUE, old_stdout = INVALID_HANDLE_VALUE;
 extern struct env_stack *pushd_directories;
 
 static char *WCMD_expand_envvar(char *start);
@@ -314,6 +313,8 @@ void WCMD_process_command (char *command)
     char *whichcmd;
     SECURITY_ATTRIBUTES sa;
     char *new_cmd;
+    HANDLE old_stdin = INVALID_HANDLE_VALUE;
+    HANDLE old_stdout = INVALID_HANDLE_VALUE;
 
     /* Move copy of the command onto the heap so it can be expanded */
     new_cmd = HeapAlloc( GetProcessHeap(), 0, MAXSTRING );
@@ -587,12 +588,10 @@ void WCMD_process_command (char *command)
     if (old_stdin != INVALID_HANDLE_VALUE) {
       CloseHandle (GetStdHandle (STD_INPUT_HANDLE));
       SetStdHandle (STD_INPUT_HANDLE, old_stdin);
-      old_stdin = INVALID_HANDLE_VALUE;
     }
     if (old_stdout != INVALID_HANDLE_VALUE) {
       CloseHandle (GetStdHandle (STD_OUTPUT_HANDLE));
       SetStdHandle (STD_OUTPUT_HANDLE, old_stdout);
-      old_stdout = INVALID_HANDLE_VALUE;
     }
 }
 
@@ -606,8 +605,7 @@ static void init_msvcrt_io_block(STARTUPINFO* st)
     GetStartupInfo(&st_p);
     st->cbReserved2 = st_p.cbReserved2;
     st->lpReserved2 = st_p.lpReserved2;
-    if (st_p.cbReserved2 && st_p.lpReserved2 &&
-        (old_stdin != INVALID_HANDLE_VALUE || old_stdout != INVALID_HANDLE_VALUE))
+    if (st_p.cbReserved2 && st_p.lpReserved2)
     {
         /* Override the entries for fd 0,1,2 if we happened
          * to change those std handles (this depends on the way wcmd sets




More information about the wine-cvs mailing list