;;; Code:
-(defconst mime-library-version-string "FLIM 1.5.0 - \"Mukaijima\"")
+(defconst mime-library-version-string "Chao 1.6.1 - \"Ky\e,Dr\e(Bto\"")
;;; @ variables
:group 'mime
:type 'directory)
+(defcustom mime-uuencode-encoding-name-list '("x-uue" "x-uuencode")
+ "*List of encoding names for uuencode format."
+ :group 'mime
+ :type '(repeat string))
+
;;; @ required functions
;;;
(cdr (assoc parameter (mime-content-type-parameters content-type))))
+(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))))
+
+
;;; @ Content-Disposition
;;;
(mime-content-disposition-parameter content-disposition "filename"))
-;;; @ MIME-entity
+;;; @ MIME entity
;;;
-(defsubst make-mime-entity (buffer
- header-start header-end body-start body-end
- &optional node-id
- content-type content-disposition
- encoding children)
+(defsubst make-mime-entity-internal (buffer
+ header-start header-end
+ body-start body-end
+ &optional node-id
+ content-type encoding children)
(vector buffer header-start header-end body-start body-end
- node-id content-type content-disposition encoding nil
+ node-id content-type nil 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)
+(defsubst mime-entity-buffer-internal (entity) (aref entity 0))
+(defsubst mime-entity-header-start-internal (entity) (aref entity 1))
+(defsubst mime-entity-header-end-internal (entity) (aref entity 2))
+(defsubst mime-entity-body-start-internal (entity) (aref entity 3))
+(defsubst mime-entity-body-end-internal (entity) (aref entity 4))
+(defsubst mime-entity-node-id-internal (entity) (aref entity 5))
+(defsubst mime-entity-content-type-internal (entity) (aref entity 6))
+(defsubst mime-entity-content-disposition-internal (entity) (aref entity 7))
+(defsubst mime-entity-encoding-internal (entity) (aref entity 8))
+(defsubst mime-entity-original-header-internal (entity) (aref entity 9))
+(defsubst mime-entity-children-internal (entity) (aref entity 10))
+(defsubst mime-entity-parsed-header-internal (entity) (aref entity 11))
+
+(defsubst mime-entity-set-content-disposition-internal (entity disposition)
+ (aset entity 7 disposition))
+(defsubst mime-entity-set-original-header-internal (entity header)
+ (aset entity 9 header))
+(defsubst mime-entity-set-children-internal (entity children)
+ (aset entity 10 children))
+(defsubst mime-entity-set-parsed-header-internal (entity header)
(aset entity 11 header))
-(defsubst mime-entity-number (entity)
- (reverse (mime-entity-node-id entity)))
-(defalias 'mime-entity-point-min 'mime-entity-header-start)
-(defalias 'mime-entity-point-max 'mime-entity-body-end)
+;;; @ message structure
+;;;
-(defsubst mime-entity-media-type (entity)
- (mime-content-type-primary-type (mime-entity-content-type entity)))
-(defsubst mime-entity-media-subtype (entity)
- (mime-content-type-subtype (mime-entity-content-type entity)))
-(defsubst mime-entity-parameters (entity)
- (mime-content-type-parameters (mime-entity-content-type entity)))
+(defvar mime-message-structure nil
+ "Information about structure of message.
+Please use reference function `mime-entity-SLOT' to get value of SLOT.
-(defsubst mime-entity-type/subtype (entity-info)
- (mime-type/subtype-string (mime-entity-media-type entity-info)
- (mime-entity-media-subtype entity-info)))
+Following is a list of slots of the structure:
+buffer buffer includes this entity (buffer).
+node-id node-id (list of integers)
+header-start minimum point of header in raw-buffer
+header-end maximum point of header in raw-buffer
+body-start minimum point of body in raw-buffer
+body-end maximum point of body in raw-buffer
+content-type content-type (content-type)
+content-disposition content-disposition (content-disposition)
+encoding Content-Transfer-Encoding (string or nil)
+children entities included in this entity (list of entity)
-;;; @ utility
-;;;
+If an entity includes other entities in its body, such as multipart or
+message/rfc822, `mime-entity' structures of them are included in
+`children', so the `mime-entity' structure become a tree.")
-(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))))
+(make-variable-buffer-local 'mime-message-structure)
;;; @ end