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();