Commit 2b03d7d7 authored by Jason Edmeades's avatar Jason Edmeades Committed by Alexandre Julliard

cmd.exe: Add support for working directories per drive.

parent b6ed73b1
......@@ -1108,12 +1108,23 @@ void WCMD_setshow_default (char *command) {
/* Change to that directory */
WINE_TRACE("Really changing to directory '%s'\n", string);
status = SetCurrentDirectory (string);
if (!status) {
errorlevel = 1;
WCMD_print_error ();
return;
}
/* Set special =C: type environment variable */
if ((string[1] == ':') && IsCharAlpha (string[0])) {
char env[4];
strcpy(env, "=");
strncpy(env+1, string, 2);
env[3] = 0x00;
SetEnvironmentVariable(env, string);
}
}
return;
}
......
......@@ -460,6 +460,17 @@ void WCMD_process_command (char *command)
*/
if ((cmd[1] == ':') && IsCharAlpha (cmd[0]) && (strlen(cmd) == 2)) {
char envvar[5];
char dir[MAX_PATH];
/* According to MSDN CreateProcess docs, special env vars record
the current directory on each drive, in the form =C:
so see if one specified, and if so go back to it */
strcpy(envvar, "=");
strcat(envvar, cmd);
if (GetEnvironmentVariable(envvar, dir, MAX_PATH) == 0) {
sprintf(cmd, "%s\\", cmd);
}
status = SetCurrentDirectory (cmd);
if (!status) WCMD_print_error ();
HeapFree( GetProcessHeap(), 0, cmd );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment