cmd.exe: Add support for working directories per drive.
This commit is contained in:
parent
b6ed73b1ac
commit
2b03d7d75f
@ -1108,12 +1108,23 @@ void WCMD_setshow_default (char *command) {
|
|||||||
|
|
||||||
/* Change to that directory */
|
/* Change to that directory */
|
||||||
WINE_TRACE("Really changing to directory '%s'\n", string);
|
WINE_TRACE("Really changing to directory '%s'\n", string);
|
||||||
|
|
||||||
status = SetCurrentDirectory (string);
|
status = SetCurrentDirectory (string);
|
||||||
if (!status) {
|
if (!status) {
|
||||||
errorlevel = 1;
|
errorlevel = 1;
|
||||||
WCMD_print_error ();
|
WCMD_print_error ();
|
||||||
return;
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -460,6 +460,17 @@ void WCMD_process_command (char *command)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if ((cmd[1] == ':') && IsCharAlpha (cmd[0]) && (strlen(cmd) == 2)) {
|
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);
|
status = SetCurrentDirectory (cmd);
|
||||||
if (!status) WCMD_print_error ();
|
if (!status) WCMD_print_error ();
|
||||||
HeapFree( GetProcessHeap(), 0, cmd );
|
HeapFree( GetProcessHeap(), 0, cmd );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user