+
+ /* get total size for env strings */
+ for (envlen = 0, i = 0; env[i] && *env[i]; i++)
+ envlen += strlen(env[i]) + 1;
+
+ winenv = alloca(envlen + 1); /* allocate new buffer */
+
+ /* copy env strings into new buffer */
+ for (temp = winenv, i = 0; env[i] && *env[i]; i++)
+ {
+ strcpy(temp, env[i]);
+ temp += strlen(temp) + 1;
+ }
+ *temp = 0; /* final nil string to terminate new env */
+
+ strcat (real_path, " ");
+ strcat (real_path, args);
+
+ ret = CreateProcess (0,
+ real_path,