summaryrefslogtreecommitdiff
path: root/src/callproc.c
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>2006-01-26 00:39:15 +0000
committerKenichi Handa <handa@m17n.org>2006-01-26 00:39:15 +0000
commitfdecd66009f35dd6a8e96e592d0d5f12555a6ca0 (patch)
tree557b93576ec9db7ac7142b58c6ae9b7588f0382e /src/callproc.c
parentc6449765b81504b48108f186dccbbf1d51d7f777 (diff)
downloademacs-fdecd66009f35dd6a8e96e592d0d5f12555a6ca0.tar.gz
(Fcall_process): GCPRO error_file. Encode infile,
current_dir, and error_file. On reporting an error, decode them back.
Diffstat (limited to 'src/callproc.c')
-rw-r--r--src/callproc.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/callproc.c b/src/callproc.c
index b0fe16e70b8..3301d0849a0 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -355,11 +355,11 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
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 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
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 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
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. */
@@ -533,14 +540,13 @@ usage: (call-process PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS) */)
#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