From 6a8b7066b870bde4940d5594aa50762a103d72a9 Mon Sep 17 00:00:00 2001 From: tomo Date: Sun, 16 Jan 2000 07:08:23 +0000 Subject: [PATCH] Add setting for `mime-display-application/x-postpet' to autoload "postpet". (mime-delq-null-situation): Moved from mime-play.el. (unpack): Moved to postpet.el. (unpack-skip): Likewise. (unpack-fixed): Likewise. (unpack-byte): Likewise. (unpack-short): Likewise. (unpack-long): Likewise. (unpack-string): Likewise. (unpack-string-sjis): Likewise. (postpet-decode): Likewise. (mime-display-application/x-postpet): Likewise. --- mime-view.el | 113 ++++++++-------------------------------------------------- 1 file changed, 15 insertions(+), 98 deletions(-) diff --git a/mime-view.el b/mime-view.el index b6a4d96..fcf44f9 100644 --- a/mime-view.el +++ b/mime-view.el @@ -451,6 +451,8 @@ Each elements are regexp of field-name.") (body . visible) (body-presentation-method . mime-display-text/richtext))) +(autoload 'mime-display-application/x-postpet "postpet") + (ctree-set-calist-strictly 'mime-preview-condition '((type . application)(subtype . x-postpet) @@ -490,6 +492,19 @@ Each elements are regexp of field-name.") ;;; @@@ entity presentation ;;; +(defsubst mime-delq-null-situation (situations field + &optional ignored-value) + (let (dest) + (while situations + (let* ((situation (car situations)) + (cell (assq field situation))) + (if cell + (or (eq (cdr cell) ignored-value) + (setq dest (cons situation dest)) + ))) + (setq situations (cdr situations))) + dest)) + (defun mime-display-text/plain (entity situation) (save-restriction (narrow-to-region (point-max)(point-max)) @@ -523,104 +538,6 @@ Each elements are regexp of field-name.") (enriched-decode beg (point-max)) ))) -(put 'unpack 'lisp-indent-function 1) -(defmacro unpack (string &rest body) - `(let* ((*unpack*string* (string-as-unibyte ,string)) - (*unpack*index* 0)) - ,@body)) - -(defun unpack-skip (len) - (setq *unpack*index* (+ len *unpack*index*))) - -(defun unpack-fixed (len) - (prog1 - (substring *unpack*string* *unpack*index* (+ *unpack*index* len)) - (unpack-skip len))) - -(defun unpack-byte () - (char-int (aref (unpack-fixed 1) 0))) - -(defun unpack-short () - (let* ((b0 (unpack-byte)) - (b1 (unpack-byte))) - (+ (* 256 b0) b1))) - -(defun unpack-long () - (let* ((s0 (unpack-short)) - (s1 (unpack-short))) - (+ (* 65536 s0) s1))) - -(defun unpack-string () - (let ((len (unpack-byte))) - (unpack-fixed len))) - -(defun unpack-string-sjis () - (decode-mime-charset-string (unpack-string) 'shift_jis)) - -(defun postpet-decode (string) - (condition-case nil - (unpack string - (let (res) - (unpack-skip 4) - (set-alist 'res 'carryingcount (unpack-long)) - (unpack-skip 8) - (set-alist 'res 'sentyear (unpack-short)) - (set-alist 'res 'sentmonth (unpack-short)) - (set-alist 'res 'sentday (unpack-short)) - (unpack-skip 8) - (set-alist 'res 'petname (unpack-string-sjis)) - (set-alist 'res 'owner (unpack-string-sjis)) - (set-alist 'res 'pettype (unpack-fixed 4)) - (set-alist 'res 'health (unpack-short)) - (unpack-skip 2) - (set-alist 'res 'sex (unpack-long)) - (unpack-skip 1) - (set-alist 'res 'brain (unpack-byte)) - (unpack-skip 39) - (set-alist 'res 'happiness (unpack-byte)) - (unpack-skip 14) - (set-alist 'res 'petbirthyear (unpack-short)) - (set-alist 'res 'petbirthmonth (unpack-short)) - (set-alist 'res 'petbirthday (unpack-short)) - (unpack-skip 8) - (set-alist 'res 'from (unpack-string)) - (unpack-skip 5) - (unpack-skip 160) - (unpack-skip 4) - (unpack-skip 8) - (unpack-skip 8) - (unpack-skip 26) - (set-alist 'res 'treasure (unpack-short)) - (set-alist 'res 'money (unpack-long)) - res)) - (error nil))) - -(defun mime-display-application/x-postpet (entity situation) - (save-restriction - (narrow-to-region (point-max)(point-max)) - (let ((pet (postpet-decode (mime-entity-content entity)))) - (if pet - (insert "Petname: " (cdr (assq 'petname pet)) "\n" - "Owner: " (cdr (assq 'owner pet)) "\n" - "Pettype: " (cdr (assq 'pettype pet)) "\n" - "From: " (cdr (assq 'from pet)) "\n" - "CarryingCount: " (int-to-string (cdr (assq 'carryingcount pet))) "\n" - "SentYear: " (int-to-string (cdr (assq 'sentyear pet))) "\n" - "SentMonth: " (int-to-string (cdr (assq 'sentmonth pet))) "\n" - "SentDay: " (int-to-string (cdr (assq 'sentday pet))) "\n" - "PetbirthYear: " (int-to-string (cdr (assq 'petbirthyear pet))) "\n" - "PetbirthMonth: " (int-to-string (cdr (assq 'petbirthmonth pet))) "\n" - "PetbirthDay: " (int-to-string (cdr (assq 'petbirthday pet))) "\n" - "Health: " (int-to-string (cdr (assq 'health pet))) "\n" - "Sex: " (int-to-string (cdr (assq 'sex pet))) "\n" - "Brain: " (int-to-string (cdr (assq 'brain pet))) "\n" - "Happiness: " (int-to-string (cdr (assq 'happiness pet))) "\n" - "Treasure: " (int-to-string (cdr (assq 'treasure pet))) "\n" - "Money: " (int-to-string (cdr (assq 'money pet))) "\n" - ) - (insert "Invalid format\n")) - (run-hooks 'mime-display-application/x-postpet-hook)))) - (defvar mime-view-announcement-for-message/partial (if (and (>= emacs-major-version 19) window-system) -- 1.7.10.4