Transmit current directory settings to newly created processes.

diff --git a/scheduler/process.c b/scheduler/process.c
index 3334591..8aea56c 100644
--- a/scheduler/process.c
+++ b/scheduler/process.c
@@ -674,7 +674,8 @@
  *
  * Fork and exec a new Unix process, checking for errors.
  */
-static int fork_and_exec( const char *filename, char *cmdline, const char *env )
+static int fork_and_exec( const char *filename, char *cmdline,
+                          const char *env, const char *newdir )
 {
     int fd[2];
     int pid, err;
@@ -690,6 +691,9 @@
         char **argv = build_argv( cmdline, filename ? 0 : 2 );
         char **envp = build_envp( env );
         close( fd[0] );
+
+	if (newdir) chdir(newdir);
+
         if (argv && envp)
         {
             if (!filename)
@@ -725,10 +729,11 @@
 BOOL PROCESS_Create( HFILE hFile, LPCSTR filename, LPSTR cmd_line, LPCSTR env, 
                      LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
                      BOOL inherit, DWORD flags, LPSTARTUPINFOA startup,
-                     LPPROCESS_INFORMATION info )
+                     LPPROCESS_INFORMATION info, LPCSTR lpCurrentDirectory )
 {
     int pid;
     const char *unixfilename = NULL;
+    const char *unixdir = NULL;
     DOS_FULL_NAME full_name;
     HANDLE load_done_evt = -1;
     struct new_process_request *req = get_req_buffer();
@@ -757,6 +762,17 @@
     req->cmd_show = startup->wShowWindow;
     req->alloc_fd = 0;
 
+    if (lpCurrentDirectory) {
+        if (DOSFS_GetFullName( lpCurrentDirectory, TRUE, &full_name ))
+	    unixdir = full_name.long_name;
+    } else {
+	CHAR	buf[260];
+	if (GetCurrentDirectoryA(sizeof(buf),buf)) {
+	    if (DOSFS_GetFullName( buf, TRUE, &full_name ))
+		unixdir = full_name.long_name;
+	}
+    }
+
     if (hFile == -1)  /* unix process */
     {
         unixfilename = filename;
@@ -772,7 +788,7 @@
 
     /* fork and execute */
 
-    pid = fork_and_exec( unixfilename, cmd_line, env ? env : GetEnvironmentStringsA() );
+    pid = fork_and_exec( unixfilename, cmd_line, env ? env : GetEnvironmentStringsA(), unixdir );
 
     wait_req->cancel   = (pid == -1);
     wait_req->pinherit = (psa && (psa->nLength >= sizeof(*psa)) && psa->bInheritHandle);