cmd.exe: Support PUSHD with wildcards.
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c
index 1880682..422042e 100644
--- a/programs/cmd/builtins.c
+++ b/programs/cmd/builtins.c
@@ -600,9 +600,8 @@
* Push a directory onto the stack
*/
-void WCMD_pushd (void) {
+void WCMD_pushd (char *command) {
struct env_stack *curdir;
- BOOL status;
WCHAR *thisdir;
curdir = LocalAlloc (LMEM_FIXED, sizeof (struct env_stack));
@@ -615,9 +614,9 @@
}
GetCurrentDirectoryW (1024, thisdir);
- status = SetCurrentDirectoryA (param1);
- if (!status) {
- WCMD_print_error ();
+ errorlevel = 0;
+ WCMD_setshow_default(command);
+ if (errorlevel) {
LocalFree(curdir);
LocalFree(thisdir);
return;
diff --git a/programs/cmd/wcmd.h b/programs/cmd/wcmd.h
index af5b247..53f163c 100644
--- a/programs/cmd/wcmd.h
+++ b/programs/cmd/wcmd.h
@@ -55,7 +55,7 @@
void WCMD_popd (void);
void WCMD_print_error (void);
void WCMD_process_command (char *command);
-void WCMD_pushd (void);
+void WCMD_pushd (char *);
int WCMD_read_console (char *string, int str_len);
void WCMD_remove_dir (char *command);
void WCMD_rename (void);
diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c
index 8fc23d6..1a093fa 100644
--- a/programs/cmd/wcmdmain.c
+++ b/programs/cmd/wcmdmain.c
@@ -640,7 +640,7 @@
WCMD_volume (0, p);
break;
case WCMD_PUSHD:
- WCMD_pushd();
+ WCMD_pushd(p);
break;
case WCMD_POPD:
WCMD_popd();