;;; Code:
-(defconst mime-spadework-module-version-string
- "FLIM 1.1.1 - \"Kamitoba-guchi\"")
+(defconst mime-library-version-string "FLIM 1.4.0 - \"Kintetsu-Tanbabashi\"")
+
+
+;;; @ variables
+;;;
(require 'custom)
(custom-handle-keyword 'default-mime-charset :group 'mime
'custom-variable)
+(defcustom mime-temp-directory (or (getenv "MIME_TMP_DIR")
+ (getenv "TM_TMP_DIR")
+ (getenv "TMPDIR")
+ (getenv "TMP")
+ (getenv "TEMP")
+ "/tmp/")
+ "*Directory for temporary files."
+ :group 'mime
+ :type 'directory)
+
+
+;;; @ required functions
+;;;
+
(unless (fboundp 'butlast)
(defun butlast (x &optional n)
"Returns a copy of LIST with the last N elements removed."
(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
+;;;
+
+(defsubst mime-type/subtype-string (type &optional subtype)
+ "Return type/subtype string from TYPE and SUBTYPE."
+ (if type
+ (if subtype
+ (format "%s/%s" type subtype)
+ (format "%s" type))))
+
+
;;; @ end
;;;