From 5f43a2919c884ebe841d476ae405ea109763022a Mon Sep 17 00:00:00 2001 From: akr Date: Sun, 2 May 1999 08:29:32 +0000 Subject: [PATCH] * mime-view.el (postpet-decode): Returns nil if input is invalid. (mime-display-application/x-postpet): Check `postpet-decode' returns nil or not. --- ChangeLog | 6 ++++ mime-view.el | 108 ++++++++++++++++++++++++++++++---------------------------- 2 files changed, 62 insertions(+), 52 deletions(-) diff --git a/ChangeLog b/ChangeLog index a63d46d..c213842 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 1999-05-02 Tanaka Akira + * mime-view.el (postpet-decode): Returns nil if input is invalid. + (mime-display-application/x-postpet): Check `postpet-decode' returns + nil or not. + +1999-05-02 Tanaka Akira + * mime-view.el (unpack): New macro. (unpack-skip): New function. (unpack-fixed): New function. diff --git a/mime-view.el b/mime-view.el index 70d967c..24c91ee 100644 --- a/mime-view.el +++ b/mime-view.el @@ -581,63 +581,67 @@ Each elements are regexp of field-name.") (decode-mime-charset-string (unpack-string) 'shift_jis)) (defun postpet-decode (string) - (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))) + (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)))) - (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" - "SentYaer: " (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" - ) + (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" + "SentYaer: " (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 -- 1.7.10.4