diff src/callproc.c @ 90288:7432ca837c8d

Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-9 Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 16-33) - Update from CVS - Install ERC. - Fix ERC compiler warnings. - Use utf-8 encoding in ERC ChangeLogs. - Merge ERC-related Viper hacks into Viper. - Merge from erc--main--0 - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 8-13) - Merge from emacs--devo--0 - Update from CVS
author Miles Bader <miles@gnu.org>
date Wed, 01 Feb 2006 10:07:17 +0000
parents 7beb78bc1f8e ee72dfb5a3cd
children c5406394f567
line wrap: on
line diff
--- a/src/callproc.c	Thu Jan 26 02:23:05 2006 +0000
+++ b/src/callproc.c	Wed Feb 01 10:07:17 2006 +0000
@@ -355,11 +355,11 @@
      protected by the caller, so all we really have to worry about is
      buffer.  */
   {
-    struct gcpro gcpro1, gcpro2, gcpro3;
+    struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
 
     current_dir = current_buffer->directory;
 
-    GCPRO3 (infile, buffer, current_dir);
+    GCPRO4 (infile, buffer, current_dir, error_file);
 
     current_dir
       = expand_and_dir_to_file (Funhandled_file_name_directory (current_dir),
@@ -368,6 +368,12 @@
       report_file_error ("Setting current directory",
 			 Fcons (current_buffer->directory, Qnil));
 
+    if (STRING_MULTIBYTE (infile))
+      infile = ENCODE_FILE (infile);
+    if (STRING_MULTIBYTE (current_dir))
+      current_dir = ENCODE_FILE (current_dir);
+    if (STRINGP (error_file) && STRING_MULTIBYTE (error_file))
+      error_file = ENCODE_FILE (error_file);
     UNGCPRO;
   }
 
@@ -376,6 +382,7 @@
   filefd = emacs_open (SDATA (infile), O_RDONLY, 0);
   if (filefd < 0)
     {
+      infile = DECODE_FILE (infile);
       report_file_error ("Opening process input file", Fcons (infile, Qnil));
     }
   /* Search for program; barf if not found.  */
@@ -529,14 +536,13 @@
 #ifdef MSDOS
 	unlink (tempfile);
 #endif
-	report_file_error ("Cannot redirect stderr",
-			   Fcons ((NILP (error_file)
-				   ? build_string (NULL_DEVICE) : error_file),
-				  Qnil));
+	if (NILP (error_file))
+	  error_file = build_string (NULL_DEVICE);
+	else if (STRINGP (error_file))
+	  error_file = DECODE_FILE (error_file);
+	report_file_error ("Cannot redirect stderr", Fcons (error_file, Qnil));
       }
 
-    current_dir = ENCODE_FILE (current_dir);
-
 #ifdef MAC_OS8
     {
       /* Call run_mac_command in sysdep.c here directly instead of doing