(make-mime-entity-internal): Delete argument `content-disposition'.
[elisp/flim.git] / mime-parse.el
index 69e91b4..cbe3c02 100644 (file)
@@ -150,14 +150,11 @@ If is is not found, return DEFAULT-ENCODING."
 ;;; @ message parser
 ;;;
 
-(defun mime-parse-multipart (header-start header-end body-start body-end
-                                         content-type content-disposition
-                                         encoding node-id)
+(defun mime-parse-multipart (entity)
   (goto-char (point-min))
-  (let* ((dash-boundary
-         (concat "--"
-                 (std11-strip-quoted-string
-                  (mime-content-type-parameter content-type "boundary"))))
+  (let* ((content-type (mime-entity-content-type-internal entity))
+        (dash-boundary
+         (concat "--" (mime-content-type-parameter content-type "boundary")))
         (delimiter       (concat "\n" (regexp-quote dash-boundary)))
         (close-delimiter (concat delimiter "--[ \t]*$"))
         (rsep (concat delimiter "[ \t]*\n"))
@@ -166,6 +163,9 @@ If is is not found, return DEFAULT-ENCODING."
              (make-mime-content-type 'message 'rfc822)
            (make-mime-content-type 'text 'plain)
            ))
+        (header-end (mime-entity-header-end-internal entity))
+        (body-end (mime-entity-body-end-internal entity))
+        (node-id (mime-entity-node-id-internal entity))
         cb ce ret ncb children (i 0))
     (save-restriction
       (goto-char body-end)
@@ -194,11 +194,19 @@ If is is not found, return DEFAULT-ENCODING."
        )
       (setq children (cons ret children))
       )
-    (make-mime-entity (current-buffer)
-                     header-start header-end body-start body-end
-                     node-id content-type content-disposition encoding
-                     (nreverse children))
-    ))
+    (mime-entity-set-children-internal entity (nreverse children))
+    entity))
+
+(defun mime-parse-encapsulated (entity)
+  (mime-entity-set-children-internal
+   entity
+   (save-restriction
+     (narrow-to-region (mime-entity-body-start-internal entity)
+                      (mime-entity-body-end-internal entity))
+     (list (mime-parse-message
+           nil nil (cons 0 (mime-entity-node-id-internal entity))))
+     ))
+  entity)
 
 ;;;###autoload
 (defun mime-parse-message (&optional default-ctl default-encoding node-id)
@@ -211,7 +219,8 @@ mime-{parse|read}-Content-Type."
        body-start
        (body-end (point-max))
        content-type content-disposition encoding
-       primary-type)
+       primary-type
+       entity)
     (goto-char header-start)
     (if (re-search-forward "^$" nil t)
        (setq header-end (match-end 0)
@@ -239,33 +248,20 @@ mime-{parse|read}-Content-Type."
                         default-encoding))
            primary-type (mime-content-type-primary-type content-type))
       )
+    (setq entity
+         (make-mime-entity-internal
+          (current-buffer) header-start header-end body-start body-end
+          node-id content-type content-disposition encoding nil))
     (cond ((eq primary-type 'multipart)
-          (mime-parse-multipart header-start header-end
-                                body-start body-end
-                                content-type content-disposition encoding
-                                node-id)
+          (mime-parse-multipart entity)
           )
          ((and (eq primary-type 'message)
                (memq (mime-content-type-subtype content-type)
                      '(rfc822 news external-body)
                      ))
-           (make-mime-entity (current-buffer)
-                            header-start header-end body-start body-end
-                            node-id
-                            content-type content-disposition encoding
-                            (save-restriction
-                              (narrow-to-region body-start body-end)
-                              (list (mime-parse-message
-                                     nil nil (cons 0 node-id)))
-                              ))
+          (mime-parse-encapsulated entity)
           )
-         (t 
-           (make-mime-entity (current-buffer)
-                            header-start header-end body-start body-end
-                            node-id
-                            content-type content-disposition encoding nil)
-          ))
-    ))
+         (t entity))))
 
 
 ;;; @ for buffer