Pass the environment for a child process through the server instead of
relying on the Unix environment.

diff --git a/server/protocol.def b/server/protocol.def
index 041dc6d..df2bf68 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -191,6 +191,7 @@
     obj_handle_t hstdout;      /* handle for stdout */
     obj_handle_t hstderr;      /* handle for stderr */
     VARARG(info,startup_info); /* startup information */
+    VARARG(env,unicode_str);   /* environment for new process */
 @REPLY
     obj_handle_t info;         /* new process info handle */
 @END
@@ -246,6 +247,7 @@
 @REQ(get_startup_info)
 @REPLY
     VARARG(info,startup_info); /* startup information */
+    VARARG(env,unicode_str);   /* environment */
 @END
 
 
diff --git a/server/trace.c b/server/trace.c
index 0f293e4..f9445bc 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -423,6 +423,9 @@
     fprintf( stderr, " hstderr=%p,", req->hstderr );
     fprintf( stderr, " info=" );
     dump_varargs_startup_info( cur_size );
+    fputc( ',', stderr );
+    fprintf( stderr, " env=" );
+    dump_varargs_unicode_str( cur_size );
 }
 
 static void dump_new_process_reply( const struct new_process_reply *req )
@@ -489,6 +492,9 @@
 {
     fprintf( stderr, " info=" );
     dump_varargs_startup_info( cur_size );
+    fputc( ',', stderr );
+    fprintf( stderr, " env=" );
+    dump_varargs_unicode_str( cur_size );
 }
 
 static void dump_init_process_done_request( const struct init_process_done_request *req )