(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
;;;
(defun std11-unfold-string (string)
- "Unfold STRING as message header field. [std11.el]"
- (let ((dest ""))
- (while (string-match "\n\\([ \t]\\)" string)
+ "Unfold STRING as message header field."
+ (let ((dest "")
+ (p 0))
+ (while (string-match "\n\\([ \t]\\)" string p)
(setq dest (concat dest
- (substring string 0 (match-beginning 0))
- (match-string 1 string)
+ (substring string p (match-beginning 0))
+ (substring string
+ (match-beginning 1)
+ (setq p (match-end 0)))
))
- (setq string (substring string (match-end 0)))
)
- (concat dest string)
+ (concat dest (substring string p))
))
(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
;;;