summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog3
-rw-r--r--src/callproc.c42
2 files changed, 22 insertions, 23 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 912e9ae27cd..49c179aeb46 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,8 @@
2010-11-15 Dan Nicolaescu <dann@ics.uci.edu>
+ * callproc.c (child_setup): Reorder code to simplify #ifdefs.
+ No code changes.
+
* process.c: Include <sys/ioctl.h> unconditionally,
keyboard.c already does it.
diff --git a/src/callproc.c b/src/callproc.c
index 5941f8180ff..8838ccb7680 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -1154,6 +1154,14 @@ child_setup (int in, int out, int err, register char **new_argv, int set_pgrp, L
#ifdef WINDOWSNT
prepare_standard_handles (in, out, err, handles);
set_process_dir (SDATA (current_dir));
+ /* Spawn the child. (See ntproc.c:Spawnve). */
+ cpid = spawnve (_P_NOWAIT, new_argv[0], new_argv, env);
+ reset_standard_handles (in, out, err, handles);
+ if (cpid == -1)
+ /* An error occurred while trying to spawn the process. */
+ report_file_error ("Spawning child process", Qnil);
+ return cpid;
+
#else /* not WINDOWSNT */
/* Make sure that in, out, and err are not actually already in
descriptors zero, one, or two; this could happen if Emacs is
@@ -1192,34 +1200,15 @@ child_setup (int in, int out, int err, register char **new_argv, int set_pgrp, L
emacs_close (out);
if (err != in && err != out)
emacs_close (err);
-#endif /* not MSDOS */
-#endif /* not WINDOWSNT */
#if defined(USG)
#ifndef SETPGRP_RELEASES_CTTY
setpgrp (); /* No arguments but equivalent in this case */
#endif
-#else
+#else /* not USG */
setpgrp (pid, pid);
-#endif /* USG */
+#endif /* not USG */
-#ifdef MSDOS
- pid = run_msdos_command (new_argv, pwd_var + 4, in, out, err, env);
- xfree (pwd_var);
- if (pid == -1)
- /* An error occurred while trying to run the subprocess. */
- report_file_error ("Spawning child process", Qnil);
- return pid;
-#else /* not MSDOS */
-#ifdef WINDOWSNT
- /* Spawn the child. (See ntproc.c:Spawnve). */
- cpid = spawnve (_P_NOWAIT, new_argv[0], new_argv, env);
- reset_standard_handles (in, out, err, handles);
- if (cpid == -1)
- /* An error occurred while trying to spawn the process. */
- report_file_error ("Spawning child process", Qnil);
- return cpid;
-#else /* not WINDOWSNT */
/* setpgrp_of_tty is incorrect here; it uses input_fd. */
tcsetpgrp (0, pid);
@@ -1233,8 +1222,15 @@ child_setup (int in, int out, int err, register char **new_argv, int set_pgrp, L
emacs_write (1, new_argv[0], strlen (new_argv[0]));
emacs_write (1, "\n", 1);
_exit (1);
-#endif /* not WINDOWSNT */
-#endif /* not MSDOS */
+
+#else /* MSDOS */
+ pid = run_msdos_command (new_argv, pwd_var + 4, in, out, err, env);
+ xfree (pwd_var);
+ if (pid == -1)
+ /* An error occurred while trying to run the subprocess. */
+ report_file_error ("Spawning child process", Qnil);
+ return pid;
+#endif /* MSDOS */
}
#ifndef WINDOWSNT