;;; Code:
-(defconst mime-spadework-module-version-string
- "FLIM 1.2.0 - \"J\e-Dþjò\" ")\e-A
+(defconst mime-library-version-string "FLIM 1.5.0 - \"Mukaijima\"")
;;; @ variables
(require 'custom)
+(eval-when-compile (require 'cl))
+
(defgroup mime nil
"Emacs MIME Interfaces"
:group 'news
(substring string (match-end 0))
string))
+(defsubst regexp-* (regexp)
+ (concat regexp "*"))
+
+(defsubst regexp-or (&rest args)
+ (concat "\\(" (mapconcat (function identity) args "\\|") "\\)"))
+
-;;; @ definitions about MIME
+;;; @ about STD 11
+;;;
+
+(defconst std11-quoted-pair-regexp "\\\\.")
+(defconst std11-non-qtext-char-list '(?\" ?\\ ?\r ?\n))
+(defconst std11-qtext-regexp
+ (concat "[^" (char-list-to-string std11-non-qtext-char-list) "]"))
+(defconst std11-quoted-string-regexp
+ (concat "\""
+ (regexp-*
+ (regexp-or std11-qtext-regexp std11-quoted-pair-regexp))
+ "\""))
+
+
+;;; @ about MIME
;;;
(defconst mime-tspecials "][()<>@,\;:\\\"/?=")
"][" quoted-printable-hex-chars "]"))
+;;; @ MIME-entity
+;;;
+
+(defsubst make-mime-entity (buffer
+ header-start header-end body-start body-end
+ &optional node-id
+ content-type content-disposition
+ encoding children)
+ (vector buffer header-start header-end body-start body-end
+ node-id content-type content-disposition encoding nil
+ children nil))
+
+(defsubst mime-entity-buffer (entity) (aref entity 0))
+(defsubst mime-entity-header-start (entity) (aref entity 1))
+(defsubst mime-entity-header-end (entity) (aref entity 2))
+(defsubst mime-entity-body-start (entity) (aref entity 3))
+(defsubst mime-entity-body-end (entity) (aref entity 4))
+(defsubst mime-entity-node-id (entity) (aref entity 5))
+(defsubst mime-entity-content-type (entity) (aref entity 6))
+(defsubst mime-entity-content-disposition (entity) (aref entity 7))
+(defsubst mime-entity-encoding (entity) (aref entity 8))
+(defsubst mime-entity-original-header (entity) (aref entity 9))
+(defsubst mime-entity-children (entity) (aref entity 10))
+(defsubst mime-entity-parsed-header (entity) (aref entity 11))
+
+(defsubst mime-entity-set-original-header (entity header)
+ (aset entity 9 header))
+(defsubst mime-entity-set-parsed-header (entity header)
+ (aset entity 11 header))
+
+(defsubst mime-entity-number (entity)
+ (reverse (mime-entity-node-id entity)))
+
+
;;; @ utility
;;;