(std11-field-names): New function.
authormorioka <morioka>
Wed, 28 Aug 1996 13:03:23 +0000 (13:03 +0000)
committermorioka <morioka>
Wed, 28 Aug 1996 13:03:23 +0000 (13:03 +0000)
std11.el

index fef8ca0..36ffe43 100644 (file)
--- a/std11.el
+++ b/std11.el
@@ -4,7 +4,7 @@
 
 ;; Author:   MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Keywords: mail, news, RFC 822, STD 11
-;; Version: $Id: std11.el,v 0.3 1996-08-28 12:41:58 morioka Exp $
+;; Version: $Id: std11.el,v 0.4 1996-08-28 13:03:23 morioka Exp $
 
 ;; This file is part of tl (Tiny Library).
 
@@ -25,7 +25,8 @@
 
 ;;; Code:
 
-(require 'emu)
+(autoload 'buffer-substring-no-properties "emu")
+(autoload 'member "emu")
 
 
 ;;; @ field
@@ -33,9 +34,9 @@
 
 (defconst std11-field-name-regexp "[!-9;-~]+")
 (defconst std11-field-head-regexp
-  (concat "\\(" std11-field-name-regexp "\\):"))
+  (concat "^" std11-field-name-regexp ":"))
 (defconst std11-next-field-head-regexp
-  (concat "\n" std11-field-head-regexp))
+  (concat "\n" std11-field-name-regexp ":"))
 
 (defun std11-field-body (name &optional boundary)
   (save-excursion
 ;;; @ header
 ;;;
 
+(defun std11-narrow-to-header (&optional boundary)
+  (narrow-to-region
+   (goto-char (point-min))
+   (if (re-search-forward
+       (concat "^\\(" (regexp-quote (or boundary "")) "\\)?$")
+       nil t)
+       (match-beginning 0)
+     (point-max)
+     )))
+
 (defun std11-header-string (pat &optional boundary)
   (let ((case-fold-search t))
     (save-excursion
          header)
        ))))
 
-(defun std11-narrow-to-header (&optional boundary)
-  (narrow-to-region
-   (goto-char (point-min))
-   (if (re-search-forward
-       (concat "^\\(" (regexp-quote (or boundary "")) "\\)?$")
-       nil t)
-       (match-beginning 0)
-     (point-max)
-     )))
+(defun std11-field-names (&optional boundary)
+  (save-excursion
+    (save-restriction
+      (std11-narrow-to-header boundary)
+      (goto-char (point-min))
+      (let (dest name)
+       (while (re-search-forward std11-field-head-regexp nil t)
+         (setq name (buffer-substring-no-properties
+                     (match-beginning 0)(1- (match-end 0))))
+         (or (member name dest)
+             (setq dest (cons name dest))
+             )
+         )
+       dest))))
 
 
 ;;; @ end