diff options
| author | Robert Pluim | 2020-04-02 17:52:01 +0200 |
|---|---|---|
| committer | Robert Pluim | 2020-04-03 14:45:49 +0200 |
| commit | d08e81ce5a19a0394c2efbdfeb4ebb246d609635 (patch) | |
| tree | 765bef42ad5bf8278eebb654571f87cbfb4b352f /src/process.c | |
| parent | 463f635171683ae3b6907f156305f12fc58ca68e (diff) | |
| download | emacs-d08e81ce5a19a0394c2efbdfeb4ebb246d609635.tar.gz emacs-d08e81ce5a19a0394c2efbdfeb4ebb246d609635.zip | |
Make make-{network,serial}-process handle :coding nil consistently
The handling of :coding nil was different between
make-{network,serial}-process and make-{pipe}process. Now they all
handle :coding nil as if :coding had not been specified.
* process.c (Fmake_serial_process)
(set_network_socket_coding_system): Use plist-get to check if
:coding has been specified instead of plist-member, to ensure that
":coding nil" does not override coding-system-for-{read,write}.
* network-stream-tests.el (check-network-process-coding-system-bind)
(check-network-process-coding-system-no-override)
(check-network-process-coding-system-override): New tests.
* etc/NEWS: Describe change in make-network-process and
make-serial-process :coding behavior.
Diffstat (limited to 'src/process.c')
| -rw-r--r-- | src/process.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/src/process.c b/src/process.c index 07881d6c5d3..e6d18fbaad2 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -3188,14 +3188,12 @@ usage: (make-serial-process &rest ARGS) */) | |||
| 3188 | BUF_ZV_BYTE (XBUFFER (buffer))); | 3188 | BUF_ZV_BYTE (XBUFFER (buffer))); |
| 3189 | } | 3189 | } |
| 3190 | 3190 | ||
| 3191 | tem = Fplist_member (contact, QCcoding); | 3191 | tem = Fplist_get (contact, QCcoding); |
| 3192 | if (!NILP (tem) && (!CONSP (tem) || !CONSP (XCDR (tem)))) | ||
| 3193 | tem = Qnil; | ||
| 3194 | 3192 | ||
| 3195 | val = Qnil; | 3193 | val = Qnil; |
| 3196 | if (!NILP (tem)) | 3194 | if (!NILP (tem)) |
| 3197 | { | 3195 | { |
| 3198 | val = XCAR (XCDR (tem)); | 3196 | val = tem; |
| 3199 | if (CONSP (val)) | 3197 | if (CONSP (val)) |
| 3200 | val = XCAR (val); | 3198 | val = XCAR (val); |
| 3201 | } | 3199 | } |
| @@ -3209,7 +3207,7 @@ usage: (make-serial-process &rest ARGS) */) | |||
| 3209 | val = Qnil; | 3207 | val = Qnil; |
| 3210 | if (!NILP (tem)) | 3208 | if (!NILP (tem)) |
| 3211 | { | 3209 | { |
| 3212 | val = XCAR (XCDR (tem)); | 3210 | val = tem; |
| 3213 | if (CONSP (val)) | 3211 | if (CONSP (val)) |
| 3214 | val = XCDR (val); | 3212 | val = XCDR (val); |
| 3215 | } | 3213 | } |
| @@ -3244,16 +3242,14 @@ set_network_socket_coding_system (Lisp_Object proc, Lisp_Object host, | |||
| 3244 | Lisp_Object coding_systems = Qt; | 3242 | Lisp_Object coding_systems = Qt; |
| 3245 | Lisp_Object val; | 3243 | Lisp_Object val; |
| 3246 | 3244 | ||
| 3247 | tem = Fplist_member (contact, QCcoding); | 3245 | tem = Fplist_get (contact, QCcoding); |
| 3248 | if (!NILP (tem) && (!CONSP (tem) || !CONSP (XCDR (tem)))) | ||
| 3249 | tem = Qnil; /* No error message (too late!). */ | ||
| 3250 | 3246 | ||
| 3251 | /* Setup coding systems for communicating with the network stream. */ | 3247 | /* Setup coding systems for communicating with the network stream. */ |
| 3252 | /* Qt denotes we have not yet called Ffind_operation_coding_system. */ | 3248 | /* Qt denotes we have not yet called Ffind_operation_coding_system. */ |
| 3253 | 3249 | ||
| 3254 | if (!NILP (tem)) | 3250 | if (!NILP (tem)) |
| 3255 | { | 3251 | { |
| 3256 | val = XCAR (XCDR (tem)); | 3252 | val = tem; |
| 3257 | if (CONSP (val)) | 3253 | if (CONSP (val)) |
| 3258 | val = XCAR (val); | 3254 | val = XCAR (val); |
| 3259 | } | 3255 | } |
| @@ -3287,7 +3283,7 @@ set_network_socket_coding_system (Lisp_Object proc, Lisp_Object host, | |||
| 3287 | 3283 | ||
| 3288 | if (!NILP (tem)) | 3284 | if (!NILP (tem)) |
| 3289 | { | 3285 | { |
| 3290 | val = XCAR (XCDR (tem)); | 3286 | val = tem; |
| 3291 | if (CONSP (val)) | 3287 | if (CONSP (val)) |
| 3292 | val = XCDR (val); | 3288 | val = XCDR (val); |
| 3293 | } | 3289 | } |