GNU bug report logs -
#35383
27.0.50; Complete process of decoding Gnus group names
Previous Next
Reported by: Eric Abrahamsen <eric <at> ericabrahamsen.net>
Date: Mon, 22 Apr 2019 18:42:02 UTC
Severity: normal
Tags: fixed
Found in version 27.0.50
Fixed in version 27.1
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #35 received at 35383 <at> debbugs.gnu.org (full text, mbox):
On Thu, 25 Apr 2019 09:10:13 -0700, Eric Abrahamsen wrote:
> On 04/25/19 08:48 AM, Katsumi Yamaoka wrote:
>> Warning: Warning - invalid active:
>> for the nnnil method, that is my `gnus-select-method'. Here are
>> the contents of ~/News/agent/nnnil/agent.lib/active:
>> --8<---------------cut here---------------start------------->8---
>> ;; -*- encoding: utf-8-emacs; -*-
>> --8<---------------cut here---------------end--------------->8---
>> Why the warning is issued is to run (read (current-buffer)) at
>> the beginning of the contents. This is actually an error but
>> `condition-case' conceals it.
> Hmm, this is all done in a temp buffer,
Yes. When launching Gnus, the whole contents of the active file
are read into the " *nntpd*" buffer, copied into the temp buffer,
and parsed (see the flow summary attatched in the bottom of this
message for how Gnus behaves when launching).
> with
> `insert-buffer-substring' -- I wonder if the encoding cookie will even
> be honored in this case?
No, it's useless of course. Moreover, --- I changed my idea
(patching the `gnus-active-to-gnus-format' function so as to
ignore the coding cookie) --- I come to think that the active
file should not contain the ones other than the active infos.
Gnus indeed ignores the coding cookie when parsing active, but
it is due to just a lucky side effect of `read':
(read ";; coding cookie\n\nactive_info\n") => active_info
I.e., `read' ignores comments in the ELisp style and whitespace.
However, in the first place, the active file is neither an ELisp
file nor there is no agreement for a comment style in it. So, I
think it is better to bind `coding-system-for-(read|write)' while
reading and writing the active file rather than adding a coding
cookie. Though binding `coding-system-for-(read|write)' would
probably be unnecessary since `gnus-write-active-file' binds
`coding-system-for-write' to `nnmail-active-file-coding-system',
and `gnus-agent-save-active' binds `coding-system-for-read' to
`gnus-agent-file-coding-system' that defaults to `utf-8-emacs'.
Therefore, adding a coding cookie was originally unnecessary,
wasn't it?
Here are how Gnus reads the active file for the nnnil method
observed in my system. Note that `gnus-agent' is t (the default).
(gnus 1)
[...]
(gnus-setup-news nil t nil)
(gnus-get-unread-articles 1 nil)
(require 'gnus-agent)
(with-current-buffer " *nntpd*"
(gnus-read-active-file-1 '(nnnil) nil)
(gnus-active-to-gnus-format '(nnnil) hashtb nil t)
(gnus-agent-save-active '(nnil))
(gnus-agent-write-active "active-file" hashtb)
;; Add a coding cookie.
(gnus-write-active-file "active-file" hashtb nil)
(erase-buffer)
(nnheader-insert-file-contents "active-file")
(_copy to_ " *nntpd*")
(_parse it_)
Regards,
P.S.
I'll be not so active in the net for about ten days because of
the national holidays assoc with the era name changing in Japan.
This bug report was last modified 5 years and 290 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.