From 3445bf7ab6b7c768558e2d51af0a7f7d1c3fff05 Mon Sep 17 00:00:00 2001 From: morioka Date: Thu, 18 Jun 1998 12:29:55 +0000 Subject: [PATCH] Sync up with remi-1_6_9. --- ChangeLog | 177 ++++++++++++++++++++++++++++ SEMI-naming.ol | 41 +++++++ VERSION | 2 +- mime-parse.el | 348 -------------------------------------------------------- 4 files changed, 219 insertions(+), 349 deletions(-) create mode 100644 SEMI-naming.ol delete mode 100644 mime-parse.el diff --git a/ChangeLog b/ChangeLog index dabb12d..ab1a8d1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,180 @@ +1998-06-17 MORIOKA Tomohiko + + * mime-edit.el, mime-view.el, semi-def.el: Rename + `mime-module-version' to `mime-user-interface-version'. + + * mime-parse.el, SEMI-ELS: Move mime-parse.el to FLIM layer. + +1998-06-17 MORIOKA Tomohiko + + * semi-setup.el (call-after-loaded): Moved from semi-def.el. + + * semi-def.el: Move `call-after-loaded' to semi-setup.el. + +1998-06-17 MORIOKA Tomohiko + + * mime-view.el (mime-view-insert-entity-button): Change interface. + +1998-06-17 MORIOKA Tomohiko + + * mime-view.el (mime-entity-filename): Moved from mime-play.el. + (mime-view-entity-title): Use `mime-entity-filename'. + + * mime-play.el: Move `mime-entity-filename' to mime-view.el. + +1998-06-17 MORIOKA Tomohiko + + * mime-play.el (mime-entity-filename): New function; abolish + `mime-raw-get-original-filename'. + (mime-entity-safe-filename): New function; abolish + `mime-raw-get-filename'. + (mime-activate-mailcap-method): Use `mime-entity-safe-filename'. + (mime-save-content): Use `mime-entity-safe-filename'. + (mime-detect-content): Use `mime-entity-safe-filename'. + + * mime-view.el (mime-entity-uu-filename): New function; abolish + `mime-raw-get-uu-filename'. + +1998-06-17 MORIOKA Tomohiko + + * mime-view.el (mime-view-entity-title): Renamed from + `mime-raw-get-subject'; use `mime-entity-read-field'. + +1998-06-17 MORIOKA Tomohiko + + * NEWS (Changes in SEMI 1.7): New chapter. + (Changes in SEMI 1.6): Add description of entity-detection. + +1998-06-17 MORIOKA Tomohiko + + * mime-view.el: Rename `mime-view-following-method-alist' to + `mime-preview-following-method-alist'. + +1998-06-17 MORIOKA Tomohiko + + * semi-setup.el, mime-pgp.el: Rename + `mime-method-to-add-application/pgp-keys' to + `mime-add-application/pgp-keys'. + + * semi-setup.el, mime-pgp.el: Rename + `mime-method-to-decrypt-application/pgp-encrypted' to + `mime-decrypt-application/pgp-encrypted'. + + * semi-setup.el, mime-pgp.el: Rename + `mime-method-to-verify-application/pgp-signature' to + `mime-verify-application/pgp-signature'. + + * semi-setup.el, mime-pgp.el: Rename + `mime-method-to-verify-multipart/signed' to + `mime-verify-multipart/signed'. + + * semi-setup.el, mime-pgp.el: Rename + `mime-method-for-application/pgp' to `mime-view-application/pgp'. + + * SEMI-naming.ol: New file. + +1998-06-16 MORIOKA Tomohiko + + * mime-partial.el: Rename + `mime-method-to-combine-message/partial-pieces' to + `mime-combine-message/partial-pieces-automatically'. + +1998-06-16 MORIOKA Tomohiko + + * mime-play.el, mime-view.el: Rename + `mime-method-to-display-caesar' to `mime-view-caesar'. + + * mime-play.el, mime-view.el: Rename + `mime-method-to-display-message/external-ftp' to + `mime-view-message/external-ftp'. + +1998-06-16 MORIOKA Tomohiko + + * mime-view.el, mime-partial.el, mime-play.el: Rename + `mime-method-to-store-message/partial' to + `mime-store-message/partial-piece'. + +1998-06-16 MORIOKA Tomohiko + + * mime-play.el, mime-view.el: Rename + `mime-method-to-display-message/rfc822' to + `mime-view-message/rfc822'. + +1998-06-16 MORIOKA Tomohiko + + * mime-play.el, mime-view.el: Rename `mime-method-to-detect' to + `mime-detect-content'. + +1998-06-16 MORIOKA Tomohiko + + * mime-view.el (mime-display-entity): Abolish body-filter support. + + * mime-play.el, mime-view.el: Rename `mime-method-to-save' to + `mime-save-content'. + +1998-06-16 MORIOKA Tomohiko + + * mime-play.el (mime-activate-mailcap-method): Fixed. + +1998-06-16 MORIOKA Tomohiko + + * mime-image.el (mime-display-image): New function; abolish + function `mime-preview-filter-for-image'. + + * mime-image.el: Rename `mime-view-content-header-filter-hook' to + `mime-display-header-hook'. + + * mime-view.el (mime-display-entity): Run + `mime-display-header-hook'. + + * mime-text.el, mime-view.el: Rename `mime-preview-text/enriched' + to `mime-display-text/enriched'. + + * mime-text.el, mime-view.el: Rename `mime-preview-text/richtext' + to `mime-display-text/richtext'. + + * mime-text.el, mime-view.el: Rename `mime-preview-text/plain' to + `mime-display-text/plain'. + + * mime-view.el (mime-display-multipart/mixed): Renamed from + `mime-preview-multipart/mixed'. + + * mime-view.el (mime-display-multipart/alternative): Renamed from + `mime-preview-multipart/alternative'. + + * mime-view.el (mime-display-message/partial-button): Renamed from + `mime-preview-message/partial-button'. + + * mime-view.el (mime-display-entity): Renamed from + `mime-view-display-entity'; change interface. + (mime-display-message): Renamed from `mime-view-display-message'. + +1998-06-16 MORIOKA Tomohiko + + * README.en (Required environment): Modify for FLIM 1.4.0. + +1998-06-16 MORIOKA Tomohiko + + * mime-parse.el: Move function `mime-entity-number' to FLIM layer. + +1998-06-16 MORIOKA Tomohiko + + * mime-view.el (mime-header-presentation-method-alist): New + variable; abolish variable + `mime-view-content-header-filter-alist'; abolish function + `mime-view-cut-header'; abolish variable + `mime-view-ignored-field-regexp'. + (mime-view-display-entity): Use + `mime-header-presentation-method-alist'. + + * mime-parse.el: Move definition of structure `mime-entity' to + FLIM layer. + +1998-06-16 MORIOKA Tomohiko + + * mime-parse.el: Change order of `mime-entity'. + + 1998-06-15 MORIOKA Tomohiko * SEMI: Version 1.6.0 (Namerikawa) released. diff --git a/SEMI-naming.ol b/SEMI-naming.ol new file mode 100644 index 0000000..746e1f4 --- /dev/null +++ b/SEMI-naming.ol @@ -0,0 +1,41 @@ +* MIME-View + +** mime-entity-* + + mime-entity related functions. + + +** mime-raw-* + + mime-raw-buffer related features. + + - buffer local variables in mime-raw-buffer + + - functions expected running in mime-raw-buffer + + +** mime-preview-* + + mime-preview-buffer related features. + + - buffer local variables in mime-preview-buffer + + - functions expected running in mime-preview-buffer + + +** mime-display-* + + - functions to make presentation in mime-preview-buffer from + element(s) of mime-raw-buffer + + +** mime-view-* + + MIME-View related general features. + + - variables or functions related with both mime-raw-buffer and + mime-preview-buffer + + - customizable variables + + - view something and enter another mode in another buffer diff --git a/VERSION b/VERSION index 3f95466..60486e5 100644 --- a/VERSION +++ b/VERSION @@ -56,7 +56,7 @@ 1.5.3 Uozu $(B5{DE(B ; <=> $(BIY;3COJ}E4F;(B 1.5.4 Higashi-Namerikawa $(BEl3j@n(B 1.6.0 Namerikawa $(B3j@n(B ; <=> $(BIY;3COJ}E4F;(B ------ Mizuhashi $(B?e66(B +1.7.0 Mizuhashi $(B?e66(B ----- Higashi-Toyama $(BElIY;3(B ----- Toyama $(BIY;3(B ; = JR $(B9b;3K\@~!"IY;39A@~(B : : : diff --git a/mime-parse.el b/mime-parse.el deleted file mode 100644 index 213563c..0000000 --- a/mime-parse.el +++ /dev/null @@ -1,348 +0,0 @@ -;;; mime-parse.el --- MIME message parser - -;; Copyright (C) 1994,1995,1996,1997,1998 Free Software Foundation, Inc. - -;; Author: MORIOKA Tomohiko -;; Keywords: parse, MIME, multimedia, mail, news - -;; This file is part of SEMI (Spadework for Emacs MIME Interfaces). - -;; This program is free software; you can redistribute it and/or -;; modify it under the terms of the GNU General Public License as -;; published by the Free Software Foundation; either version 2, or (at -;; your option) any later version. - -;; This program is distributed in the hope that it will be useful, but -;; WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;; General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Code: - -(require 'emu) -(require 'std11) -(require 'mime-def) - - -;;; @ field parser -;;; - -(defconst mime/content-parameter-value-regexp - (concat "\\(" - std11-quoted-string-regexp - "\\|[^; \t\n]*\\)")) - -(defconst mime::parameter-regexp - (concat "^[ \t]*\;[ \t]*\\(" mime-token-regexp "\\)" - "[ \t]*=[ \t]*\\(" mime/content-parameter-value-regexp "\\)")) - -(defun mime-parse-parameter (str) - (if (string-match mime::parameter-regexp str) - (let ((e (match-end 2))) - (cons - (cons (downcase (substring str (match-beginning 1) (match-end 1))) - (std11-strip-quoted-string - (substring str (match-beginning 2) e)) - ) - (substring str e) - )))) - - -;;; @ Content-Type -;;; - -(defsubst make-mime-content-type (type subtype &optional parameters) - (list* (cons 'type type) - (cons 'subtype subtype) - (nreverse parameters)) - ) - -(defun mime-parse-Content-Type (string) - "Parse STRING as field-body of Content-Type field. -Return value is - (PRIMARY-TYPE SUBTYPE (NAME1 . VALUE1)(NAME2 . VALUE2) ...) -or nil. PRIMARY-TYPE and SUBTYPE are symbol and NAME_n and VALUE_n -are string." - (setq string (std11-unfold-string string)) - (if (string-match `,(concat "^\\(" mime-token-regexp - "\\)/\\(" mime-token-regexp "\\)") string) - (let* ((type (downcase - (substring string (match-beginning 1) (match-end 1)))) - (subtype (downcase - (substring string (match-beginning 2) (match-end 2)))) - ret dest) - (setq string (substring string (match-end 0))) - (while (setq ret (mime-parse-parameter string)) - (setq dest (cons (car ret) dest) - string (cdr ret)) - ) - (make-mime-content-type (intern type)(intern subtype) - (nreverse dest)) - ))) - -(defun mime-read-Content-Type () - "Read field-body of Content-Type field from current-buffer, -and return parsed it. Format of return value is as same as -`mime-parse-Content-Type'." - (let ((str (std11-field-body "Content-Type"))) - (if str - (mime-parse-Content-Type str) - ))) - -(defsubst mime-content-type-primary-type (content-type) - "Return primary-type of CONTENT-TYPE." - (cdr (car content-type))) - -(defsubst mime-content-type-subtype (content-type) - "Return primary-type of CONTENT-TYPE." - (cdr (cadr content-type))) - -(defsubst mime-content-type-parameters (content-type) - "Return primary-type of CONTENT-TYPE." - (cddr content-type)) - -(defsubst mime-content-type-parameter (content-type parameter) - "Return PARAMETER value of CONTENT-TYPE." - (cdr (assoc parameter (mime-content-type-parameters content-type)))) - - -;;; @ Content-Disposition -;;; - -(defconst mime-disposition-type-regexp mime-token-regexp) - -(defun mime-parse-Content-Disposition (string) - "Parse STRING as field-body of Content-Disposition field." - (setq string (std11-unfold-string string)) - (if (string-match `,(concat "^" mime-disposition-type-regexp) string) - (let* ((e (match-end 0)) - (type (downcase (substring string 0 e))) - ret dest) - (setq string (substring string e)) - (while (setq ret (mime-parse-parameter string)) - (setq dest (cons (car ret) dest) - string (cdr ret)) - ) - (cons (cons 'type (intern type)) - (nreverse dest)) - ))) - -(defun mime-read-Content-Disposition () - "Read field-body of Content-Disposition field from current-buffer, -and return parsed it." - (let ((str (std11-field-body "Content-Disposition"))) - (if str - (mime-parse-Content-Disposition str) - ))) - -(defsubst mime-content-disposition-type (content-disposition) - "Return disposition-type of CONTENT-DISPOSITION." - (cdr (car content-disposition))) - -(defsubst mime-content-disposition-parameters (content-disposition) - "Return disposition-parameters of CONTENT-DISPOSITION." - (cdr content-disposition)) - -(defsubst mime-content-disposition-parameter (content-disposition parameter) - "Return PARAMETER value of CONTENT-DISPOSITION." - (cdr (assoc parameter (cdr content-disposition)))) - -(defsubst mime-content-disposition-filename (content-disposition) - "Return filename of CONTENT-DISPOSITION." - (mime-content-disposition-parameter content-disposition "filename")) - - -;;; @ Content-Transfer-Encoding -;;; - -(defun mime-parse-Content-Transfer-Encoding (string) - "Parse STRING as field-body of Content-Transfer-Encoding field." - (if (string-match "[ \t\n\r]+$" string) - (setq string (match-string 0 string)) - ) - (downcase string)) - -(defun mime-read-Content-Transfer-Encoding (&optional default-encoding) - "Read field-body of Content-Transfer-Encoding field from -current-buffer, and return it. -If is is not found, return DEFAULT-ENCODING." - (let ((str (std11-field-body "Content-Transfer-Encoding"))) - (if str - (mime-parse-Content-Transfer-Encoding str) - default-encoding))) - - -;;; @ message parser -;;; - -(defsubst make-mime-entity (buffer - node-id - header-start header-end body-start body-end - content-type content-disposition - encoding children) - (vector buffer - node-id header-start header-end body-start body-end - content-type content-disposition encoding children)) - -(defsubst mime-entity-buffer (entity) (aref entity 0)) -(defsubst mime-entity-node-id (entity) (aref entity 1)) -(defsubst mime-entity-header-start (entity) (aref entity 2)) -(defsubst mime-entity-header-end (entity) (aref entity 3)) -(defsubst mime-entity-body-start (entity) (aref entity 4)) -(defsubst mime-entity-body-end (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-children (entity) (aref entity 9)) - -(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) - -(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))) - -(defsubst mime-entity-type/subtype (entity-info) - (mime-type/subtype-string (mime-entity-media-type entity-info) - (mime-entity-media-subtype entity-info))) - -(defun mime-parse-multipart (header-start header-end body-start body-end - content-type content-disposition - encoding node-id) - (goto-char (point-min)) - (let* ((dash-boundary - (concat "--" - (std11-strip-quoted-string - (mime-content-type-parameter content-type "boundary")))) - (delimiter (concat "\n" (regexp-quote dash-boundary))) - (close-delimiter (concat delimiter "--[ \t]*$")) - (rsep (concat delimiter "[ \t]*\n")) - (dc-ctl - (if (eq (mime-content-type-subtype content-type) 'digest) - (make-mime-content-type 'message 'rfc822) - (make-mime-content-type 'text 'plain) - )) - cb ce ret ncb children (i 0)) - (save-restriction - (goto-char body-end) - (narrow-to-region header-end - (if (re-search-backward close-delimiter nil t) - (match-beginning 0) - body-end)) - (goto-char header-start) - (re-search-forward rsep nil t) - (setq cb (match-end 0)) - (while (re-search-forward rsep nil t) - (setq ce (match-beginning 0)) - (setq ncb (match-end 0)) - (save-restriction - (narrow-to-region cb ce) - (setq ret (mime-parse-message dc-ctl "7bit" (cons i node-id))) - ) - (setq children (cons ret children)) - (goto-char (mime-entity-point-max ret)) - (goto-char (setq cb ncb)) - (setq i (1+ i)) - ) - (setq ce (point-max)) - (save-restriction - (narrow-to-region cb ce) - (setq ret (mime-parse-message dc-ctl "7bit" (cons i node-id))) - ) - (setq children (cons ret children)) - ) - (make-mime-entity (current-buffer) node-id - header-start header-end body-start body-end - content-type content-disposition encoding - (nreverse children)) - )) - -(defun mime-parse-message (&optional default-ctl default-encoding node-id) - "Parse current-buffer as a MIME message. -DEFAULT-CTL is used when an entity does not have valid Content-Type -field. Its format must be as same as return value of -mime-{parse|read}-Content-Type." - (let ((header-start (point-min)) - header-end - body-start - (body-end (point-max)) - content-type content-disposition encoding - primary-type) - (goto-char header-start) - (if (re-search-forward "^$" nil t) - (setq header-end (match-end 0) - body-start (1+ header-end)) - (setq header-end (point-min) - body-start (point-min)) - ) - (save-restriction - (narrow-to-region header-start header-end) - (setq content-type (or (let ((str (std11-fetch-field "Content-Type"))) - (if str - (mime-parse-Content-Type str) - )) - default-ctl) - content-disposition (let ((str (std11-fetch-field - "Content-Disposition"))) - (if str - (mime-parse-Content-Disposition str) - )) - encoding (let ((str (std11-fetch-field - "Content-Transfer-Encoding"))) - (if str - (mime-parse-Content-Transfer-Encoding str) - default-encoding)) - primary-type (mime-content-type-primary-type content-type)) - ) - (cond ((eq primary-type 'multipart) - (mime-parse-multipart header-start header-end - body-start body-end - content-type content-disposition encoding - node-id) - ) - ((and (eq primary-type 'message) - (memq (mime-content-type-subtype content-type) - '(rfc822 news) - )) - (make-mime-entity (current-buffer) node-id - header-start header-end body-start body-end - content-type content-disposition encoding - (save-restriction - (narrow-to-region body-start body-end) - (list (mime-parse-message - nil nil (cons 0 node-id))) - )) - ) - (t - (make-mime-entity (current-buffer) node-id - header-start header-end body-start body-end - content-type content-disposition encoding nil) - )) - )) - - -;;; @ utilities -;;; - -(defsubst mime-root-entity-p (entity) - "Return t if ENTITY is root-entity (message)." - (null (mime-entity-node-id entity))) - - -;;; @ end -;;; - -(provide 'mime-parse) - -;;; mime-parse.el ends here -- 1.7.10.4