|
|
1.1 ! root 1: ;; "RMAIL" mail reader for Emacs. ! 2: ;; Copyright (C) 1985, 1986 Free Software Foundation, Inc. ! 3: ! 4: ;; This file is part of GNU Emacs. ! 5: ! 6: ;; GNU Emacs is distributed in the hope that it will be useful, ! 7: ;; but WITHOUT ANY WARRANTY. No author or distributor ! 8: ;; accepts responsibility to anyone for the consequences of using it ! 9: ;; or for whether it serves any particular purpose or works at all, ! 10: ;; unless he says so in writing. Refer to the GNU Emacs General Public ! 11: ;; License for full details. ! 12: ! 13: ;; Everyone is granted permission to copy, modify and redistribute ! 14: ;; GNU Emacs, but only under the conditions described in the ! 15: ;; GNU Emacs General Public License. A copy of this license is ! 16: ;; supposed to have been given to you along with GNU Emacs so you ! 17: ;; can know your rights and responsibilities. It should be in a ! 18: ;; file named COPYING. Among other things, the copyright notice ! 19: ;; and this notice must be preserved on all copies. ! 20: ! 21: ;; note Interent RFP934 ! 22: ! 23: (defun undigestify-rmail-message () ! 24: "Break up a digest message into its constituent messages. ! 25: Leaves original message, deleted, before the undigestified messages." ! 26: (interactive) ! 27: (widen) ! 28: (let ((buffer-read-only nil) ! 29: (msg-string (buffer-substring (rmail-msgbeg rmail-current-message) ! 30: (rmail-msgend rmail-current-message)))) ! 31: (goto-char (rmail-msgend rmail-current-message)) ! 32: (narrow-to-region (point) (point)) ! 33: (insert msg-string) ! 34: (narrow-to-region (point-min) (1- (point-max)))) ! 35: (let ((error t) ! 36: (buffer-read-only nil)) ! 37: (unwind-protect ! 38: (progn ! 39: (save-restriction ! 40: (goto-char (point-min)) ! 41: (delete-region (point-min) ! 42: (progn (search-forward "\n*** EOOH ***\n") ! 43: (point))) ! 44: (insert "\^_\^L\n0, unseen,,\n*** EOOH ***\n") ! 45: (narrow-to-region (point) ! 46: (point-max)) ! 47: (let* ((fill-prefix "") ! 48: (case-fold-search t) ! 49: (digest-name ! 50: (mail-strip-quoted-names ! 51: (or (save-restriction ! 52: (search-forward "\n\n") ! 53: (narrow-to-region (point-min) (point)) ! 54: (goto-char (point-max)) ! 55: (or (mail-fetch-field "Reply-To") ! 56: (mail-fetch-field "To") ! 57: (mail-fetch-field "Apparently-To"))) ! 58: (error "Message is not a digest"))))) ! 59: (save-excursion ! 60: (goto-char (point-max)) ! 61: (skip-chars-backward " \t\n") ! 62: (let ((count 10) found) ! 63: ;; compensate for broken un*x digestifiers. Sigh Sigh. ! 64: (while (and (> count 0) (not found)) ! 65: (forward-line -1) ! 66: (setq count (1- count)) ! 67: (if (looking-at (concat "End of.*Digest.*\n" ! 68: (regexp-quote "*********") "*" ! 69: "\\(\n------*\\)*")) ! 70: (setq found t))) ! 71: (if (not found) (error "Message is not a digest")))) ! 72: (re-search-forward (concat "^" (make-string 55 ?-) "-*\n*")) ! 73: (replace-match "\^_\^L\n0, unseen,,\n*** EOOH ***\n") ! 74: (save-restriction ! 75: (narrow-to-region (point) ! 76: (progn (search-forward "\n\n") ! 77: (point))) ! 78: (if (mail-fetch-field "To") nil ! 79: (goto-char (point-min)) ! 80: (insert "To: " digest-name "\n"))) ! 81: (while (re-search-forward ! 82: (concat "\n\n" (make-string 27 ?-) "-*\n*") ! 83: nil t) ! 84: (replace-match "\n\n\^_\^L\n0, unseen,,\n*** EOOH ***\n") ! 85: (save-restriction ! 86: (if (looking-at "End ") ! 87: (insert "To: " digest-name "\n\n") ! 88: (narrow-to-region (point) ! 89: (progn (search-forward "\n\n" ! 90: nil 'move) ! 91: (point)))) ! 92: (if (mail-fetch-field "To") nil ! 93: (goto-char (point-min)) ! 94: (insert "To: " digest-name "\n")))))) ! 95: (setq error nil) ! 96: (message "Message successfully undigestified") ! 97: (let ((n rmail-current-message)) ! 98: (rmail-forget-messages) ! 99: (rmail-show-message n) ! 100: (rmail-delete-forward))) ! 101: (cond (error ! 102: (narrow-to-region (point-min) (1+ (point-max))) ! 103: (delete-region (point-min) (point-max)) ! 104: (rmail-show-message rmail-current-message)))))) ! 105:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.