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 */
|
||||
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 );
|
||||
|
|
Loading…
Reference in New Issue