GNU bug report logs - #12873
24.2; undigestify-rmail-message in emacs 24.x still doesn't split a digest

Previous Next

Package: emacs;

Reported by: Xavier Maillard <xavier <at> maillard.im>

Date: Mon, 12 Nov 2012 22:05:01 UTC

Severity: normal

Tags: patch

Merged with 1140

Found in version 24.2

Fixed in version 29.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 12873 in the body.
You can then email your comments to 12873 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#12873; Package emacs. (Mon, 12 Nov 2012 22:05:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Xavier Maillard <xavier <at> maillard.im>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 12 Nov 2012 22:05:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Xavier Maillard <xavier <at> maillard.im>
To: bug-gnu-emacs <at> gnu.org
Subject: 24.2;
	undigestify-rmail-message in emacs 24.x still doesn't split a digest
Date: Mon, 12 Nov 2012 22:17:53 +0100
Hi (and sorry for unarchiving this old bug which I reported some
years ago cf. 1140),

since I get back to rmail, I wanted to test this feature again
and see if anything has changed. Alas, nothing :(

Using undigestify on messages received from april.org, the result
is not the expected one: individual messages.

Instead, I receive 3 messages:

1. an empty message with just headers (huh)
2. a TOC (sounds correct)
3. all messages in a big and single message

Enclosed is a rmail file you can use for testing.

Here is how I tested it:

emacs -Q --no-init-file
C-u M-x rmail RET <path to DIGEST file> RET
M-x undigestify-rmail-message RET

<#part type="application/octet-stream" filename="~/DIGEST" disposition=attachment>
<#/part>



In GNU Emacs 24.2.1 (i486-slackware-linux-gnu)
 of 2012-08-31 on hive
Configured using:
 `configure '--prefix=/usr' '--sysconfdir=/etc'
 '--localstatedir=/var' '--program-prefix=' '--program-suffix='
 '--mandir=/usr/man' '--infodir=/usr/info' '--without-gconf'
 '--without-gsettings' '--with-x=no'
 '--build=i486-slackware-linux'
 'build_alias=i486-slackware-linux' 'CFLAGS=-O2 -march=i486
 -mtune=i686''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: C
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_US
  value of $XMODIFIERS: nil
  locale-coding-system: iso-latin-1-unix
  default enable-multibyte-characters: t

Major mode: Mail

Minor modes in effect:
  eev-mode: t
  shell-dirtrack-mode: t
  ido-everywhere: t
  iswitchb-mode: t
  show-paren-mode: t
  recentf-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
ESC [ B ESC [ B ESC [ B ESC [ B ESC [ B ESC [ B ESC 
[ B ESC [ B ESC [ B ESC [ B ESC [ B ESC [ B ESC [ B 
ESC [ B ESC [ B ESC [ B ESC [ B ESC [ B ESC [ B ESC 
[ B ESC [ B ESC [ B ESC [ B ESC [ B ESC [ B ESC [ B 
ESC [ B ESC [ B ESC [ B ESC [ B ESC [ B ESC [ B ESC 
[ B ESC [ B ESC [ A ESC [ C ESC [ C ESC [ C ESC [ C 
ESC [ C ESC [ C ESC [ C ESC [ C ESC [ C ESC [ C ESC 
[ C ESC [ C ESC [ C ESC [ C ESC [ C ESC [ C ESC [ C 
ESC [ C ESC [ C ESC [ C ESC [ C ESC [ C ESC [ C ESC 
[ C ESC [ C ESC [ C ESC [ C ESC [ C ESC [ C ESC [ C 
ESC [ C ESC [ C ESC [ C ESC [ C ESC [ C ESC [ C ESC 
[ C RET ESC [ B ESC [ C ESC [ C ESC [ C ESC [ C ESC 
[ C ESC [ C ESC [ C ESC [ C ESC [ C ESC [ C ESC [ D 
C-@ C-e ESC w ESC x ESC [ A C-e DEL DEL DEL DEL DEL 
DEL DEL DEL DEL DEL DEL DEL DEL DEL DEL DEL DEL DEL 
DEL DEL RET C-y RET n ESC [ B C-x h ESC w ESC x ESC 
[ A RET

Recent messages:
byte-code: Beginning of buffer [8 times]
byte-code: End of buffer [8 times]
Mark set
Unsent message being composed; erase it? (y or n)  n
Auto save file for draft message exists; consider M-x mail-recover
sendmail-user-agent-compose: Message aborted
Mark set [2 times]
Saved text until "p://www.april.org
http://www.lolica.org
"

Load-path shadows:
/usr/lib/erlang/lib/tools-2.6.6.3/emacs/erlang-start hides /home/xavier/.emacs.d/site-lisp/erlang/erlang-start
/usr/lib/erlang/lib/tools-2.6.6.3/emacs/erlang hides /home/xavier/.emacs.d/site-lisp/erlang/erlang
/usr/share/emacs/site-lisp/t-mouse hides /usr/share/emacs/24.2/lisp/t-mouse
/usr/share/emacs/site-lisp/org hides /usr/share/emacs/24.2/lisp/org/org
/usr/share/emacs/site-lisp/ob-org hides /usr/share/emacs/24.2/lisp/org/ob-org
/usr/share/emacs/site-lisp/ob-R hides /usr/share/emacs/24.2/lisp/org/ob-R
/usr/share/emacs/site-lisp/org-plot hides /usr/share/emacs/24.2/lisp/org/org-plot
/usr/share/emacs/site-lisp/ob-screen hides /usr/share/emacs/24.2/lisp/org/ob-screen
/usr/share/emacs/site-lisp/org-w3m hides /usr/share/emacs/24.2/lisp/org/org-w3m
/usr/share/emacs/site-lisp/org-faces hides /usr/share/emacs/24.2/lisp/org/org-faces
/usr/share/emacs/site-lisp/ob-keys hides /usr/share/emacs/24.2/lisp/org/ob-keys
/usr/share/emacs/site-lisp/ob-eval hides /usr/share/emacs/24.2/lisp/org/ob-eval
/usr/share/emacs/site-lisp/ob-lob hides /usr/share/emacs/24.2/lisp/org/ob-lob
/usr/share/emacs/site-lisp/org-jsinfo hides /usr/share/emacs/24.2/lisp/org/org-jsinfo
/usr/share/emacs/site-lisp/org-id hides /usr/share/emacs/24.2/lisp/org/org-id
/usr/share/emacs/site-lisp/org-mobile hides /usr/share/emacs/24.2/lisp/org/org-mobile
/usr/share/emacs/site-lisp/org-footnote hides /usr/share/emacs/24.2/lisp/org/org-footnote
/usr/share/emacs/site-lisp/ob-matlab hides /usr/share/emacs/24.2/lisp/org/ob-matlab
/usr/share/emacs/site-lisp/org-table hides /usr/share/emacs/24.2/lisp/org/org-table
/usr/share/emacs/site-lisp/org-src hides /usr/share/emacs/24.2/lisp/org/org-src
/usr/share/emacs/site-lisp/org-publish hides /usr/share/emacs/24.2/lisp/org/org-publish
/usr/share/emacs/site-lisp/ob-dot hides /usr/share/emacs/24.2/lisp/org/ob-dot
/usr/share/emacs/site-lisp/org-gnus hides /usr/share/emacs/24.2/lisp/org/org-gnus
/usr/share/emacs/site-lisp/org-feed hides /usr/share/emacs/24.2/lisp/org/org-feed
/usr/share/emacs/site-lisp/org-install hides /usr/share/emacs/24.2/lisp/org/org-install
/usr/share/emacs/site-lisp/ob-emacs-lisp hides /usr/share/emacs/24.2/lisp/org/ob-emacs-lisp
/usr/share/emacs/site-lisp/ob-ref hides /usr/share/emacs/24.2/lisp/org/ob-ref
/usr/share/emacs/site-lisp/org-indent hides /usr/share/emacs/24.2/lisp/org/org-indent
/usr/share/emacs/site-lisp/org-list hides /usr/share/emacs/24.2/lisp/org/org-list
/usr/share/emacs/site-lisp/ob-css hides /usr/share/emacs/24.2/lisp/org/ob-css
/usr/share/emacs/site-lisp/org-habit hides /usr/share/emacs/24.2/lisp/org/org-habit
/usr/share/emacs/site-lisp/ob-perl hides /usr/share/emacs/24.2/lisp/org/ob-perl
/usr/share/emacs/site-lisp/ob-plantuml hides /usr/share/emacs/24.2/lisp/org/ob-plantuml
/usr/share/emacs/site-lisp/org-ctags hides /usr/share/emacs/24.2/lisp/org/org-ctags
/usr/share/emacs/site-lisp/org-timer hides /usr/share/emacs/24.2/lisp/org/org-timer
/usr/share/emacs/site-lisp/org-xoxo hides /usr/share/emacs/24.2/lisp/org/org-xoxo
/usr/share/emacs/site-lisp/ob-ledger hides /usr/share/emacs/24.2/lisp/org/ob-ledger
/usr/share/emacs/site-lisp/ob-octave hides /usr/share/emacs/24.2/lisp/org/ob-octave
/usr/share/emacs/site-lisp/ob-js hides /usr/share/emacs/24.2/lisp/org/ob-js
/usr/share/emacs/site-lisp/org-exp hides /usr/share/emacs/24.2/lisp/org/org-exp
/usr/share/emacs/site-lisp/ob-calc hides /usr/share/emacs/24.2/lisp/org/ob-calc
/usr/share/emacs/site-lisp/ob-sql hides /usr/share/emacs/24.2/lisp/org/ob-sql
/usr/share/emacs/site-lisp/org-bibtex hides /usr/share/emacs/24.2/lisp/org/org-bibtex
/usr/share/emacs/site-lisp/org-bbdb hides /usr/share/emacs/24.2/lisp/org/org-bbdb
/usr/share/emacs/site-lisp/org-mew hides /usr/share/emacs/24.2/lisp/org/org-mew
/usr/share/emacs/site-lisp/org-beamer hides /usr/share/emacs/24.2/lisp/org/org-beamer
/usr/share/emacs/site-lisp/org-agenda hides /usr/share/emacs/24.2/lisp/org/org-agenda
/usr/share/emacs/site-lisp/ob-clojure hides /usr/share/emacs/24.2/lisp/org/ob-clojure
/usr/share/emacs/site-lisp/org-html hides /usr/share/emacs/24.2/lisp/org/org-html
/usr/share/emacs/site-lisp/org-mac-message hides /usr/share/emacs/24.2/lisp/org/org-mac-message
/usr/share/emacs/site-lisp/ob-comint hides /usr/share/emacs/24.2/lisp/org/ob-comint
/usr/share/emacs/site-lisp/org-entities hides /usr/share/emacs/24.2/lisp/org/org-entities
/usr/share/emacs/site-lisp/org-colview hides /usr/share/emacs/24.2/lisp/org/org-colview
/usr/share/emacs/site-lisp/org-protocol hides /usr/share/emacs/24.2/lisp/org/org-protocol
/usr/share/emacs/site-lisp/ob-C hides /usr/share/emacs/24.2/lisp/org/ob-C
/usr/share/emacs/site-lisp/org-freemind hides /usr/share/emacs/24.2/lisp/org/org-freemind
/usr/share/emacs/site-lisp/ob-sh hides /usr/share/emacs/24.2/lisp/org/ob-sh
/usr/share/emacs/site-lisp/org-info hides /usr/share/emacs/24.2/lisp/org/org-info
/usr/share/emacs/site-lisp/org-wl hides /usr/share/emacs/24.2/lisp/org/org-wl
/usr/share/emacs/site-lisp/org-compat hides /usr/share/emacs/24.2/lisp/org/org-compat
/usr/share/emacs/site-lisp/org-crypt hides /usr/share/emacs/24.2/lisp/org/org-crypt
/usr/share/emacs/site-lisp/org-clock hides /usr/share/emacs/24.2/lisp/org/org-clock
/usr/share/emacs/site-lisp/ob-gnuplot hides /usr/share/emacs/24.2/lisp/org/ob-gnuplot
/usr/share/emacs/site-lisp/org-mhe hides /usr/share/emacs/24.2/lisp/org/org-mhe
/usr/share/emacs/site-lisp/org-rmail hides /usr/share/emacs/24.2/lisp/org/org-rmail
/usr/share/emacs/site-lisp/org-macs hides /usr/share/emacs/24.2/lisp/org/org-macs
/usr/share/emacs/site-lisp/org-mks hides /usr/share/emacs/24.2/lisp/org/org-mks
/usr/share/emacs/site-lisp/org-latex hides /usr/share/emacs/24.2/lisp/org/org-latex
/usr/share/emacs/site-lisp/org-remember hides /usr/share/emacs/24.2/lisp/org/org-remember
/usr/share/emacs/site-lisp/ob-mscgen hides /usr/share/emacs/24.2/lisp/org/ob-mscgen
/usr/share/emacs/site-lisp/ob-haskell hides /usr/share/emacs/24.2/lisp/org/ob-haskell
/usr/share/emacs/site-lisp/ob-table hides /usr/share/emacs/24.2/lisp/org/ob-table
/usr/share/emacs/site-lisp/ob-ruby hides /usr/share/emacs/24.2/lisp/org/ob-ruby
/usr/share/emacs/site-lisp/org-docbook hides /usr/share/emacs/24.2/lisp/org/org-docbook
/usr/share/emacs/site-lisp/org-capture hides /usr/share/emacs/24.2/lisp/org/org-capture
/usr/share/emacs/site-lisp/ob-ditaa hides /usr/share/emacs/24.2/lisp/org/ob-ditaa
/usr/share/emacs/site-lisp/org-vm hides /usr/share/emacs/24.2/lisp/org/org-vm
/usr/share/emacs/site-lisp/ob-ocaml hides /usr/share/emacs/24.2/lisp/org/ob-ocaml
/usr/share/emacs/site-lisp/ob-sqlite hides /usr/share/emacs/24.2/lisp/org/ob-sqlite
/usr/share/emacs/site-lisp/org-ascii hides /usr/share/emacs/24.2/lisp/org/org-ascii
/usr/share/emacs/site-lisp/org-icalendar hides /usr/share/emacs/24.2/lisp/org/org-icalendar
/usr/share/emacs/site-lisp/ob-python hides /usr/share/emacs/24.2/lisp/org/ob-python
/usr/share/emacs/site-lisp/org-inlinetask hides /usr/share/emacs/24.2/lisp/org/org-inlinetask
/usr/share/emacs/site-lisp/ob-exp hides /usr/share/emacs/24.2/lisp/org/ob-exp
/usr/share/emacs/site-lisp/ob-asymptote hides /usr/share/emacs/24.2/lisp/org/ob-asymptote
/usr/share/emacs/site-lisp/org-exp-blocks hides /usr/share/emacs/24.2/lisp/org/org-exp-blocks
/usr/share/emacs/site-lisp/org-irc hides /usr/share/emacs/24.2/lisp/org/org-irc
/usr/share/emacs/site-lisp/ob-tangle hides /usr/share/emacs/24.2/lisp/org/ob-tangle
/usr/share/emacs/site-lisp/org-archive hides /usr/share/emacs/24.2/lisp/org/org-archive
/usr/share/emacs/site-lisp/ob-latex hides /usr/share/emacs/24.2/lisp/org/ob-latex
/usr/share/emacs/site-lisp/org-attach hides /usr/share/emacs/24.2/lisp/org/org-attach
/usr/share/emacs/site-lisp/org-datetree hides /usr/share/emacs/24.2/lisp/org/org-datetree
/usr/share/emacs/site-lisp/ob hides /usr/share/emacs/24.2/lisp/org/ob
/usr/share/emacs/site-lisp/org-taskjuggler hides /usr/share/emacs/24.2/lisp/org/org-taskjuggler
/usr/share/emacs/site-lisp/org-mouse hides /usr/share/emacs/24.2/lisp/org/org-mouse
/usr/share/emacs/site-lisp/ob-scheme hides /usr/share/emacs/24.2/lisp/org/ob-scheme
/usr/share/emacs/site-lisp/org-docview hides /usr/share/emacs/24.2/lisp/org/org-docview
/usr/share/emacs/site-lisp/ob-sass hides /usr/share/emacs/24.2/lisp/org/ob-sass
/usr/share/emacs/site-lisp/timeclock hides /usr/share/emacs/24.2/lisp/calendar/timeclock

Features:
(shadow network-stream url-cache url-http url-gw url-auth url
url-proxy url-privacy url-expand url-methods url-history
url-cookie url-util url-parse url-vars mailcap emacsbug debug
dabbrev newcomment rmailkwd find-func jka-compr misearch
multi-isearch time-stamp copyright rmailsum undigest help-mode
view qp image rmailmm message idna sendmail rfc822 mml mml-sec
mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader
mail-parse rfc2231 rmail rfc2047 rfc2045 ietf-drums mail-utils
t-mouse eldoc flyspell ispell ampc-autoloads csv-mode-autoloads
debbugs-autoloads memory-usage-autoloads package tabulated-list
uniquify session eev-all disp-table eev-mini-steps eev-browse-url
eev-langs eev-compose eev-glyphs eev-insert eev-steps eev-bounded
eev easy-mmode warnings info-look info tool-bar paredit edmacro
kmacro server tramp tramp-compat auth-source eieio byte-opt
bytecomp byte-compile cconv macroexp assoc gnus-util mm-util
mail-prsvr password-cache shell pcomplete comint ansi-color ring
format-spec advice advice-preload tramp-loaddefs regexp-opt ido
erlang-start jabber-core jabber-sasl sasl sasl-anonymous
sasl-login sasl-plain fsm help-fns jabber-conn srv dns starttls
tls jabber-logon jabber-xml xml jabber-util color-theme-less
color-theme-library color-theme cl iswitchb time-date paren
recentf tree-widget wid-edit easymenu ediff-hook vc-hooks
lisp-float-type lisp-mode register page menu-bar rfn-eshadow
timer select mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces
cus-face files text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget hashtable-print-readable backquote
make-network-process dbusbind multi-tty emacs)


	Xavier
-- 
http://www.gnu.org
http://www.april.org
http://www.lolica.org




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12873; Package emacs. (Mon, 12 Nov 2012 22:10:02 GMT) Full text and rfc822 format available.

Message #8 received at 12873 <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: Xavier Maillard <xavier <at> maillard.im>
Cc: 12873 <at> debbugs.gnu.org
Subject: Re: bug#12873: 24.2;
	undigestify-rmail-message in emacs 24.x still doesn't split a digest
Date: Mon, 12 Nov 2012 17:09:17 -0500
Xavier Maillard wrote:

> Enclosed is a rmail file you can use for testing.

I'm afraid it did not attach correctly:

> <#part type="application/octet-stream" filename="~/DIGEST" disposition=attachment>
> <#/part>




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12873; Package emacs. (Mon, 12 Nov 2012 22:53:01 GMT) Full text and rfc822 format available.

Message #11 received at 12873 <at> debbugs.gnu.org (full text, mbox):

From: Xavier Maillard <xavier <at> maillard.im>
To: Glenn Morris <rgm <at> gnu.org>
Cc: 12873 <at> debbugs.gnu.org
Subject: Re: bug#12873: 24.2;
	undigestify-rmail-message in emacs 24.x still doesn't split a digest
Date: Mon, 12 Nov 2012 23:51:43 +0100
[DIGEST (application/octet-stream, attachment)]
[Message part 2 (text/plain, inline)]
> I'm afraid it did not attach correctly:

Bug ? :D Let's try again

	Xavier
-- 
http://www.gnu.org
http://www.april.org
http://www.lolica.org

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12873; Package emacs. (Mon, 12 Nov 2012 22:53:02 GMT) Full text and rfc822 format available.

Message #14 received at 12873 <at> debbugs.gnu.org (full text, mbox):

From: Xavier Maillard <xavier <at> maillard.im>
To: 12873 <at> debbugs.gnu.org
Subject: Re: bug#12873: Acknowledgement (24.2; undigestify-rmail-message in
	emacs 24.x still doesn't split a digest)
Date: Mon, 12 Nov 2012 23:52:30 +0100
tags emacs,rmail
stop

	Xavier
-- 
http://www.gnu.org
http://www.april.org
http://www.lolica.org




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12873; Package emacs. (Tue, 13 Nov 2012 00:32:02 GMT) Full text and rfc822 format available.

Message #17 received at 12873 <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: Xavier Maillard <xavier <at> maillard.im>
Cc: 12873 <at> debbugs.gnu.org
Subject: Re: bug#12873: undigestify-rmail-message in emacs 24.x still doesn't
	split a digest
Date: Mon, 12 Nov 2012 19:30:39 -0500
This is a multipart/mixed message containing a multipart/digest.
Accordingly, if you run undigestify-rmail-message twice, the second time
on the 3rd extracted message component (the actual multipart/digest), it
kind of works, maybe.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12873; Package emacs. (Tue, 13 Nov 2012 00:36:02 GMT) Full text and rfc822 format available.

Message #20 received at 12873 <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: Xavier Maillard <xavier <at> maillard.im>
Cc: 12873 <at> debbugs.gnu.org
Subject: Re: bug#12873: undigestify-rmail-message in emacs 24.x still doesn't
	split a digest
Date: Mon, 12 Nov 2012 19:34:40 -0500
Glenn Morris wrote:

> This is a multipart/mixed message containing a multipart/digest.

As per eg section 5.1.5 of RFC 2046,
https://tools.ietf.org/html/rfc2046#section-5.1.5
so I guess it should be handled better, but don't think it ever has
been.




Forcibly Merged 1140 12873. Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Tue, 13 Nov 2012 01:01:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12873; Package emacs. (Tue, 13 Nov 2012 21:40:03 GMT) Full text and rfc822 format available.

Message #25 received at 12873 <at> debbugs.gnu.org (full text, mbox):

From: Xavier Maillard <xavier <at> maillard.im>
To: Glenn Morris <rgm <at> gnu.org>
Cc: 12873 <at> debbugs.gnu.org
Subject: Re: bug#12873: undigestify-rmail-message in emacs 24.x still doesn't
	split a digest
Date: Tue, 13 Nov 2012 22:38:39 +0100
Hi Glenn,

> This is a multipart/mixed message containing a multipart/digest.
> Accordingly, if you run undigestify-rmail-message twice, the second time
> on the 3rd extracted message component (the actual multipart/digest), it
> kind of works, maybe.

Actually that does not work either. To be precise, it effectively
"undigestify" latest message into many pieces *but* messages are
not valid (pressing 'r' to answer to one of them returns: "wrong
type argument: stringp, nil").

Message are not well formated and contain duplicate fields such
as 'To' and 'Content-Type'. Here is a typical result:

 To: april <at> april_org
 Content-Type: message/rfc822
 Content-Disposition: inline

 Date: a date
 From: a valid from
 To: april <at> april_org, ...
 Content-Type: text/plain; charset=windows-1252; format=flowed
 Subject: a subject

Regards



	Xavier
-- 
http://www.gnu.org
http://www.april.org
http://www.lolica.org




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12873; Package emacs. (Tue, 13 Nov 2012 21:41:02 GMT) Full text and rfc822 format available.

Message #28 received at 12873 <at> debbugs.gnu.org (full text, mbox):

From: Xavier Maillard <xavier <at> maillard.im>
To: Glenn Morris <rgm <at> gnu.org>
Cc: 12873 <at> debbugs.gnu.org
Subject: Re: bug#12873: undigestify-rmail-message in emacs 24.x still doesn't
	split a digest
Date: Tue, 13 Nov 2012 22:40:29 +0100
> 
> Glenn Morris wrote:
> 
> > This is a multipart/mixed message containing a multipart/digest.
> 
> As per eg section 5.1.5 of RFC 2046,
> https://tools.ietf.org/html/rfc2046#section-5.1.5
> so I guess it should be handled better, but don't think it ever has
> been.

Thank you very much for this pointer. As I read it, it should way
simpler to support such DIGEST message than any other. I will try
how to adapt this since I am using as much as possible DIGEST
formated messages.

	Xavier
-- 
http://www.gnu.org
http://www.april.org
http://www.lolica.org




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12873; Package emacs. (Sat, 02 Jan 2016 21:50:02 GMT) Full text and rfc822 format available.

Message #31 received at 12873 <at> debbugs.gnu.org (full text, mbox):

From: Andrew Hyatt <ahyatt <at> gmail.com>
To: Xavier Maillard <xavier <at> maillard.im>
Cc: 1140 <at> debbugs.gnu.org, Glenn Morris <rgm <at> gnu.org>, 12873 <at> debbugs.gnu.org
Subject: Re: bug#12873: 24.2;
 undigestify-rmail-message in emacs 24.x still doesn't split a digest
Date: Sat, 02 Jan 2016 16:48:54 -0500
Xavier Maillard <xavier <at> maillard.im> writes:

>> I'm afraid it did not attach correctly:
>
> Bug ? :D Let's try again
>
> 	Xavier

Thanks, I can confirm this is still a problem in emacs 25.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12873; Package emacs. (Wed, 23 Feb 2022 13:28:02 GMT) Full text and rfc822 format available.

Message #34 received at 12873 <at> debbugs.gnu.org (full text, mbox):

From: Mauro Aranda <maurooaranda <at> gmail.com>
To: 12873 <at> debbugs.gnu.org
Cc: Xavier Maillard <xavier <at> maillard.im>
Subject: Re: bug#12873: 24.2; undigestify-rmail-message in emacs 24.x still
 doesn't split a digest
Date: Wed, 23 Feb 2022 10:27:19 -0300
[Message part 1 (text/plain, inline)]
Xavier Maillard <xavier <at> maillard.im> writes:

> Using undigestify on messages received from april.org, the result
> is not the expected one: individual messages.
>
> Instead, I receive 3 messages:
>
> 1. an empty message with just headers (huh)
> 2. a TOC (sounds correct)
> 3. all messages in a big and single message
>
> Enclosed is a rmail file you can use for testing.

I attach a first attempt to support bursting digests inside a
multipart/mixed message.

I've also added a test file for undigest.el.

[0001-Make-undigest-work-with-multipart-mixed-messages-Bug.patch (text/x-patch, inline)]
From 5ac2db65a6332a82713666913f16d5a11d55a4f2 Mon Sep 17 00:00:00 2001
From: Mauro Aranda <maurooaranda <at> gmail.com>
Date: Wed, 23 Feb 2022 09:54:03 -0300
Subject: [PATCH] Make undigest work with multipart/mixed messages (Bug#12873)

* lisp/mail/undigest.el (rmail-digest-methods): Install
rmail-digest-parse-mixed-mime.
(rmail-content-type-boundary): New function, to get a specific
Content-type boundary.
(rmail-digest-parse-mixed-mime): New function, to search for a
multipart/digest message inside a multipart/mixed message.

* test/lisp/mail/undigest.el: New test file.
---
 lisp/mail/undigest.el      |  50 +++++-
 test/lisp/mail/undigest.el | 354 +++++++++++++++++++++++++++++++++++++
 2 files changed, 403 insertions(+), 1 deletion(-)
 create mode 100644 test/lisp/mail/undigest.el

diff --git a/lisp/mail/undigest.el b/lisp/mail/undigest.el
index 03e77a83ce..c6d29bc4e7 100644
--- a/lisp/mail/undigest.el
+++ b/lisp/mail/undigest.el
@@ -41,7 +41,8 @@ rmail-forward-separator-regex
 
 
 (defconst rmail-digest-methods
-  '(rmail-digest-parse-mime
+  '(rmail-digest-parse-mixed-mime
+    rmail-digest-parse-mime
     rmail-digest-parse-rfc1153strict
     rmail-digest-parse-rfc1153sloppy
     rmail-digest-parse-rfc934)
@@ -52,6 +53,53 @@ rmail-digest-methods
 returns a list of cons pairs containing the start and end positions of
 each undigestified message as markers.")
 
+(defun rmail-content-type-boundary (type)
+  "If Content-type is of type TYPE, return its boundary; otherwise, return nil."
+  (goto-char (point-min))
+  (let ((head-end (save-excursion (search-forward "\n\n" nil t) (point))))
+    (when (re-search-forward
+           (concat "^Content-type: " type ";"
+                   "\\s-* boundary=\"?\\([^\";\n]+\\)[\";\n]")
+           head-end t)
+      (match-string 1))))
+
+(defun rmail-digest-parse-mixed-mime ()
+  "Like `rmail-digest-parse-mime', but for multipart/mixed messages."
+  (when-let ((boundary (rmail-content-type-boundary "multipart/mixed")))
+    (let ((global-sep (concat "\n--" boundary))
+          (digest (concat "^Content-type: multipart/digest;"
+                          "\\s-* boundary=\"?\\([^\";\n]+\\)[\";\n]"))
+          result)
+      (search-forward global-sep nil t)
+      (while (not (or result (eobp)))
+        ;; For each part, see if it is a multipart/digest.
+        (let* ((limit (save-excursion (search-forward global-sep nil 'move)
+                                      (point)))
+               (beg (and (re-search-forward digest limit t)
+                         (match-beginning 0)))
+               digest-sep)
+          (when (and beg
+                     (setq digest-sep (concat "\n--" (match-string 1)))
+                     ;; Search for 1st sep.
+                     (search-forward digest-sep nil t))
+            ;; Skip body part headers.
+            (search-forward "\n\n" nil t)
+            ;; Push the 1st message.
+            (push (cons (copy-marker beg) (copy-marker (point-marker) t))
+                  result)
+            ;; Push the rest of the messages.
+            (let ((start (make-marker))
+                  done)
+              (while (and (search-forward digest-sep limit 'move) (not done))
+                (move-marker start (match-beginning 0))
+                (and (looking-at "--$") (setq done t))
+                (search-forward "\n\n")
+                (push (cons (copy-marker start)
+                            (copy-marker (point-marker) t))
+                      result))))
+          (goto-char limit)))
+      (nreverse result))))
+
 (defun rmail-digest-parse-mime ()
   (goto-char (point-min))
   (when (let ((head-end (progn (search-forward "\n\n" nil t) (point))))
diff --git a/test/lisp/mail/undigest.el b/test/lisp/mail/undigest.el
new file mode 100644
index 0000000000..24059aa349
--- /dev/null
+++ b/test/lisp/mail/undigest.el
@@ -0,0 +1,354 @@
+;;; undigest.el --- Tests for undigest.el  -*- lexical-binding:t -*-
+
+;; Copyright (C) 2022 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+(require 'rmail)
+(require 'undigest)
+
+;;; Variables:
+;; Some digests for testing.
+(defvar rmail-rfc934-digest "From tester  Fri Jan 24 00:00:00 2022
+From: Digester <digester <at> digester.com>
+To: Undigester <undigester <at> undigester.com>
+Date: ddd, dd mmm yy hh:mm:ss zzz
+Subject: Testing you
+
+Testing the undigester.
+
+------- Message sep
+
+From: NN1 <nn1 <at> nn1.com>
+To: Digester <digester <at> digester.com>
+Date: ddd, dd mmm yy hh:mm:ss zzz
+Subject: Message one
+
+This is message one.
+
+------- Message sep
+
+From: NN2 <nn2 <at> nn2.com>
+To: Digester <digester <at> digester.com>
+Date: ddd, dd mmm yy hh:mm:ss zzz
+Subject: Message two
+
+This is message two.
+"
+
+  "RFC 934 digest.")
+
+(defvar rmail-rfc1153-digest-strict "From tester  Fri Jan 24 00:00:00 2022
+Date: ddd, dd mmm yy hh:mm:ss zzz
+From: Digester <digester <at> digester.com>
+To: Undigester <undigester <at> undigester.com>
+Date: ddd, dd mmm yy hh:mm:ss zzz
+Subject: Testing you
+
+Some mailing list information.
+
+Today's Topics:
+
+    1.  Message One Subject (Sender)
+    2.  Message Two Subject (Sender)
+
+----------------------------------------------------------------------
+
+Date: ddd, dd mmm yy hh:mm:ss zzz
+From: NN1 <nn1 <at> nn1.com>
+Subject: Message One Subject
+
+This is message one.
+
+------------------------------
+
+Date: ddd, dd mmm yy hh:mm:ss zzz
+From: NN2 <nn2 <at> nn2.com>
+Subject: Message Two Subject
+
+This is message two.
+
+------------------------------
+
+End of Digest.
+************************************
+"
+  "RFC 1153 strict style digest.")
+
+(defvar rmail-rfc1153-digest-less-strict "From tester  Fri Jan 24 00:00:00 2022
+From: Digester <digester <at> digester.com>
+To: Undigester <undigester <at> undigester.com>
+Date: ddd, dd mmm yy hh:mm:ss zzz
+Subject: Testing you
+
+Some mailing list information.
+
+Today's Topics:
+
+    1.  Message One Subject (Sender)
+    2.  Message Two Subject (Sender)
+
+----------------------------------------------------------------------
+
+Date: ddd, dd mmm yy hh:mm:ss zzz
+From: NN1 <nn1 <at> nn1.com>
+Subject: Message One Subject
+
+This is message one.
+
+------------------------------
+
+Date: ddd, dd mmm yy hh:mm:ss zzz
+From: NN2 <nn2 <at> nn2.com>
+Subject: Message Two Subject
+
+This is message two.
+
+------------------------------
+
+Subject: Digest Footer
+
+End of Sbcl-help Digest, Vol 158, Issue 4
+*****************************************
+"
+  "RFC 1153 style digest, with a Subject header.")
+
+(defvar rmail-rfc1153-digest-sloppy "From tester  Fri Jan 24 00:00:00 2022
+From: Digester <digester <at> digester.com>
+To: Undigester <undigester <at> undigester.com>
+Date: ddd, dd mmm yy hh:mm:ss zzz
+Subject: Testing you
+
+Some mailing list information.
+
+Today's Topics:
+
+    1.  Message One Subject (Sender)
+    2.  Message Two Subject (Sender)
+
+----------------------------------------------------------------------
+
+Date: ddd, dd mmm yy hh:mm:ss zzz
+From: NN1 <nn1 <at> nn1.com>
+Subject: Message One Subject
+
+This is message one.
+
+------------------------------
+
+Date: ddd, dd mmm yy hh:mm:ss zzz
+From: NN2 <nn2 <at> nn2.com>
+Subject: Message Two Subject
+
+This is message two.
+
+------------------------------
+
+Subject: Digest Footer
+
+______________________________________________
+Some blurb.
+
+End of Digest.
+************************************
+"
+  "RFC 1153 sloppy style digest.")
+
+(defvar rmail-rfc1521-mime-digest "From tester  Fri Jan 24 00:00:00 2022
+From: Digester <digester <at> digester.com>
+To: Undigester <undigester <at> undigester.com>
+Date: ddd, dd mmm yy hh:mm:ss zzz
+Subject: Test digest
+MIME-Version: 1.0
+Content-Type: multipart/digest; boundary=\"----- =_aaaaaaaaaa0\"
+
+------- =_aaaaaaaaaa0
+Content-Type: message/rfc822
+
+From: NN1 <nn1 <at> nn1.com>
+To: Digester <digester <at> digester.com>
+Date: ddd, dd mmm yy hh:mm:ss zzz
+Subject: Message one
+
+Message one.
+
+------- =_aaaaaaaaaa0
+
+From: NN2 <nn2 <at> nn2.com>
+To: Digester <digester <at> digester.com>
+Date: ddd, dd mmm yy hh:mm:ss zzz
+Subject: Message two
+
+Message two.
+
+------- =_aaaaaaaaaa0
+"
+  "RFC 1521 style MIME digest.")
+
+(defvar rmail-multipart-mixed-digest
+  "From tester  Fri Jan 24 00:00:00 2022
+From: Digester <digester <at> digester.com>
+To: Undigester <undigester <at> undigester.com>
+Date: ddd, dd mmm yy hh:mm:ss zzz
+Subject: Test digest
+Content-Type: multipart/mixed; boundary=\"===============2529375068597856000==\"
+MIME-Version: 1.0
+
+--===============2529375068597856000==
+Content-Type: text/plain;
+MIME-Version: 1.0
+Content-Description: Today's Topics
+
+Some message.
+
+--===============2529375068597856000==
+Content-Type: multipart/digest; boundary=\"===============6060050777038710134==\"
+MIME-Version: 1.0
+
+--===============6060050777038710134==
+Content-Type: message/rfc822
+MIME-Version: 1.0
+
+From: NN1 <nn1 <at> nn1.com>
+To: Digester <digester <at> digester.com>
+Date: ddd, dd mmm yy hh:mm:ss zzz
+Subject: Message one
+
+Message one.
+
+--===============6060050777038710134==
+Content-Type: message/rfc822
+MIME-Version: 1.0
+
+From: NN2 <nn2 <at> nn2.com>
+To: Digester <digester <at> digester.com>
+Date: ddd, dd mmm yy hh:mm:ss zzz
+Subject: Message two
+
+Message two.
+
+--===============6060050777038710134==--
+
+--===============2529375068597856000==
+Content-Type: text/plain;
+MIME-Version: 1.0
+Content-Description: Digest Footer
+
+The footer.
+
+--===============2529375068597856000==--"
+  "RFC 1521 digest inside a multipart/mixed message.")
+
+;;; Utils:
+(defun rmail-message-content (message)
+  "Return the content of the message numbered MESSAGE."
+  (rmail-show-message message)
+  (let ((beg (rmail-msgbeg rmail-current-message))
+        (end (rmail-msgend rmail-current-message)))
+    (with-current-buffer rmail-view-buffer
+      (save-excursion
+	(goto-char beg)
+	(search-forward "\n\n" end nil)
+	(buffer-substring-no-properties (match-end 0) end)))))
+
+;;; Tests:
+(ert-deftest rmail-undigest-test-rfc934-digest ()
+  "Test that we can undigest a RFC 934 digest."
+  (let ((file (make-temp-file "undigest-test-")))
+    (with-temp-file file
+      (insert rmail-rfc934-digest)
+      (write-region nil nil file)
+      (rmail file)
+      (undigestify-rmail-message)
+      (should (= rmail-total-messages 4))
+      (should (string= (rmail-message-content 2) "Testing the undigester.\n\n"))
+      (should (string= (rmail-message-content 3) "This is message one.\n\n"))
+      (should (string= (rmail-message-content 4) "This is message two.\n")))))
+
+(ert-deftest rmail-undigest-test-rfc1153-digest-strict ()
+  "Test that we can undigest a strict RFC 1153 digest."
+  :expected-result :failed
+  (let ((file (make-temp-file "undigest-test-")))
+    (with-temp-file file
+      (insert rmail-rfc1153-digest-strict)
+      (write-region nil nil file)
+      (rmail file)
+      (should
+       (condition-case nil
+           (progn
+             ;; This throws an error, because the Trailer is not recognized
+             ;; as a valid RFC 822 (or later) message.
+             (undigestify-rmail-message)
+             (should (string= (rmail-message-content 2) "Testing the undigester.\n\n"))
+             (should (string= (rmail-message-content 3) "This is message one.\n\n"))
+             (should (string= (rmail-message-content 4) "This is message two.\n"))
+             t)
+         (error nil))))))
+
+(ert-deftest rmail-undigest-test-rfc1153-less-strict-digest ()
+  "Test that we can undigest a RFC 1153 with a Subject header in its footer."
+  (let ((file (make-temp-file "undigest-test-")))
+    (with-temp-file file
+      (insert rmail-rfc1153-digest-less-strict)
+      (write-region nil nil file)
+      (rmail file)
+      (undigestify-rmail-message)
+      (should (= rmail-total-messages 5))
+      (should (string= (rmail-message-content 3) "This is message one.\n\n"))
+      (should (string= (rmail-message-content 4) "This is message two.\n\n")))))
+
+(ert-deftest rmail-undigest-test-rfc1153-sloppy-digest ()
+  "Test that we can undigest a sloppy RFC 1153 digest."
+  (let ((file (make-temp-file "undigest-test-")))
+    (with-temp-file file
+      (insert rmail-rfc1153-digest-sloppy)
+      (write-region nil nil file)
+      (rmail file)
+      (undigestify-rmail-message)
+      (should (= rmail-total-messages 5))
+      (should (string= (rmail-message-content 3) "This is message one.\n\n"))
+      (should (string= (rmail-message-content 4) "This is message two.\n\n")))))
+
+;; This fails because `rmail-digest-parse-mime' combines the preamble with the
+;; first message of the digest.  And then, it doesn't get rid of the last
+;; separator.
+(ert-deftest rmail-undigest-test-rfc1521-mime-digest ()
+  "Test that we can undigest a RFC 1521 MIME digest."
+  :expected-result :failed
+  (let ((file (make-temp-file "undigest-test-")))
+    (with-temp-file file
+      (insert rmail-rfc1521-mime-digest)
+      (write-region nil nil file)
+      (rmail file)
+      (undigestify-rmail-message)
+      (should (= rmail-total-messages 3))
+      (should (string= (rmail-message-content 2) "Message one.\n\n"))
+      (should (string= (rmail-message-content 3) "Message two.\n\n")))))
+
+(ert-deftest rmail-undigest-test-multipart-mixed-digest ()
+  "Test that we can undigest a digest inside a multipart/mixed digest."
+  (let ((file (make-temp-file "undigest-test-")))
+    (with-temp-file file
+      (insert rmail-multipart-mixed-digest)
+      (write-region nil nil file)
+      (rmail file)
+      (undigestify-rmail-message)
+      (should (= rmail-total-messages 4))
+      (should (string= (rmail-message-content 2) "Message one.\n\n"))
+      (should (string= (rmail-message-content 3) "Message two.\n\n")))))
-- 
2.17.1


Added tag(s) patch. Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Wed, 23 Feb 2022 13:36:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12873; Package emacs. (Wed, 23 Mar 2022 19:44:01 GMT) Full text and rfc822 format available.

Message #39 received at 12873 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Mauro Aranda <maurooaranda <at> gmail.com>
Cc: Xavier Maillard <xavier <at> maillard.im>, 12873 <at> debbugs.gnu.org
Subject: Re: bug#12873: 24.2; undigestify-rmail-message in emacs 24.x still
 doesn't split a digest
Date: Wed, 23 Mar 2022 20:43:38 +0100
Mauro Aranda <maurooaranda <at> gmail.com> writes:

> I attach a first attempt to support bursting digests inside a
> multipart/mixed message.

Thanks; pushed to Emacs 29 with one change:

>  lisp/mail/undigest.el      |  50 +++++-
>  test/lisp/mail/undigest.el | 354 +++++++++++++++++++++++++++++++++++++

This is renamed to test/lisp/mail/undigest-tests.el.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




bug marked as fixed in version 29.1, send any further explanations to 12873 <at> debbugs.gnu.org and Xavier Maillard <xavier <at> maillard.im> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Wed, 23 Mar 2022 19:44:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12873; Package emacs. (Thu, 24 Mar 2022 12:45:02 GMT) Full text and rfc822 format available.

Message #44 received at 12873 <at> debbugs.gnu.org (full text, mbox):

From: Mauro Aranda <maurooaranda <at> gmail.com>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: xavier <at> maillard.im, 12873 <at> debbugs.gnu.org
Subject: Re: bug#12873: 24.2; undigestify-rmail-message in emacs 24.x still
 doesn't split a digest
Date: Thu, 24 Mar 2022 09:44:04 -0300
Lars Ingebrigtsen <larsi <at> gnus.org> writes:

> Mauro Aranda <maurooaranda <at> gmail.com> writes:
>
>> I attach a first attempt to support bursting digests inside a
>> multipart/mixed message.
>
> Thanks; pushed to Emacs 29 with one change:
>
>>  lisp/mail/undigest.el      |  50 +++++-
>>  test/lisp/mail/undigest.el | 354 +++++++++++++++++++++++++++++++++++++
>
> This is renamed to test/lisp/mail/undigest-tests.el.

Thanks.  I forgot about the suffix.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 22 Apr 2022 11:24:07 GMT) Full text and rfc822 format available.

This bug report was last modified 3 years and 120 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.