Rewrote Unix process launching to allow passing startup information to
Winelib apps. Improved handling of execve() failures.

diff --git a/include/server.h b/include/server.h
index 72b2442..2e5f7f1 100644
--- a/include/server.h
+++ b/include/server.h
@@ -104,8 +104,6 @@
 /* Create a new process from the context of the parent */
 struct new_process_request
 {
-    IN  int          pinherit;     /* process handle inherit flag */
-    IN  int          tinherit;     /* thread handle inherit flag */
     IN  int          inherit_all;  /* inherit all handles from parent */
     IN  int          create_flags; /* creation flags */
     IN  int          start_flags;  /* flags from startup info */
@@ -114,13 +112,22 @@
     IN  int          hstdout;      /* handle for stdout */
     IN  int          hstderr;      /* handle for stderr */
     IN  int          cmd_show;     /* main window show mode */
-    IN  void*        env_ptr;      /* pointer to environment (FIXME: hack) */
+    IN  int          alloc_fd;     /* create the fd pair right now? */
+};
+
+
+/* Wait for the new process to start */
+struct wait_process_request
+{
+    IN  int          pinherit;     /* process handle inherit flag */
+    IN  int          tinherit;     /* thread handle inherit flag */
+    IN  int          timeout;      /* wait timeout */
+    IN  int          cancel;       /* cancel the process creation? */
     OUT void*        pid;          /* process id */
     OUT int          phandle;      /* process handle (in the current process) */
     OUT void*        tid;          /* thread id */
     OUT int          thandle;      /* thread handle (in the current process) */
     OUT int          event;        /* event handle to signal startup */
-    IN  char         cmdline[1];   /* command line */
 };
 
 
@@ -146,14 +153,13 @@
 {
     IN  void*        ldt_copy;     /* addr of LDT copy */
     IN  void*        ldt_flags;    /* addr of LDT flags */
+    IN  int          ppid;         /* parent Unix pid */
     OUT int          start_flags;  /* flags from startup info */
     OUT int          exe_file;     /* file handle for main exe */
     OUT int          hstdin;       /* handle for stdin */
     OUT int          hstdout;      /* handle for stdout */
     OUT int          hstderr;      /* handle for stderr */
     OUT int          cmd_show;     /* main window show mode */
-    OUT void*        env_ptr;      /* pointer to environment (FIXME: hack) */
-    OUT char         cmdline[1];   /* command line */
 };
 
 
@@ -1142,6 +1148,7 @@
 enum request
 {
     REQ_NEW_PROCESS,
+    REQ_WAIT_PROCESS,
     REQ_NEW_THREAD,
     REQ_BOOT_DONE,
     REQ_INIT_PROCESS,
@@ -1246,7 +1253,7 @@
     REQ_NB_REQUESTS
 };
 
-#define SERVER_PROTOCOL_VERSION 9
+#define SERVER_PROTOCOL_VERSION 10
 
 /* ### make_requests end ### */
 /* Everything above this line is generated automatically by tools/make_requests */