changeset 16952:ba0d48943e13

(mail-fetch-field): New arg LIST.
author Richard M. Stallman <rms@gnu.org>
date Fri, 31 Jan 1997 09:34:45 +0000
parents 156fd377c7d0
children 46b39d9f3ad0
files lisp/mail/mail-utils.el
diffstat 1 files changed, 16 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mail/mail-utils.el	Fri Jan 31 07:48:16 1997 +0000
+++ b/lisp/mail/mail-utils.el	Fri Jan 31 09:34:45 1997 +0000
@@ -168,17 +168,18 @@
       userids)))
 
 ;;;###autoload
-(defun mail-fetch-field (field-name &optional last all)
+(defun mail-fetch-field (field-name &optional last all list)
   "Return the value of the header field FIELD-NAME.
 The buffer is expected to be narrowed to just the headers of the message.
 If second arg LAST is non-nil, use the last such field if there are several.
-If third arg ALL is non-nil, concatenate all such fields with commas between."
+If third arg ALL is non-nil, concatenate all such fields with commas between.
+If 4th arg LIST is non-nil, return a list of all such fields."
   (save-excursion
     (goto-char (point-min))
     (let ((case-fold-search t)
 	  (name (concat "^" (regexp-quote field-name) "[ \t]*:[ \t]*")))
-      (if all
-	  (let ((value ""))
+      (if (or all list)
+	  (let ((value (if all "")))
 	    (while (re-search-forward name nil t)
 	      (let ((opoint (point)))
 		(while (progn (forward-line 1)
@@ -186,11 +187,17 @@
 		;; Back up over newline, then trailing spaces or tabs
 		(forward-char -1)
 		(skip-chars-backward " \t" opoint)
-		(setq value (concat value
-				    (if (string= value "") "" ", ")
-				    (buffer-substring-no-properties
-				     opoint (point))))))
-	    (and (not (string= value "")) value))
+		(if list
+		    (setq value (cons (buffer-substring-no-properties
+				       opoint (point))
+				      value))
+		  (setq value (concat value
+				      (if (string= value "") "" ", ")
+				      (buffer-substring-no-properties
+				       opoint (point)))))))
+	    (if list
+		value
+	      (and (not (string= value "")) value)))
 	(if (re-search-forward name nil t)
 	    (progn
 	      (if last (while (re-search-forward name nil t)))