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 )