Change `make-mime-entity-internal', `mime-entity-*-internal' and
[elisp/flim.git] / std11.el
index f36830d..d62b88b 100644 (file)
--- a/std11.el
+++ b/std11.el
   (point)
   )
 
+(defsubst std11-fetch-field (name)
+  "Return the value of the header field NAME.
+The buffer is expected to be narrowed to just the headers of the message."
+  (save-excursion
+    (goto-char (point-min))
+    (let ((case-fold-search t))
+      (if (re-search-forward (concat "^" name ":[ \t]*") nil t)
+         (buffer-substring-no-properties (match-end 0) (std11-field-end))
+       ))))
+
 (defun std11-field-body (name &optional boundary)
-  "Return body of field NAME.
-If BOUNDARY is not nil, it is used as message header separator.
-\[std11.el]"
+  "Return the value of the header field NAME.
+If BOUNDARY is not nil, it is used as message header separator."
   (save-excursion
     (save-restriction
       (std11-narrow-to-header boundary)
-      (goto-char (point-min))
-      (let ((case-fold-search t))
-       (if (re-search-forward (concat "^" name ":[ \t]*") nil t)
-           (buffer-substring-no-properties (match-end 0) (std11-field-end))
-         )))))
+      (std11-fetch-field name)
+      )))
 
 (defun std11-find-field-body (field-names &optional boundary)
   "Return the first found field-body specified by FIELD-NAMES
@@ -677,6 +683,21 @@ If BOUNDARY is not nil, it is used as message header separator.
              (cdr ret))
       )))
 
+(defun std11-parse-in-reply-to (tokens)
+  "Parse lexical TOKENS as In-Reply-To field, and return the result."
+  (let ((ret (or (std11-parse-msg-id tokens)
+                (std11-parse-phrase tokens))))
+    (if ret
+       (let ((dest (list (car ret))))
+         (setq tokens (cdr ret))
+         (while (setq ret (or (std11-parse-msg-id tokens)
+                              (std11-parse-phrase tokens)))
+           (setq dest (cons (car ret) dest))
+           (setq tokens (cdr ret))
+           )
+         (nreverse dest)
+         ))))
+
 
 ;;; @ composer
 ;;;