Mercurial > emacs
comparison src/process.c @ 20433:a43789debf48
(read_process_output): Fix previous change, i.e, if
proc_encode_coding_system[p->outfd] is NULL, instead of allocating
`struct coding_system' for encoding, just skip setting up coding
system for encoding. Set Vlast_coding_system_used after some text
is read.
(send_process): Set Vlast_coding_system_used after deciding a
coding system to be used for encoding.
| author | Kenichi Handa <handa@m17n.org> |
|---|---|
| date | Tue, 09 Dec 1997 04:12:03 +0000 |
| parents | 7351dc9f1c94 |
| children | 5f17380c85f1 |
comparison
equal
deleted
inserted
replaced
| 20432:987ddd5cb6ee | 20433:a43789debf48 |
|---|---|
| 2805 | 2805 |
| 2806 /* Don't call setup_coding_system for | 2806 /* Don't call setup_coding_system for |
| 2807 proc_decode_coding_system[channel] here. It is done in | 2807 proc_decode_coding_system[channel] here. It is done in |
| 2808 detect_coding called via decode_coding above. */ | 2808 detect_coding called via decode_coding above. */ |
| 2809 | 2809 |
| 2810 /* If coding-system for encoding is not yet decided, we set it | 2810 /* If coding-system for encoding is not yet decided, we set |
| 2811 as the same as coding-system for decoding. */ | 2811 it as the same as coding-system for decoding. |
| 2812 if (NILP (p->encode_coding_system)) | 2812 |
| 2813 But, before doing that we must check if | |
| 2814 proc_encode_coding_system[p->outfd] surely points to a | |
| 2815 valid memory because p->outfd will be changed once EOF is | |
| 2816 sent to the process. */ | |
| 2817 if (NILP (p->encode_coding_system) | |
| 2818 && proc_encode_coding_system[p->outfd]) | |
| 2813 { | 2819 { |
| 2814 p->encode_coding_system = coding->symbol; | 2820 p->encode_coding_system = coding->symbol; |
| 2815 if (!proc_encode_coding_system[p->outfd]) | |
| 2816 proc_encode_coding_system[p->outfd] | |
| 2817 = ((struct coding_system *) | |
| 2818 xmalloc (sizeof (struct coding_system))); | |
| 2819 setup_coding_system (coding->symbol, | 2821 setup_coding_system (coding->symbol, |
| 2820 proc_encode_coding_system[p->outfd]); | 2822 proc_encode_coding_system[p->outfd]); |
| 2821 } | 2823 } |
| 2822 } | 2824 } |
| 2823 #ifdef VMS | 2825 #ifdef VMS |
| 2843 free (chars); | 2845 free (chars); |
| 2844 chars = XSTRING (p->decoding_buf)->data; | 2846 chars = XSTRING (p->decoding_buf)->data; |
| 2845 chars_in_decoding_buf = 1; | 2847 chars_in_decoding_buf = 1; |
| 2846 } | 2848 } |
| 2847 #endif | 2849 #endif |
| 2850 | |
| 2851 Vlast_coding_system_used = coding->symbol; | |
| 2848 | 2852 |
| 2849 outstream = p->filter; | 2853 outstream = p->filter; |
| 2850 if (!NILP (outstream)) | 2854 if (!NILP (outstream)) |
| 2851 { | 2855 { |
| 2852 /* We inhibit quit here instead of just catching it so that | 2856 /* We inhibit quit here instead of just catching it so that |
| 3045 error ("Process %s not running", procname); | 3049 error ("Process %s not running", procname); |
| 3046 if (XINT (XPROCESS (proc)->outfd) < 0) | 3050 if (XINT (XPROCESS (proc)->outfd) < 0) |
| 3047 error ("Output file descriptor of %s is closed", procname); | 3051 error ("Output file descriptor of %s is closed", procname); |
| 3048 | 3052 |
| 3049 coding = proc_encode_coding_system[XINT (XPROCESS (proc)->outfd)]; | 3053 coding = proc_encode_coding_system[XINT (XPROCESS (proc)->outfd)]; |
| 3054 Vlast_coding_system_used = coding->symbol; | |
| 3055 | |
| 3050 if (CODING_REQUIRE_ENCODING (coding)) | 3056 if (CODING_REQUIRE_ENCODING (coding)) |
| 3051 { | 3057 { |
| 3052 int require = encoding_buffer_size (coding, len); | 3058 int require = encoding_buffer_size (coding, len); |
| 3053 int offset, dummy; | 3059 int offset, dummy; |
| 3054 unsigned char *temp_buf = NULL; | 3060 unsigned char *temp_buf = NULL; |
