* Re: bug#40248: 27.0.90; Failure open .authinfo.gpg from Gnus
[not found] ` <83imin5l0w.fsf@gnu.org>
@ 2020-03-31 9:20 ` Robert Pluim
2020-03-31 9:53 ` Andreas Schwab
0 siblings, 1 reply; 12+ messages in thread
From: Robert Pluim @ 2020-03-31 9:20 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Lars Ingebrigtsen, emacs-devel
(dropping the bug, redirecting to emacs-devel)
>>>>> On Sun, 29 Mar 2020 16:49:03 +0300, Eli Zaretskii <eliz@gnu.org> said:
>> Yes, that's unfortunate -- the "bind variables as a way of passing in
>> parameters" thing that Emacs does a lot is a really bad one. I think
>> the fix here would be to change open-network-stream, at least, to have a
>> :coding parameter (and pass it on).
Eli> Yes, let's do that on master.
Having resisted the strong urge to rip out the gnutls-cli support in
open-network-stream, this turned out to be surprisingly invasive. It
works for nnimap with Gnus for me when passing :coding 'binary instead
of binding coding-system-for-{read-write}, but more testing is
definitely required.
diff --git c/doc/lispref/processes.texi i/doc/lispref/processes.texi
index 4a4f51474c..7d9ca46d94 100644
--- c/doc/lispref/processes.texi
+++ i/doc/lispref/processes.texi
@@ -2462,6 +2462,12 @@ Network
@item :nowait @var{boolean}
If non-@code{nil}, try to make an asynchronous connection.
+@item :coding @var{coding}
+Use this to set the coding systems used by the network process, in
+preference to binding @code{coding-system-for-read} or
+@code{coding-system-for-write}. @xref{Network Processes} for
+details.
+
@item :type @var{type}
The type of connection. Options are:
diff --git c/etc/NEWS i/etc/NEWS
index 8bbe2aee0b..14bdae3ea7 100644
--- c/etc/NEWS
+++ i/etc/NEWS
@@ -274,6 +274,11 @@ optional argument specifying whether to follow symbolic links.
** 'parse-time-string' can now parse ISO 8601 format strings,
such as "2020-01-15T16:12:21-08:00".
+** 'open-network-stream' now accepts a :coding argument.
+This allows specifying the coding systems used by a network process
+for encoding and decoding without having to bind
+coding-system-for-{read,write} or call 'set-process-coding-system'.
+
\f
* Changes in Emacs 28.1 on Non-Free Operating Systems
diff --git c/lisp/net/gnutls.el i/lisp/net/gnutls.el
index 459156e6d2..171a829f5b 100644
--- c/lisp/net/gnutls.el
+++ i/lisp/net/gnutls.el
@@ -169,8 +169,9 @@ open-gnutls-stream
Fourth arg SERVICE is the name of the service desired, or an integer
specifying a port number to connect to.
Fifth arg PARAMETERS is an optional list of keyword/value pairs.
-Only :client-certificate and :nowait keywords are recognized, and
-have the same meaning as for `open-network-stream'.
+Only :client-certificate, :nowait, and :coding keywords are
+recognized, and have the same meaning as for
+`open-network-stream'.
For historical reasons PARAMETERS can also be a symbol, which is
interpreted the same as passing a list containing :nowait and the
value of that symbol.
@@ -199,16 +200,19 @@ open-gnutls-stream
(cert (network-stream-certificate host service parameters))
(keylist (and cert (list cert)))
(nowait (plist-get parameters :nowait))
- (process (open-network-stream
- name buffer host service
- :nowait nowait
- :tls-parameters
- (and nowait
- (cons 'gnutls-x509pki
- (gnutls-boot-parameters
- :type 'gnutls-x509pki
- :keylist keylist
- :hostname (puny-encode-domain host)))))))
+ (coding-p (plist-member parameters :coding))
+ (coding-val (plist-get parameters :coding))
+ (args (append (list name buffer host service
+ :nowait nowait
+ :tls-parameters
+ (and nowait
+ (cons 'gnutls-x509pki
+ (gnutls-boot-parameters
+ :type 'gnutls-x509pki
+ :keylist keylist
+ :hostname (puny-encode-domain host)))))
+ (when coding-p (list :coding coding-val))))
+ (process (apply #'open-network-stream args)))
(if nowait
process
(gnutls-negotiate :process process
diff --git c/lisp/net/network-stream.el i/lisp/net/network-stream.el
index e99d7a372c..d7d0aedada 100644
--- c/lisp/net/network-stream.el
+++ i/lisp/net/network-stream.el
@@ -113,6 +113,10 @@ open-network-stream
`ssl' -- Equivalent to `tls'.
`shell' -- A shell connection.
+:coding is a symbol or a cons used to specify the coding systems
+used to decode and encode the data which the process reads and
+writes. See `make-network-process' for details.
+
:return-list specifies this function's return value.
If omitted or nil, return a process object. A non-nil means to
return (PROC . PROPS), where PROC is a process object and PROPS
@@ -178,18 +182,21 @@ open-network-stream
(unless (featurep 'make-network-process)
(error "Emacs was compiled without networking support"))
(let ((type (plist-get parameters :type))
- (return-list (plist-get parameters :return-list)))
+ (return-list (plist-get parameters :return-list))
+ (coding-p (plist-member parameters :coding)))
(if (and (not return-list)
(or (eq type 'plain)
(and (memq type '(nil network))
(not (and (plist-get parameters :success)
(plist-get parameters :capability-command))))))
;; The simplest case: wrapper around `make-network-process'.
- (make-network-process :name name :buffer buffer
- :host (puny-encode-domain host) :service service
- :nowait (plist-get parameters :nowait)
- :tls-parameters
- (plist-get parameters :tls-parameters))
+ (let ((args (append (list :name name :buffer buffer
+ :host (puny-encode-domain host) :service service
+ :nowait (plist-get parameters :nowait)
+ :tls-parameters
+ (plist-get parameters :tls-parameters))
+ (when coding-p (list :coding (plist-get parameters :coding))))))
+ (apply #'make-network-process args))
(let ((work-buffer (or buffer
(generate-new-buffer " *stream buffer*")))
(fun (cond ((and (eq type 'plain)
@@ -245,11 +252,15 @@ 'open-protocol-stream
"26.1")
(defun network-stream-open-plain (name buffer host service parameters)
- (let ((start (with-current-buffer buffer (point)))
- (stream (make-network-process :name name :buffer buffer
- :host (puny-encode-domain host)
- :service service
- :nowait (plist-get parameters :nowait))))
+ (let* ((start (with-current-buffer buffer (point)))
+ (coding-p (plist-member parameters :coding))
+ (coding-val (plist-get parameters :coding))
+ (args (append (list :name name :buffer buffer
+ :host (puny-encode-domain host)
+ :service service
+ :nowait (plist-get parameters :nowait))
+ (when coding-p (list :coding coding-val))))
+ (stream (apply #'make-network-process args)))
(when (plist-get parameters :warn-unless-encrypted)
(setq stream (nsm-verify-connection stream host service nil t)))
(list stream
@@ -267,10 +278,14 @@ network-stream-open-starttls
(eoc (plist-get parameters :end-of-command))
(eo-capa (or (plist-get parameters :end-of-capability)
eoc))
+ (coding-p (plist-member parameters :coding))
+ (coding-val (plist-get parameters :coding))
+ (args (append (list :name name :buffer buffer
+ :host (puny-encode-domain host)
+ :service service)
+ (when coding-p (list :coding coding-val))))
;; Return (STREAM GREETING CAPABILITIES RESULTING-TYPE)
- (stream (make-network-process :name name :buffer buffer
- :host (puny-encode-domain host)
- :service service))
+ (stream (apply #'make-network-process args))
(greeting (and (not (plist-get parameters :nogreeting))
(network-stream-get-response stream start eoc)))
(capabilities (network-stream-command stream capability-command
@@ -348,9 +363,7 @@ network-stream-open-starttls
;; isn't demanded, reopen an unencrypted connection.
(unless require-tls
(setq stream
- (make-network-process :name name :buffer buffer
- :host (puny-encode-domain host)
- :service service))
+ (apply #'make-network-process args))
(network-stream-get-response stream start eoc)))
(unless (process-live-p stream)
(error "Unable to negotiate a TLS connection with %s/%s"
@@ -453,6 +466,8 @@ network-stream-open-shell
(let* ((capability-command (plist-get parameters :capability-command))
(eoc (plist-get parameters :end-of-command))
(start (with-current-buffer buffer (point)))
+ (coding-p (plist-member parameters :coding))
+ (coding-val (plist-get parameters :coding))
(stream (let ((process-connection-type nil))
(start-process name buffer shell-file-name
shell-command-switch
@@ -461,6 +476,13 @@ network-stream-open-shell
(format-spec-make
?s host
?p service))))))
+ (when coding-p (if (consp coding-val)
+ (set-process-coding-system stream
+ (car coding-val)
+ (cdr coding-val))
+ (set-process-coding-system stream
+ coding-val
+ coding-val)))
(list stream
(network-stream-get-response stream start eoc)
(network-stream-command stream capability-command
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: bug#40248: 27.0.90; Failure open .authinfo.gpg from Gnus
2020-03-31 9:20 ` bug#40248: 27.0.90; Failure open .authinfo.gpg from Gnus Robert Pluim
@ 2020-03-31 9:53 ` Andreas Schwab
2020-03-31 10:16 ` Robert Pluim
0 siblings, 1 reply; 12+ messages in thread
From: Andreas Schwab @ 2020-03-31 9:53 UTC (permalink / raw)
To: Robert Pluim; +Cc: Eli Zaretskii, Lars Ingebrigtsen, emacs-devel
On Mär 31 2020, Robert Pluim wrote:
> @@ -245,11 +252,15 @@ 'open-protocol-stream
> "26.1")
>
> (defun network-stream-open-plain (name buffer host service parameters)
> - (let ((start (with-current-buffer buffer (point)))
> - (stream (make-network-process :name name :buffer buffer
> - :host (puny-encode-domain host)
> - :service service
> - :nowait (plist-get parameters :nowait))))
> + (let* ((start (with-current-buffer buffer (point)))
> + (coding-p (plist-member parameters :coding))
> + (coding-val (plist-get parameters :coding))
> + (args (append (list :name name :buffer buffer
> + :host (puny-encode-domain host)
> + :service service
> + :nowait (plist-get parameters :nowait))
> + (when coding-p (list :coding coding-val))))
> + (stream (apply #'make-network-process args)))
You don't need to use apply. Since :coding nil is the same as the
default, you can just pass `:coding (plist-get parameters :coding)'
unconditionally.
Andreas.
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
"And now for something completely different."
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: bug#40248: 27.0.90; Failure open .authinfo.gpg from Gnus
2020-03-31 9:53 ` Andreas Schwab
@ 2020-03-31 10:16 ` Robert Pluim
2020-03-31 10:31 ` Andreas Schwab
0 siblings, 1 reply; 12+ messages in thread
From: Robert Pluim @ 2020-03-31 10:16 UTC (permalink / raw)
To: Andreas Schwab; +Cc: Eli Zaretskii, Lars Ingebrigtsen, emacs-devel
>>>>> On Tue, 31 Mar 2020 11:53:36 +0200, Andreas Schwab <schwab@linux-m68k.org> said:
Andreas> On Mär 31 2020, Robert Pluim wrote:
>> @@ -245,11 +252,15 @@ 'open-protocol-stream
>> "26.1")
>>
>> (defun network-stream-open-plain (name buffer host service parameters)
>> - (let ((start (with-current-buffer buffer (point)))
>> - (stream (make-network-process :name name :buffer buffer
>> - :host (puny-encode-domain host)
>> - :service service
>> - :nowait (plist-get parameters :nowait))))
>> + (let* ((start (with-current-buffer buffer (point)))
>> + (coding-p (plist-member parameters :coding))
>> + (coding-val (plist-get parameters :coding))
>> + (args (append (list :name name :buffer buffer
>> + :host (puny-encode-domain host)
>> + :service service
>> + :nowait (plist-get parameters :nowait))
>> + (when coding-p (list :coding coding-val))))
>> + (stream (apply #'make-network-process args)))
Andreas> You don't need to use apply. Since :coding nil is the same as the
Andreas> default, you can just pass `:coding (plist-get parameters :coding)'
Andreas> unconditionally.
My reading of set_network_socket_coding_system is that having a plist
in make-network-process with :coding nil overrides a non-nil
coding-system-for-{read-write}, which I donʼt think we want.
Robert
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: bug#40248: 27.0.90; Failure open .authinfo.gpg from Gnus
2020-03-31 10:16 ` Robert Pluim
@ 2020-03-31 10:31 ` Andreas Schwab
2020-03-31 11:09 ` Robert Pluim
0 siblings, 1 reply; 12+ messages in thread
From: Andreas Schwab @ 2020-03-31 10:31 UTC (permalink / raw)
To: Robert Pluim; +Cc: Eli Zaretskii, Lars Ingebrigtsen, emacs-devel
On Mär 31 2020, Robert Pluim wrote:
> My reading of set_network_socket_coding_system is that having a plist
> in make-network-process with :coding nil overrides a non-nil
> coding-system-for-{read-write}, which I donʼt think we want.
You are right, make-network-process and make-serial-process handle that
differently than make-process and make-pipe-process. I think this is a
bug, they should all handle :coding nil the same (same as absence).
But in any case, your patch can be simplyfied:
--- a/lisp/net/network-stream.el
+++ b/lisp/net/network-stream.el
@@ -246,10 +246,12 @@ gnutls-boot (as returned by `gnutls-boot-parameters')."
(defun network-stream-open-plain (name buffer host service parameters)
(let ((start (with-current-buffer buffer (point)))
- (stream (make-network-process :name name :buffer buffer
- :host (puny-encode-domain host)
- :service service
- :nowait (plist-get parameters :nowait))))
+ (stream (apply #'make-network-process :name name :buffer buffer
+ :host (puny-encode-domain host)
+ :service service
+ :nowait (plist-get parameters :nowait)
+ (if (plist-member parameters :coding)
+ (list :coding (plist-get parameters :coding))))))
(when (plist-get parameters :warn-unless-encrypted)
(setq stream (nsm-verify-connection stream host service nil t)))
(list stream
Andreas.
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
"And now for something completely different."
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: bug#40248: 27.0.90; Failure open .authinfo.gpg from Gnus
2020-03-31 10:31 ` Andreas Schwab
@ 2020-03-31 11:09 ` Robert Pluim
2020-03-31 16:13 ` Robert Pluim
0 siblings, 1 reply; 12+ messages in thread
From: Robert Pluim @ 2020-03-31 11:09 UTC (permalink / raw)
To: Andreas Schwab; +Cc: Eli Zaretskii, Lars Ingebrigtsen, emacs-devel
>>>>> On Tue, 31 Mar 2020 12:31:04 +0200, Andreas Schwab <schwab@linux-m68k.org> said:
Andreas> On Mär 31 2020, Robert Pluim wrote:
>> My reading of set_network_socket_coding_system is that having a plist
>> in make-network-process with :coding nil overrides a non-nil
>> coding-system-for-{read-write}, which I donʼt think we want.
Andreas> You are right, make-network-process and make-serial-process handle that
Andreas> differently than make-process and make-pipe-process. I think this is a
Andreas> bug, they should all handle :coding nil the same (same as absence).
I think I agree with that. Basically this, initially (and the same for
make-serial-process)
diff --git a/src/process.c b/src/process.c
index e18a5aa538..b00d8e1cfe 100644
--- a/src/process.c
+++ b/src/process.c
@@ -3261,9 +3262,7 @@ set_network_socket_coding_system (Lisp_Object proc, Lisp_Object host,
Lisp_Object coding_systems = Qt;
Lisp_Object val;
- tem = Fplist_member (contact, QCcoding);
- if (!NILP (tem) && (!CONSP (tem) || !CONSP (XCDR (tem))))
- tem = Qnil; /* No error message (too late!). */
+ tem = Fplist_get (contact, QCcoding);
/* Setup coding systems for communicating with the network stream. */
/* Qt denotes we have not yet called Ffind_operation_coding_system. */
Andreas> But in any case, your patch can be simplyfied:
Andreas> --- a/lisp/net/network-stream.el
Andreas> +++ b/lisp/net/network-stream.el
Andreas> @@ -246,10 +246,12 @@ gnutls-boot (as returned by `gnutls-boot-parameters')."
Andreas> (defun network-stream-open-plain (name buffer host service parameters)
Andreas> (let ((start (with-current-buffer buffer (point)))
Andreas> - (stream (make-network-process :name name :buffer buffer
Andreas> - :host (puny-encode-domain host)
Andreas> - :service service
Andreas> - :nowait (plist-get parameters :nowait))))
Andreas> + (stream (apply #'make-network-process :name name :buffer buffer
Andreas> + :host (puny-encode-domain host)
Andreas> + :service service
Andreas> + :nowait (plist-get parameters :nowait)
Andreas> + (if (plist-member parameters :coding)
Andreas> + (list :coding (plist-get parameters :coding))))))
Andreas> (when (plist-get parameters :warn-unless-encrypted)
Andreas> (setq stream (nsm-verify-connection stream host service nil t)))
Andreas> (list stream
Sure.
Robert
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: bug#40248: 27.0.90; Failure open .authinfo.gpg from Gnus
2020-03-31 11:09 ` Robert Pluim
@ 2020-03-31 16:13 ` Robert Pluim
2020-03-31 17:59 ` Eli Zaretskii
2020-04-02 11:10 ` Lars Ingebrigtsen
0 siblings, 2 replies; 12+ messages in thread
From: Robert Pluim @ 2020-03-31 16:13 UTC (permalink / raw)
To: Andreas Schwab; +Cc: Eli Zaretskii, Lars Ingebrigtsen, emacs-devel
>>>>> On Tue, 31 Mar 2020 13:09:14 +0200, Robert Pluim <rpluim@gmail.com> said:
>>>>> On Tue, 31 Mar 2020 12:31:04 +0200, Andreas Schwab <schwab@linux-m68k.org> said:
Andreas> On Mär 31 2020, Robert Pluim wrote:
>>> My reading of set_network_socket_coding_system is that having a plist
>>> in make-network-process with :coding nil overrides a non-nil
>>> coding-system-for-{read-write}, which I donʼt think we want.
Andreas> You are right, make-network-process and make-serial-process handle that
Andreas> differently than make-process and make-pipe-process. I think this is a
Andreas> bug, they should all handle :coding nil the same (same as absence).
Robert> I think I agree with that. Basically this, initially (and the same for
Robert> make-serial-process)
Now that Iʼve actually tested it, the change looks like this, making
make-network-process and make-serial process behave the same as
make-process and make-pipe-process. Iʼve looked at all uses of those
two functions in Emacs' sources, and none of them depend on the change
in semantics, in fact only a couple of them actually pass a :coding
keyword.
Having said all that, this does go back a looooong way (2002 at
least), so maybe we want to let sleeping dogs lie.
diff --git a/src/process.c b/src/process.c
index e18a5aa538..2db45b18b2 100644
--- a/src/process.c
+++ b/src/process.c
@@ -3205,14 +3206,12 @@ DEFUN ("make-serial-process", Fmake_serial_process, Smake_serial_process,
BUF_ZV_BYTE (XBUFFER (buffer)));
}
- tem = Fplist_member (contact, QCcoding);
- if (!NILP (tem) && (!CONSP (tem) || !CONSP (XCDR (tem))))
- tem = Qnil;
+ tem = Fplist_get (contact, QCcoding);
val = Qnil;
if (!NILP (tem))
{
- val = XCAR (XCDR (tem));
+ val = tem;
if (CONSP (val))
val = XCAR (val);
}
@@ -3226,7 +3225,7 @@ DEFUN ("make-serial-process", Fmake_serial_process, Smake_serial_process,
val = Qnil;
if (!NILP (tem))
{
- val = XCAR (XCDR (tem));
+ val = tem;
if (CONSP (val))
val = XCDR (val);
}
@@ -3261,16 +3260,14 @@ set_network_socket_coding_system (Lisp_Object proc, Lisp_Object host,
Lisp_Object coding_systems = Qt;
Lisp_Object val;
- tem = Fplist_member (contact, QCcoding);
- if (!NILP (tem) && (!CONSP (tem) || !CONSP (XCDR (tem))))
- tem = Qnil; /* No error message (too late!). */
+ tem = Fplist_get (contact, QCcoding);
/* Setup coding systems for communicating with the network stream. */
/* Qt denotes we have not yet called Ffind_operation_coding_system. */
if (!NILP (tem))
{
- val = XCAR (XCDR (tem));
+ val = tem;
if (CONSP (val))
val = XCAR (val);
}
@@ -3304,7 +3301,7 @@ set_network_socket_coding_system (Lisp_Object proc, Lisp_Object host,
if (!NILP (tem))
{
- val = XCAR (XCDR (tem));
+ val = tem;
if (CONSP (val))
val = XCDR (val);
}
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: bug#40248: 27.0.90; Failure open .authinfo.gpg from Gnus
2020-03-31 16:13 ` Robert Pluim
@ 2020-03-31 17:59 ` Eli Zaretskii
2020-03-31 19:53 ` Robert Pluim
2020-04-02 11:10 ` Lars Ingebrigtsen
1 sibling, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2020-03-31 17:59 UTC (permalink / raw)
To: Robert Pluim; +Cc: larsi, schwab, emacs-devel
> From: Robert Pluim <rpluim@gmail.com>
> Cc: Eli Zaretskii <eliz@gnu.org>, Lars Ingebrigtsen <larsi@gnus.org>,
> emacs-devel@gnu.org
> Date: Tue, 31 Mar 2020 18:13:10 +0200
>
> Now that Iʼve actually tested it, the change looks like this, making
> make-network-process and make-serial process behave the same as
> make-process and make-pipe-process. Iʼve looked at all uses of those
> two functions in Emacs' sources, and none of them depend on the change
> in semantics, in fact only a couple of them actually pass a :coding
> keyword.
Nevertheless, we should call out this change in NEWS.
> Having said all that, this does go back a looooong way (2002 at
> least), so maybe we want to let sleeping dogs lie.
I don't think this is a risky change. Programs that assume what we
currently do rely on undefined behavior, IMO.
Thanks.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: bug#40248: 27.0.90; Failure open .authinfo.gpg from Gnus
2020-03-31 17:59 ` Eli Zaretskii
@ 2020-03-31 19:53 ` Robert Pluim
0 siblings, 0 replies; 12+ messages in thread
From: Robert Pluim @ 2020-03-31 19:53 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: larsi, schwab, emacs-devel
>>>>> On Tue, 31 Mar 2020 20:59:01 +0300, Eli Zaretskii <eliz@gnu.org> said:
>> From: Robert Pluim <rpluim@gmail.com>
>> Cc: Eli Zaretskii <eliz@gnu.org>, Lars Ingebrigtsen <larsi@gnus.org>,
>> emacs-devel@gnu.org
>> Date: Tue, 31 Mar 2020 18:13:10 +0200
>>
>> Now that Iʼve actually tested it, the change looks like this, making
>> make-network-process and make-serial process behave the same as
>> make-process and make-pipe-process. Iʼve looked at all uses of those
>> two functions in Emacs' sources, and none of them depend on the change
>> in semantics, in fact only a couple of them actually pass a :coding
>> keyword.
Eli> Nevertheless, we should call out this change in NEWS.
That goes without saying. Probably put a note somewhere in the elisp
manual as well.
>> Having said all that, this does go back a looooong way (2002 at
>> least), so maybe we want to let sleeping dogs lie.
Eli> I don't think this is a risky change. Programs that assume what we
Eli> currently do rely on undefined behavior, IMO.
Well, itʼs not undefined in the 'C' sense of undefined at least :-)
Iʼll finish it up, and then convert at least Gnus over to use it.
Robert
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: bug#40248: 27.0.90; Failure open .authinfo.gpg from Gnus
2020-03-31 16:13 ` Robert Pluim
2020-03-31 17:59 ` Eli Zaretskii
@ 2020-04-02 11:10 ` Lars Ingebrigtsen
2020-04-02 12:48 ` Robert Pluim
1 sibling, 1 reply; 12+ messages in thread
From: Lars Ingebrigtsen @ 2020-04-02 11:10 UTC (permalink / raw)
To: Robert Pluim; +Cc: Eli Zaretskii, Andreas Schwab, emacs-devel
Robert Pluim <rpluim@gmail.com> writes:
> Now that Iʼve actually tested it, the change looks like this, making
> make-network-process and make-serial process behave the same as
> make-process and make-pipe-process. Iʼve looked at all uses of those
> two functions in Emacs' sources, and none of them depend on the change
> in semantics, in fact only a couple of them actually pass a :coding
> keyword.
>
> Having said all that, this does go back a looooong way (2002 at
> least), so maybe we want to let sleeping dogs lie.
Yeah, it does sound slightly scary, but I think the current nil
behaviour for :coding is probably not something any code would rely
on... I'm not quite sure what `nil' semantics for :coding here would
signify?
On the other hand, I generally think that functions should respect their
parameters, so if you say :coding nil, it might then be somewhat
surprising that `coding-system-for-{read,write}' are used instead?
So I'm not quite sure that the current make-network-process behaviour
here is a bug.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: bug#40248: 27.0.90; Failure open .authinfo.gpg from Gnus
2020-04-02 11:10 ` Lars Ingebrigtsen
@ 2020-04-02 12:48 ` Robert Pluim
2020-04-03 11:52 ` Lars Ingebrigtsen
0 siblings, 1 reply; 12+ messages in thread
From: Robert Pluim @ 2020-04-02 12:48 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, Andreas Schwab, emacs-devel
>>>>> On Thu, 02 Apr 2020 13:10:37 +0200, Lars Ingebrigtsen <larsi@gnus.org> said:
Lars> Robert Pluim <rpluim@gmail.com> writes:
>> Now that Iʼve actually tested it, the change looks like this, making
>> make-network-process and make-serial process behave the same as
>> make-process and make-pipe-process. Iʼve looked at all uses of those
>> two functions in Emacs' sources, and none of them depend on the change
>> in semantics, in fact only a couple of them actually pass a :coding
>> keyword.
>>
>> Having said all that, this does go back a looooong way (2002 at
>> least), so maybe we want to let sleeping dogs lie.
Lars> Yeah, it does sound slightly scary, but I think the current nil
Lars> behaviour for :coding is probably not something any code would rely
Lars> on... I'm not quite sure what `nil' semantics for :coding here would
Lars> signify?
No code in Emacs that I could find relies on it. The new semantics
would be 'use coding-system-for-read', which I think is defensible.
Lars> On the other hand, I generally think that functions should respect their
Lars> parameters, so if you say :coding nil, it might then be somewhat
Lars> surprising that `coding-system-for-{read,write}' are used instead?
Lars> So I'm not quite sure that the current make-network-process behaviour
Lars> here is a bug.
Itʼs different from make-process and make-pipe-process, itʼs
undocumented, and it was surprising to both me and Andreas. If it
turns out that in some obscure case somebody really needs the old
behaviour, then binding coding-system-for-{read,write} will still be
available, as will set-process-coding-sytem (or even passing :coding
'(nil nil), but thatʼs just evil :-) )
Robert
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: bug#40248: 27.0.90; Failure open .authinfo.gpg from Gnus
2020-04-02 12:48 ` Robert Pluim
@ 2020-04-03 11:52 ` Lars Ingebrigtsen
2020-04-03 12:50 ` Robert Pluim
0 siblings, 1 reply; 12+ messages in thread
From: Lars Ingebrigtsen @ 2020-04-03 11:52 UTC (permalink / raw)
To: Robert Pluim; +Cc: Eli Zaretskii, Andreas Schwab, emacs-devel
Robert Pluim <rpluim@gmail.com> writes:
> Itʼs different from make-process and make-pipe-process, itʼs
> undocumented, and it was surprising to both me and Andreas.
Yeah, that's a good reason for changing it.
> If it turns out that in some obscure case somebody really needs the
> old behaviour, then binding coding-system-for-{read,write} will still
> be available, as will set-process-coding-sytem (or even passing
> :coding '(nil nil), but thatʼs just evil :-) )
Oh, yeah. :-) Then I don't have any quibbles about your patch.
I don't think that's evil at all, though -- it should be mentioned in
NEWS that if somebody (for some odd, unlikely reason) wants the old
:coding nil behaviour, then they should say :coding '(nil nil) now.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: bug#40248: 27.0.90; Failure open .authinfo.gpg from Gnus
2020-04-03 11:52 ` Lars Ingebrigtsen
@ 2020-04-03 12:50 ` Robert Pluim
0 siblings, 0 replies; 12+ messages in thread
From: Robert Pluim @ 2020-04-03 12:50 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, Andreas Schwab, emacs-devel
>>>>> On Fri, 03 Apr 2020 13:52:06 +0200, Lars Ingebrigtsen <larsi@gnus.org> said:
Lars> Robert Pluim <rpluim@gmail.com> writes:
>> Itʼs different from make-process and make-pipe-process, itʼs
>> undocumented, and it was surprising to both me and Andreas.
Lars> Yeah, that's a good reason for changing it.
>> If it turns out that in some obscure case somebody really needs the
>> old behaviour, then binding coding-system-for-{read,write} will still
>> be available, as will set-process-coding-sytem (or even passing
>> :coding '(nil nil), but thatʼs just evil :-) )
Lars> Oh, yeah. :-) Then I don't have any quibbles about your patch.
Lars> I don't think that's evil at all, though -- it should be mentioned in
Lars> NEWS that if somebody (for some odd, unlikely reason) wants the old
Lars> :coding nil behaviour, then they should say :coding '(nil nil) now.
Ok, pushed to master as d08e81ce5a , with that in NEWS.
Iʼll hold off on the :coding change to open-network-stream et al for
the moment, just in case this does break something.
Robert
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2020-04-03 12:50 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <86bloi1zrj.fsf@csic.es>
[not found] ` <83lfnm8b30.fsf@gnu.org>
[not found] ` <83ftdt9b1d.fsf@gnu.org>
[not found] ` <86sght3h1s.fsf@csic.es>
[not found] ` <834ku89anf.fsf@gnu.org>
[not found] ` <87a740ub2r.fsf@gnus.org>
[not found] ` <83tv287s9j.fsf@gnu.org>
[not found] ` <874ku7txho.fsf@gnus.org>
[not found] ` <83imin5l0w.fsf@gnu.org>
2020-03-31 9:20 ` bug#40248: 27.0.90; Failure open .authinfo.gpg from Gnus Robert Pluim
2020-03-31 9:53 ` Andreas Schwab
2020-03-31 10:16 ` Robert Pluim
2020-03-31 10:31 ` Andreas Schwab
2020-03-31 11:09 ` Robert Pluim
2020-03-31 16:13 ` Robert Pluim
2020-03-31 17:59 ` Eli Zaretskii
2020-03-31 19:53 ` Robert Pluim
2020-04-02 11:10 ` Lars Ingebrigtsen
2020-04-02 12:48 ` Robert Pluim
2020-04-03 11:52 ` Lars Ingebrigtsen
2020-04-03 12:50 ` Robert Pluim
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).