From 7a5e5a138cc8b1fe1ae22bddb45b9da322b89816 Mon Sep 17 00:00:00 2001 From: Lars Magne Ingebrigtsen Date: Thu, 23 Sep 2010 19:27:14 +0200 Subject: [PATCH] (nnimap-transform-headers): Unfold quoted {42} headers. --- lisp/ChangeLog | 1 + lisp/nnimap.el | 18 +++++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 679db21ff..3bd7d504e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -2,6 +2,7 @@ * nnimap.el (nnimap-transform-headers): Don't bug out on invalid BODYSTRUCTUREs. + (nnimap-transform-headers): Unfold quoted {42} headers. * gnus-start.el (gnus-get-unread-articles): Allow backends to update the info. diff --git a/lisp/nnimap.el b/lisp/nnimap.el index a5ae4bec6..f927a8647 100644 --- a/lisp/nnimap.el +++ b/lisp/nnimap.el @@ -139,15 +139,22 @@ not done by default on servers that doesn't support that command.") (defun nnimap-transform-headers () (goto-char (point-min)) - (let (article bytes lines size) + (let (article bytes lines size string) (block nil (while (not (eobp)) (while (not (looking-at "^\\* [0-9]+ FETCH.*UID \\([0-9]+\\)")) (delete-region (point) (progn (forward-line 1) (point))) (when (eobp) (return))) - (setq article (match-string 1) - bytes (nnimap-get-length) + (setq article (match-string 1)) + ;; Unfold quoted {number} strings. + (while (re-search-forward "[^]] {\\([0-9]+\\)}\r\n" + (1+ (line-end-position)) t) + (setq size (string-to-number (match-string 1))) + (delete-region (+ (match-beginning 0) 2) (point)) + (setq string (delete-region (point) (+ (point) size))) + (insert (format "%S" string))) + (setq bytes (nnimap-get-length) lines nil) (beginning-of-line) (setq size @@ -158,10 +165,7 @@ not done by default on servers that doesn't support that command.") (beginning-of-line) (when (search-forward "BODYSTRUCTURE" (line-end-position) t) (let ((structure (ignore-errors - (save-restriction - (narrow-to-region - (point) (line-end-position)) - (read (current-buffer)))))) + (read (current-buffer))))) (while (and (consp structure) (not (stringp (car structure)))) (setq structure (car structure))) -- 2.25.1