From 4492334762a71d037edfab61cb40ad337723d974 Mon Sep 17 00:00:00 2001 From: Jason Edmeades Date: Mon, 3 Mar 2008 23:14:30 +0000 Subject: [PATCH] cmd.exe: Support cd .. when saving current directory. --- programs/cmd/builtins.c | 3 +++ programs/cmd/wcmdmain.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index 8592090118d..17b385d884f 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -1865,6 +1865,9 @@ void WCMD_setshow_default (WCHAR *command) { return; } else { + /* Save away the actual new directory, to store as current location */ + GetCurrentDirectoryW (sizeof(string)/sizeof(WCHAR), string); + /* Restore old directory if drive letter would change, and CD x:\directory /D (or pushd c:\directory) not supplied */ if ((strstrW(quals, parmD) == NULL) && diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 2261a28c98e..4c482ee9ead 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -419,6 +419,7 @@ int wmain (int argc, WCHAR *argvW[]) static const WCHAR fmt[] = {'=','%','c',':','\0'}; wsprintf(envvar, fmt, string[0]); SetEnvironmentVariable(envvar, string); + WINE_TRACE("Set %s to %s\n", wine_dbgstr_w(envvar), wine_dbgstr_w(string)); } if (opt_k) { @@ -643,7 +644,9 @@ void WCMD_execute (WCHAR *command, WCHAR *redirects, if (GetEnvironmentVariable(envvar, dir, MAX_PATH) == 0) { static const WCHAR fmt[] = {'%','s','\\','\0'}; wsprintf(cmd, fmt, cmd); + WINE_TRACE("No special directory settings, using dir of %s\n", wine_dbgstr_w(cmd)); } + WINE_TRACE("Got directory %s as %s\n", wine_dbgstr_w(envvar), wine_dbgstr_w(cmd)); status = SetCurrentDirectory (cmd); if (!status) WCMD_print_error (); HeapFree( GetProcessHeap(), 0, cmd ); -- 2.11.4.GIT