]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fcall_process) [MSDOS]:
authorMiles Bader <miles@gnu.org>
Sat, 6 Jul 1996 20:02:39 +0000 (20:02 +0000)
committerMiles Bader <miles@gnu.org>
Sat, 6 Jul 1996 20:02:39 +0000 (20:02 +0000)
  Initialize fd[0]; unlink `tempfile' in case of errors.
  Make the `tempfile' parameter passed to `report_file_error' be a Lisp string.
(Fcall_process):
  When fd_error is negative, don't close fd[0] if it's same as filefd.
  If stderr is redirected to NULL_DEVICE, make `report_file_error' print the
  name of device.  Make the arguments a cons cell.

src/callproc.c

index 58d8e8714f70aa3b0b8ddafd7bf513fd46cca52b..dc0c945925c3ae74aa7025af986b3abb3e3b386d 100644 (file)
@@ -350,10 +350,12 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you quit again.")
   if (outfilefd < 0)
     {
       close (filefd);
-      report_file_error ("Opening process output file", Fcons (tempfile, Qnil));
+      report_file_error ("Opening process output file",
+                        Fcons (build_string (tempfile), Qnil));
     }
+  fd[0] = filefd;
   fd[1] = outfilefd;
-#endif
+#endif /* MSDOS */
 
   if (INTEGERP (buffer))
     fd[1] = open (NULL_DEVICE, O_WRONLY), fd[0] = -1;
@@ -404,10 +406,17 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you quit again.")
     if (fd_error < 0)
       {
        close (filefd);
-       close (fd[0]);
+       if (fd[0] != filefd)
+         close (fd[0]);
        if (fd1 >= 0)
          close (fd1);
-       report_file_error ("Cannot open", error_file);
+#ifdef MSDOS
+       unlink (tempfile);
+#endif
+       report_file_error ("Cannot redirect stderr",
+                          Fcons ((NILP (error_file)
+                                  ? build_string (NULL_DEVICE) : error_file),
+                                 Qnil));
       }
 #ifdef MSDOS /* MW, July 1993 */
     /* ??? Someone who knows MSDOG needs to check whether this properly