diff options
author | Kenichi Handa <handa@m17n.org> | 1997-07-07 00:59:44 +0000 |
---|---|---|
committer | Kenichi Handa <handa@m17n.org> | 1997-07-07 00:59:44 +0000 |
commit | beacaab334c21bbf0e15ccd8af4e870414c88ee5 (patch) | |
tree | ca82e1b8ef0b4865368be3cfc0b227149e50c2d1 /src/callproc.c | |
parent | 9ce27fde6aa0eb078153dd5ac37992bf1722a669 (diff) | |
download | emacs-beacaab334c21bbf0e15ccd8af4e870414c88ee5.tar.gz |
(Fcall_process): If enable-multibyte-characters is
nil, do not encode arguments for process, and decode output of
process by emacs-mule.
(Fcall_process_region): If enable-multibyte-characters is nil, do
not encode text to be given to process, and decode output of
process by emacs-mule.
Diffstat (limited to 'src/callproc.c')
-rw-r--r-- | src/callproc.c | 76 |
1 files changed, 52 insertions, 24 deletions
diff --git a/src/callproc.c b/src/callproc.c index 14a439bc444..d463f099b26 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -245,7 +245,11 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you quit again.") /* If arguments are supplied, we may have to encode them. */ if (nargs >= 5) { - if (NILP (val = Vcoding_system_for_write)) + if (!NILP (Vcoding_system_for_write)) + val = Vcoding_system_for_write; + else if (NILP (current_buffer->enable_multibyte_characters)) + val = Qnil; + else { args2 = (Lisp_Object *) alloca ((nargs + 1) * sizeof *args2); args2[0] = Qcall_process; @@ -255,6 +259,8 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you quit again.") val = XCONS (coding_systems)->cdr; else if (CONSP (Vdefault_process_coding_system)) val = XCONS (Vdefault_process_coding_system)->cdr; + else + val = Qnil; } setup_coding_system (Fcheck_coding_system (val), &argument_coding); } @@ -266,7 +272,12 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you quit again.") setup_coding_system (Qnil, &process_coding); else if (!INTEGERP (args[2])) { - if (NILP (val = Vcoding_system_for_read)) + val = Qnil; + if (!NILP (Vcoding_system_for_read)) + val = Vcoding_system_for_read; + else if (NILP (current_buffer->enable_multibyte_characters)) + val = Qemacs_mule; + else { if (!EQ (coding_systems, Qt)) { @@ -280,6 +291,8 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you quit again.") val = XCONS (coding_systems)->car; else if (CONSP (Vdefault_process_coding_system)) val = XCONS (Vdefault_process_coding_system)->car; + else + val = Qnil; } setup_coding_system (Fcheck_coding_system (val), &process_coding); } @@ -781,17 +794,25 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you quit again.") val = Qnil; else #endif - if (NILP (val = Vcoding_system_for_write)) - { - args2 = (Lisp_Object *) alloca ((nargs + 1) * sizeof *args2); - args2[0] = Qcall_process_region; - for (i = 0; i < nargs; i++) args2[i + 1] = args[i]; - coding_systems = Ffind_operation_coding_system (nargs + 1, args2); - if (CONSP (coding_systems)) - val = XCONS (coding_systems)->cdr; - else if (CONSP (Vdefault_process_coding_system)) - val = XCONS (Vdefault_process_coding_system)->car; - } + { + if (!NILP (Vcoding_system_for_write)) + val = Vcoding_system_for_write; + else if (NILP (current_buffer->enable_multibyte_characters)) + val = Qnil; + else + { + args2 = (Lisp_Object *) alloca ((nargs + 1) * sizeof *args2); + args2[0] = Qcall_process_region; + for (i = 0; i < nargs; i++) args2[i + 1] = args[i]; + coding_systems = Ffind_operation_coding_system (nargs + 1, args2); + if (CONSP (coding_systems)) + val = XCONS (coding_systems)->cdr; + else if (CONSP (Vdefault_process_coding_system)) + val = XCONS (Vdefault_process_coding_system)->car; + else + val = Qnil; + } + } specbind (intern ("coding-system-for-write"), val); Fwrite_region (start, end, filename_string, Qnil, Qlambda, Qnil); @@ -800,17 +821,24 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you quit again.") val = Qnil; else #endif - if (NILP (val = Vcoding_system_for_read)) - { - if (EQ (coding_systems, Qt)) - { - args2 = (Lisp_Object *) alloca ((nargs + 1) * sizeof *args2); - args2[0] = Qcall_process_region; - for (i = 0; i < nargs; i++) args2[i + 1] = args[i]; - coding_systems = Ffind_operation_coding_system (nargs + 1, args2); - } - val = CONSP (coding_systems) ? XCONS (coding_systems)->car : Qnil; - } + { + if (!NILP (Vcoding_system_for_read)) + val = Vcoding_system_for_read; + else if (NILP (current_buffer->enable_multibyte_characters)) + val = Qemacs_mule; + else + { + if (EQ (coding_systems, Qt)) + { + args2 = (Lisp_Object *) alloca ((nargs + 1) * sizeof *args2); + args2[0] = Qcall_process_region; + for (i = 0; i < nargs; i++) args2[i + 1] = args[i]; + coding_systems = Ffind_operation_coding_system (nargs + 1, + args2); + } + val = CONSP (coding_systems) ? XCONS (coding_systems)->car : Qnil; + } + } specbind (intern ("coding-system-for-read"), val); record_unwind_protect (delete_temp_file, filename_string); |