X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mime-def.el;h=b8f4513a4f4ea9f35ebe5947ae126181585c6d08;hb=37acaf15e2bf020073ad924b299c6f4bc28599e2;hp=357bf00c06770107756bb0d11bf725ef7882b42a;hpb=146fa4f6cfdd50c89fe31c222ffef2fc1fc18a33;p=elisp%2Fflim.git diff --git a/mime-def.el b/mime-def.el index 357bf00..b8f4513 100644 --- a/mime-def.el +++ b/mime-def.el @@ -24,7 +24,7 @@ ;;; Code: -(defconst mime-library-version-string "FLIM 1.5.0 - \"Mukaijima\"") +(defconst mime-library-version-string "FLIM 1.8.1 - \"Kutsukawa\"") ;;; @ variables @@ -52,6 +52,11 @@ :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 ;;; @@ -146,6 +151,14 @@ (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 ;;; @@ -166,49 +179,80 @@ (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) - (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 make-mime-entity-internal (representation-type + location + &optional content-type children + node-id + buffer + header-start header-end + body-start body-end) + (vector representation-type location + content-type children nil nil node-id + buffer header-start header-end body-start body-end + nil nil)) + +(defsubst mime-entity-representation-type-internal (entity) (aref entity 0)) +(defsubst mime-entity-location-internal (entity) (aref entity 1)) + +(defsubst mime-entity-content-type-internal (entity) (aref entity 2)) +(defsubst mime-entity-children-internal (entity) (aref entity 3)) +(defsubst mime-entity-content-disposition-internal (entity) (aref entity 4)) +(defsubst mime-entity-encoding-internal (entity) (aref entity 5)) +(defsubst mime-entity-node-id-internal (entity) (aref entity 6)) + +(defsubst mime-entity-buffer-internal (entity) (aref entity 7)) +(defsubst mime-entity-header-start-internal (entity) (aref entity 8)) +(defsubst mime-entity-header-end-internal (entity) (aref entity 9)) +(defsubst mime-entity-body-start-internal (entity) (aref entity 10)) +(defsubst mime-entity-body-end-internal (entity) (aref entity 11)) + +(defsubst mime-entity-original-header-internal (entity) (aref entity 12)) +(defsubst mime-entity-parsed-header-internal (entity) (aref entity 13)) + +(defsubst mime-entity-set-representation-type-internal (entity type) + (aset entity 0 type)) +(defsubst mime-entity-set-content-type-internal (entity type) + (aset entity 2 type)) +(defsubst mime-entity-set-children-internal (entity children) + (aset entity 3 children)) +(defsubst mime-entity-set-content-disposition-internal (entity disposition) + (aset entity 4 disposition)) +(defsubst mime-entity-set-encoding-internal (entity encoding) + (aset entity 5 encoding)) +(defsubst mime-entity-set-original-header-internal (entity header) + (aset entity 12 header)) +(defsubst mime-entity-set-parsed-header-internal (entity header) + (aset entity 13 header)) + + +;;; @ message structure ;;; -(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)))) +(defvar mime-message-structure nil + "Information about structure of message. +Please use reference function `mime-entity-SLOT' to get value of SLOT. + +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) + +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.") + +(make-variable-buffer-local 'mime-message-structure) ;;; @ end