Merge from emacs--devo--0
[gnus] / lisp / ietf-drums.el
index d21c6e6..81d66aa 100644 (file)
@@ -1,13 +1,14 @@
 ;;; ietf-drums.el --- Functions for parsing RFC822bis headers
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
-;;        Free Software Foundation, Inc.
+
+;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+;;   2005, 2006, 2007 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; 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 2, or (at your option)
+;; the Free Software Foundation; either version 3, or (at your option)
 ;; any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
@@ -17,8 +18,8 @@
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
@@ -143,7 +144,7 @@ backslash and doublequote.")
          (forward-sexp 1))
         ((eq c ?\()
          (forward-sexp 1))
-        ((memq c '(? ?\t ?\n))
+        ((memq c '(? ?\t ?\n))
          (delete-char 1))
         (t
          (forward-char 1))))
@@ -199,7 +200,9 @@ backslash and doublequote.")
                  (buffer-substring
                   (1+ (point))
                   (progn (forward-sexp 1) (1- (point))))))))
-        (t (error "Unknown symbol: %c" c))))
+        (t
+         (message "Unknown symbol: %c" c)
+         (forward-char 1))))
       ;; If we found no display-name, then we look for comments.
       (if display-name
          (setq display-string
@@ -212,8 +215,10 @@ backslash and doublequote.")
             (ietf-drums-get-comment string)))
        (cons mailbox display-string)))))
 
-(defun ietf-drums-parse-addresses (string)
-  "Parse STRING and return a list of MAILBOX / DISPLAY-NAME pairs."
+(defun ietf-drums-parse-addresses (string &optional rawp)
+  "Parse STRING and return a list of MAILBOX / DISPLAY-NAME pairs.
+If RAWP, don't actually parse the addresses, but instead return
+a list of address strings."
   (if (null string)
       nil
     (with-temp-buffer
@@ -230,20 +235,24 @@ backslash and doublequote.")
               (skip-chars-forward "^,"))))
           ((eq c ?,)
            (setq address
-                 (condition-case nil
-                     (ietf-drums-parse-address
-                      (buffer-substring beg (point)))
-                   (error nil)))
+                 (if rawp
+                     (buffer-substring beg (point))
+                   (condition-case nil
+                       (ietf-drums-parse-address
+                        (buffer-substring beg (point)))
+                     (error nil))))
            (if address (push address pairs))
            (forward-char 1)
            (setq beg (point)))
           (t
            (forward-char 1))))
        (setq address
-             (condition-case nil
-                 (ietf-drums-parse-address
-                  (buffer-substring beg (point)))
-               (error nil)))
+             (if rawp
+                 (buffer-substring beg (point))
+               (condition-case nil
+                   (ietf-drums-parse-address
+                    (buffer-substring beg (point)))
+                 (error nil))))
        (if address (push address pairs))
        (nreverse pairs)))))