update.
[elisp/flim.git] / mime-def.el
index dfbeece..c16f3b1 100644 (file)
@@ -1,11 +1,11 @@
-;;; mime-def.el --- definition module for SEMI
+;;; mime-def.el --- definition module about MIME
 
 ;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Keywords: definition, MIME, multimedia, mail, news
 
-;; This file is part of SEMI (Spadework for Emacs MIME Interfaces).
+;; This file is part of FLIM (Faithful Library about Internet Message).
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License as
 
 ;;; Code:
 
+(defconst mime-library-version-string "FLIM 1.5.0 - \"Mukaijima\"")
+
+
+;;; @ variables
+;;;
+
 (require 'custom)
 
+(eval-when-compile (require 'cl))
+
 (defgroup mime nil
   "Emacs MIME Interfaces"
   :group 'news
 (custom-handle-keyword 'default-mime-charset :group 'mime
                       'custom-variable)
 
+(defcustom mime-temp-directory (or (getenv "MIME_TMP_DIR")
+                                  (getenv "TM_TMP_DIR")
+                                  (getenv "TMPDIR")
+                                  (getenv "TMP")
+                                  (getenv "TEMP")
+                                  "/tmp/")
+  "*Directory for temporary files."
+  :group 'mime
+  :type 'directory)
+
+
+;;; @ required functions
+;;;
+
 (unless (fboundp 'butlast)
   (defun butlast (x &optional n)
     "Returns a copy of LIST with the last N elements removed."
       (substring string (match-end 0))
     string))
 
+(defsubst regexp-* (regexp)
+  (concat regexp "*"))
+
+(defsubst regexp-or (&rest args)
+  (concat "\\(" (mapconcat (function identity) args "\\|") "\\)"))
+
+
+;;; @ about STD 11
+;;;
+
+(defconst std11-quoted-pair-regexp "\\\\.")
+(defconst std11-non-qtext-char-list '(?\" ?\\ ?\r ?\n))
+(defconst std11-qtext-regexp
+  (concat "[^" (char-list-to-string std11-non-qtext-char-list) "]"))
+(defconst std11-quoted-string-regexp
+  (concat "\""
+         (regexp-*
+          (regexp-or std11-qtext-regexp std11-quoted-pair-regexp))
+         "\""))
+
 
-;;; @ definitions about MIME
+;;; @ about MIME
 ;;;
 
 (defconst mime-tspecials "][()<>@,\;:\\\"/?=")
   (concat mime-token-regexp "/" mime-token-regexp))
 
 
+;;; @@ Quoted-Printable
+;;;
+
+(defconst quoted-printable-hex-chars "0123456789ABCDEF")
+
+(defconst quoted-printable-octet-regexp
+  (concat "=[" quoted-printable-hex-chars
+         "][" quoted-printable-hex-chars "]"))
+
+
+;;; @ 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 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))))
+
+
 ;;; @ end
 ;;;