Allow the EMX build to use output_sync.
authorPavel Fedin <p.fedin@samsung.com>
Fri, 17 Jan 2014 07:51:28 +0000 (09:51 +0200)
committerEli Zaretskii <eliz@gnu.org>
Fri, 17 Jan 2014 07:51:28 +0000 (09:51 +0200)
job.c (start_job_command): Move the child output diversion out
of non-EMX branch.
[__EMX__]: Don't use fixed FD_STDOUT and FD_STDERR in the call to
child_execute_job.

Copyright-paperwork-exempt: yes

job.c

diff --git a/job.c b/job.c
index d3d63b8cca873cba428ade023ab1e3cb6f850630..0b34e17cbedfc0d2eaeee69f23ab3190e053871d 100644 (file)
--- a/job.c
+++ b/job.c
@@ -1145,6 +1145,8 @@ start_job_command (struct child *child)
   char *argv;
 #else
   char **argv;
+  int outfd = FD_STDOUT;
+  int errfd = FD_STDERR;
 #endif
 
   /* If we have a completely empty commandset, stop now.  */
@@ -1434,6 +1436,16 @@ start_job_command (struct child *child)
 
       parent_environ = environ;
 
+#ifndef NO_OUTPUT_SYNC
+      /* Divert child output if output_sync in use.  */
+      if (child->output.syncout)
+        {
+          if (child->output.out >= 0)
+            outfd = child->output.out;
+          if (child->output.err >= 0)
+            errfd = child->output.err;
+        }
+#endif
 # ifdef __EMX__
       /* If we aren't running a recursive command and we have a jobserver
          pipe, close it before exec'ing.  */
@@ -1447,7 +1459,7 @@ start_job_command (struct child *child)
 
       /* Never use fork()/exec() here! Use spawn() instead in exec_command() */
       child->pid = child_execute_job (child->good_stdin ? FD_STDIN : bad_stdin,
-                                      FD_STDOUT, FD_STDERR,
+                                      outfd, errfd,
                                       argv, child->environment);
       if (child->pid < 0)
         {
@@ -1472,9 +1484,6 @@ start_job_command (struct child *child)
       environ = parent_environ; /* Restore value child may have clobbered.  */
       if (child->pid == 0)
         {
-          int outfd = FD_STDOUT;
-          int errfd = FD_STDERR;
-
           /* We are the child side.  */
           unblock_sigs ();
 
@@ -1493,16 +1502,6 @@ start_job_command (struct child *child)
           if (stack_limit.rlim_cur)
             setrlimit (RLIMIT_STACK, &stack_limit);
 #endif
-
-          /* Divert child output if output_sync in use.  */
-          if (child->output.syncout)
-            {
-              if (child->output.out >= 0)
-                outfd = child->output.out;
-              if (child->output.err >= 0)
-                errfd = child->output.err;
-            }
-
           child_execute_job (child->good_stdin ? FD_STDIN : bad_stdin,
                              outfd, errfd, argv, child->environment);
         }