* Sync up to flim-1_12_7 from flim-1_12_5. doodle-1_12_6
authorakr <akr>
Wed, 2 Jun 1999 15:12:13 +0000 (15:12 +0000)
committerakr <akr>
Wed, 2 Jun 1999 15:12:13 +0000 (15:12 +0000)
* mime-def.el (mime-library-product): Bump up to FLAM-DOODLE
1.12.6.

28 files changed:
ChangeLog
DOODLE-VERSION
FLIM-CFG
Makefile
README.en
README.ja
VERSION
eword-decode.el
eword-encode.el
ftp.in
mailcap.el
mel-b-ccl.el
mel-b-dl.el
mel-b-el.el
mel-g.el
mel-q-ccl.el
mel-q.el
mel-u.el
mel.el
mime-def.el
mime-en.sgml
mime-en.texi
mime-ja.sgml
mime-parse.el
mime.el
smtp.el
smtpmail.el
std11.el

index 25b8337..e2b2395 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+1999-06-02  Tanaka Akira      <akr@jaist.ac.jp>
+
+       * Sync up to flim-1_12_7 from flim-1_12_5.
+
+       * mime-def.el (mime-library-product): Bump up to FLAM-DOODLE
+       1.12.6.
+
 1999-05-26  Tanaka Akira  <akr@jaist.ac.jp>
 
        * TESTPAT: Does not treat =?= as encoded-word.
 1999-05-26  Tanaka Akira  <akr@jaist.ac.jp>
 
        * TESTPAT: Does not treat =?= as encoded-word.
        * eword-decode.el: Copied from AKEMI branch of SEMI.
 
 \f
        * eword-decode.el: Copied from AKEMI branch of SEMI.
 
 \f
+1999-05-31  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * FLIM: Version 1.12.7 (Y\e-Dþzaki)\e-A released.
+
+1999-05-31  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * mime-en.sgml (Network representation of header): Translate.
+
+1999-05-27  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+       * mel-b-el.el (pack-sequence): Eliminate local variable `i'.
+       (base64-encode-1): Avoid concat.
+       (base64-encode-string): Fixed last change; extra padding.
+
+1999-05-26  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * smtpmail.el (smtpmail-default-smtp-server): Define obsolete
+       variable alias for XEmacs.
+       (smtpmail-smtp-server): Likewise.
+       (smtpmail-smtp-service): Likewise.
+       (smtpmail-local-domain): Likewise.
+       (smtpmail-debug-info): Likewise.
+       (smtpmail-send-it): Check function `expand-mail-aliases' is
+       defined.
+
+1999-05-26  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * smtp.el (smtp-debug-info): Now a user option.
+
+1999-05-25  Yoshiki Hayashi  <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+       * README.ja: Modify URL and required version of APEL.
+
+1999-05-24  Tanaka Akira  <akr@jaist.ac.jp>
+
+       * mel-b-ccl.el (base64-encode-string): New alias.
+       (base64-encode-region): Ditto.
+       (base64-decode-string): Ditto.
+       (base64-decode-region): Ditto.
+
+1999-05-24  Tanaka Akira  <akr@jaist.ac.jp>
+
+       * mel-b-ccl.el, mel-q-ccl.el: Sync up with doodle-1.12.5.
+
+1999-05-24  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * eword-encode.el (ew-space-process): Renamed from
+       `tm-eword::space-process'.
+
+1999-05-24  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * eword-encode.el (tm-eword::space-process): Don't concatenate
+       `special's.
+       (ew-encode-rword-1): Renamed from `tm-eword::encode-string-1'; add
+       new optional argument `must-output'; return nil if it can't encode
+       literally.
+       (eword-encode-rword-list): Fold SPACE or TAB in the encoded string
+       if `ew-encode-rword-1' can't encode literally and it is possible
+       to encode the rest literally with the folding.
+       (eword-encode-phrase-to-rword-list): Add `special' flag to
+       brackets of comments.
+
+1999-05-22  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+       * smtpmail.el: Require 'poe and 'pcustom.
+
+1999-05-22  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+       * mel.el: Update header.
+       Require 'path-util and don't require 'poem.
+       (mel-use-module): Eliminate local variable `encoding'.
+       (mime-insert-encoded-file for mel-b-builtin):
+       Use built-in `interactive' spec.
+       (encoded-text-decode-string): Anchor regexp with "\\`" and "\\'".
+       (mime-encode-region): Capitalize prompt string.
+       (mime-decode-region): Ditto.
+       (mime-insert-encoded-file): Ditto.
+       (mime-write-decoded-region): Ditto.
+
+       * mel-b-ccl.el: Update header.
+       (base64-ccl-encode-region): Use read-only `interactive' spec.
+       (base64-ccl-decode-region): Ditto.
+       (base64-ccl-insert-encoded-file): Use built-in `interactive' spec.
+       (base64-ccl-write-decoded-region): Ditto.
+       (encoded-text-decode-string): Anchor regexp with "\\`" and "\\'".
+
+       * mel-b-dl.el: Update header.
+       Don't require 'poe; it is required implicitly via 'mime-def.
+       (base64-dl-handle): Chech whether `base64-dl-module' is string.
+       Defalias `base64-encode-string' and `base64-decode-string' just
+       after `dynamic-call'ing "emacs_base64_init".
+       (base64-encode-region): Use read-only `interactive' spec.
+       Use `base64-encode-string'.
+       Changed order of evaluation to "encode, delete, then insert".
+       (base64-decode-region): Renamed from `decode-base64-region'.
+       Use read-only `interactive' spec.
+       Use `base64-decode-string'.
+       Changed order of evaluation to "decode, delete, then insert".
+       (mime-encode-string): Use `base64-encode-string'.
+       (mime-decode-string): Use `base64-decode-string'.
+       (mime-decode-region): Use `base64-decode-region'.
+       (encoded-text-encode-string): Use `base64-encode-string'.
+       (encoded-text-decode-string): Anchor regexp with "\\`" and "\\'".
+       (mime-insert-encoded-file): Use built-in `interactive' spec.
+       (mime-write-decoded-region in comment): Ditto.
+
+       * mel-b-el.el: Update header.
+       Don't require 'poe; it is required implicitly via 'mime-def.
+       (pack-sequence): Moved to top of the function definitions.
+       (base64-encode-string): Calculate padding first.
+       (base64-internal-encode-region): Changed order of evaluation to
+       "encode, delete, then insert".
+       (base64-internal-decode-string): Changed order of evaluation to
+       "decode, delete, then insert".
+       (base64-encode-region): Use read-only `interactive' spec.
+       (base64-decode-region): Ditto.
+       (base64-decode-string): Not interactive.
+       (encoded-text-decode-string): Anchor regexp with "\\`" and "\\'".
+       (base64-insert-encoded-file): Use built-in `interactive' spec.
+       (base64-write-decoded-region): Ditto.
+
+       * mel-g.el: Update header.
+       Require 'mime-def instead of 'poem and 'mel.
+       (mime-insert-encoded-file): Use built-in `interactive' spec.
+       (mime-write-decoded-region): Ditto.
+
+       * mel-q-ccl.el: Update header.
+       (quoted-printable-ccl-encode-region):
+       Use read-only `interactive' spec.
+       (quoted-printable-ccl-decode-region): Ditto.
+       (quoted-printable-ccl-insert-encoded-file):
+       Use built-in `interactive' spec.
+       (quoted-printable-ccl-write-decoded-region): Ditto.
+       (encoded-text-decode-string): Anchor regexp with "\\`" and "\\'".
+
+       * mel-q.el: Update header.
+       Require 'path-util instead of 'emu.
+       (quoted-printable-internal-encode-region): Rewrite without regexp.
+       (quoted-printable-internal-decode-region): Ditto.
+       (quoted-printable-encode-region): Use read-only `interactive' spec.
+       (quoted-printable-decode-region): Ditto.
+       (mime-insert-encoded-file): Use built-in `interactive' spec.
+       (mime-write-decoded-region): Ditto.
+       (encoded-text-decode-string): Anchor regexp with "\\`" and "\\'".
+
+       * mel-u.el: Update header.
+       Require 'path-util instead of 'emu.
+       (mime-insert-encoded-file): Use built-in `interactive' spec.
+       (mime-write-decoded-region): Ditto.
+
+1999-05-22  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+       * mime-def.el: Require 'poe, 'poem, and 'pcustom.
+       (mime): Declare `default-mime-charset' as an initial member.
+
+       * mime-parse.el: Don't require 'cl at compile-time.
+
+       * mailcap.el (mailcap-look-at-qchar): Use `char-after'.
+
+       * std11.el: Require 'poe, 'poem, and 'pcustom.
+
+       * smtp.el: Update header.
+       Require 'poe, 'poem, and 'pcustom.
+       Require 'cl at compile-time.
+
+1999-05-21  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * README.en (Installation): Modify URL and required version of
+       APEL.
+
+       * eword-encode.el (ew-find-charset-rule): Renamed from
+       `tm-eword::find-charset-rule'; use
+       `find-mime-charset-by-charsets'.
+
+\f
+1999-05-11  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * FLIM: Version 1.12.6 (Family-K\e-Dòenmae)\e-A released.
+
+1999-04-27  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+       * mel-b-ccl.el (TopLevel): Suppress warning.
+       mel-q-ccl.el (TopLevel): Ditto.
+       mime.el (TopLevel): Ditto.
+
+1999-04-26  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+       * eword-decode.el (eword-encoded-word-regexp): Accept "b" and "q"
+       for "encoding".
+
+       * mime-def.el (std11-qtext-regexp): Don't use `string'.
+       (mime-tspecial-char-list): Eval at compile time.
+
+1999-04-22  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+       * mime.el: Delete autoload setting for `eword-encode-field'.
+
+1999-04-22  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * eword-encode.el: Require `poem' instead of `emu'.
+       Don't use `cl' for `caar'.
+
+1999-04-09  Katsumi Yamaoka   <yamaoka@jpl.org>
+
+       * smtp.el (smtp-via-smtp): Funcall `smtp-server' if it is a
+       function.
+       (smtp-server): Make it can also be a function called from
+       `smtp-via-smtp' with arguments SENDER and RECIPIENTS.
+
+1999-04-05  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+       * FLIM-CFG: Make easier to install in VERSION_SPECIFIC_LISPDIR.
+
+1999-03-29  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+       * mime.el (mime-read-field): Correct argument of
+       `mime-decode-field-body'; 'native -> 'plain.
+
+1999-03-27  Shuhei KOBAYASHI  <shuhei@aqua.ocn.ne.jp>
+
+       * eword-encode.el (TopLevel): Require 'cl when compiling.
+       (eword-encode-rword-list): Suppress insertion of extra spaces.
+       (eword-encode-msg-id-to-rword-list): Treat surrounding angle
+       brackets atomically.
+       ([tm-ja:4244] by Kazuhiro Ohta <ohta@ele.cst.nihon-u.ac.jp>)
+
+1999-03-11  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * eword-encode.el (eword-charset-encoding-alist): Add `tis-620'.
+
+1999-03-01  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mel.el (mime-decode-string): Return STRING if return value of
+       `(mel-find-function 'mime-decode-string encoding)' is nil.
+
+1999-02-10  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
+
+       * mime-def.el (mel-define-service): Change size of obarray to 7.
+
+1999-02-01  Yoshiki Hayashi  <g740685@komaba.ecc.u-tokyo.ac.jp>
+
+       * mime-ja.sgml: Tranlate all untranslated parts.
+
+\f
 1999-01-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
        * FLIM: Version 1.12.5 (Hirahata) released.
 1999-01-27  MORIOKA Tomohiko  <morioka@jaist.ac.jp>
 
        * FLIM: Version 1.12.5 (Hirahata) released.
 
 1998-11-12  Tanaka Akira  <akr@jaist.ac.jp>
 
 
 1998-11-12  Tanaka Akira  <akr@jaist.ac.jp>
 
-       * mel-q-ccl.el (mel-ccl-encode-quoted-printable-generic): workaround 
+       * mel-q-ccl.el (mel-ccl-encode-quoted-printable-generic): workaround
        for mule-2.3@19.34.
 
 1998-11-12  Tanaka Akira  <akr@jaist.ac.jp>
        for mule-2.3@19.34.
 
 1998-11-12  Tanaka Akira  <akr@jaist.ac.jp>
 
        * Move variable `mel-encoding-module-alist' from mel.el to
        mime-def.el.
 
        * Move variable `mel-encoding-module-alist' from mel.el to
        mime-def.el.
-       
+
        * mel.el (mel-find-function): Use function
        `mel-find-function-from-obarray'.
        Use `mel-define-backend' to define "7bit", "8bit" and "binary";
        * mel.el (mel-find-function): Use function
        `mel-find-function-from-obarray'.
        Use `mel-define-backend' to define "7bit", "8bit" and "binary";
        (mime-insert-encoded-file): Use `mel-define-method'; abolish
        `base64-insert-encoded-file'.
        (mime-write-decoded-region): Use `mel-define-method'; abolish
        (mime-insert-encoded-file): Use `mel-define-method'; abolish
        `base64-insert-encoded-file'.
        (mime-write-decoded-region): Use `mel-define-method'; abolish
-       `base64-write-decoded-region'.  
+       `base64-write-decoded-region'.
        - Move `base64-encoded-length' to mel.el.
 
        * mel-dl.el (base64-encode-region): Define directly (abolish
        - Move `base64-encoded-length' to mel.el.
 
        * mel-dl.el (base64-encode-region): Define directly (abolish
 
        * eword-decode.el (eword-decode-ignored-field-list): Add
        `received'.
 
        * eword-decode.el (eword-decode-ignored-field-list): Add
        `received'.
-       
+
        * mel.el (mime-temp-directory): Use TMPDIR, TMP, or TEMP
        environment variables.
 
        * mel.el (mime-temp-directory): Use TMPDIR, TMP, or TEMP
        environment variables.
 
        eword-encode.el: Copied from MEL, SEMI (mime-def.el
        eword-decode.el eword-encode.el) and APEL (std11-parse.el
        std11.el).
        eword-encode.el: Copied from MEL, SEMI (mime-def.el
        eword-decode.el eword-encode.el) and APEL (std11-parse.el
        std11.el).
->
index 7a3d829..235418b 100644 (file)
@@ -31,7 +31,7 @@ Order is not significant.
   25 \e$B>GCc\e(B        \e$B$3$2$A$c\e(B          10R3.0/2.0      FLAM-DOODLE 1.12.3
   26 \e$B7*Hi\e(B        \e$B$/$j$+$O\e(B          10R3.0/4.0      FLAM-DOODLE 1.12.4
   27 \e$BFP\e(B          \e$B$H$S\e(B                      10R4.0/7.0      FLAM-DOODLE 1.12.5
   25 \e$B>GCc\e(B        \e$B$3$2$A$c\e(B          10R3.0/2.0      FLAM-DOODLE 1.12.3
   26 \e$B7*Hi\e(B        \e$B$/$j$+$O\e(B          10R3.0/4.0      FLAM-DOODLE 1.12.4
   27 \e$BFP\e(B          \e$B$H$S\e(B                      10R4.0/7.0      FLAM-DOODLE 1.12.5
-  28 \e$B3w\e(B          \e$B$+$P\e(B                      10R4.0/5.0
+  28 \e$B3w\e(B          \e$B$+$P\e(B                      10R4.0/5.0      FLAM-DOODLE 1.12.6
   29 \e$B2+H'@w\e(B      \e$B$3$&$m$;$s\e(B                2.5Y5.0/4.0
   30 \e$BCz;RCc\e(B      \e$B$A$g$&$8$A$c\e(B              5.0YR4.0/4.0
   31 \e$B<F\e(B          \e$B$U$7\e(B                      10YR4.0/4.0
   29 \e$B2+H'@w\e(B      \e$B$3$&$m$;$s\e(B                2.5Y5.0/4.0
   30 \e$BCz;RCc\e(B      \e$B$A$g$&$8$A$c\e(B              5.0YR4.0/4.0
   31 \e$B<F\e(B          \e$B$U$7\e(B                      10YR4.0/4.0
index 57565ab..e4fbd65 100644 (file)
--- a/FLIM-CFG
+++ b/FLIM-CFG
@@ -16,9 +16,7 @@
       (add-to-list 'load-path (expand-file-name "apel" LISPDIR))
       ))
 
       (add-to-list 'load-path (expand-file-name "apel" LISPDIR))
       ))
 
-(defvar VERSION_SPECIFIC_LISPDIR nil)
-
-(if VERSION_SPECIFIC_LISPDIR
+(if (boundp 'VERSION_SPECIFIC_LISPDIR)
     (add-to-list 'load-path VERSION_SPECIFIC_LISPDIR))
 
 (require 'install)
     (add-to-list 'load-path VERSION_SPECIFIC_LISPDIR))
 
 (require 'install)
 (defvar LISPDIR (install-detect-elisp-directory PREFIX))
 ;; (setq install-default-elisp-directory "~/lib/emacs/lisp")
 
 (defvar LISPDIR (install-detect-elisp-directory PREFIX))
 ;; (setq install-default-elisp-directory "~/lib/emacs/lisp")
 
+(defvar VERSION_SPECIFIC_LISPDIR
+  (install-detect-elisp-directory PREFIX nil 'version-specific))
+
+;; (setq FLIM_DIR (expand-file-name FLIM_PREFIX VERSION_SPECIFIC_LISPDIR))
 (setq FLIM_DIR (expand-file-name FLIM_PREFIX LISPDIR))
 
 (defvar PACKAGEDIR
 (setq FLIM_DIR (expand-file-name FLIM_PREFIX LISPDIR))
 
 (defvar PACKAGEDIR
index 94648d4..9852865 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@
 
 PACKAGE = flim
 API    = 1.12
 
 PACKAGE = flim
 API    = 1.12
-RELEASE = 5
+RELEASE = 7
 
 TAR    = tar
 RM     = /bin/rm -f
 
 TAR    = tar
 RM     = /bin/rm -f
@@ -26,8 +26,8 @@ GOMI  = *.elc \
 FILES  = README.?? Makefile FLIM-MK FLIM-CFG FLIM-ELS *.el ChangeLog
 
 VERSION        = $(API).$(RELEASE)
 FILES  = README.?? Makefile FLIM-MK FLIM-CFG FLIM-ELS *.el ChangeLog
 
 VERSION        = $(API).$(RELEASE)
-ARC_DIR = /pub/GNU/elisp/flim/$(PACKAGE)-$(API)
-SEMI_ARC_DIR = /pub/GNU/elisp/semi/semi-1.13-for-flim-$(API)
+ARC_DIR = /pub/mule/flim/$(PACKAGE)-$(API)
+SEMI_ARC_DIR = /pub/mule/semi/semi-1.13-for-flim-$(API)
 
 elc: ew-parse.el
        $(EMACS) $(FLAGS) -l FLIM-MK -f compile-flim $(PREFIX) $(LISPDIR) \
 
 elc: ew-parse.el
        $(EMACS) $(FLAGS) -l FLIM-MK -f compile-flim $(PREFIX) $(LISPDIR) \
index 358e4e3..c8ed0b2 100644 (file)
--- a/README.en
+++ b/README.en
@@ -39,10 +39,10 @@ What's FLIM
 Installation
 ============
 
 Installation
 ============
 
-(0) before installing it, please install APEL (9.12 or later) package.
+(0) before installing it, please install APEL (9.19 or later) package.
     APEL package is available at:
 
     APEL package is available at:
 
-       ftp://ftp.jaist.ac.jp/pub/GNU/elisp/apel/
+       ftp://ftp.etl.go.jp/pub/mule/apel/
 
 (1-a) run in expanded place
 
 
 (1-a) run in expanded place
 
index 01740dc..c3742e1 100644 (file)
--- a/README.ja
+++ b/README.ja
@@ -37,10 +37,10 @@ FLIM \e$B$H$O!)\e(B
 \e$BF3F~\e(B (install)
 ==============
 
 \e$BF3F~\e(B (install)
 ==============
 
-(0) \e$BF3F~\e(B (install) \e$B$9$kA0$K!"\e(BAPEL (9.12 \e$B0J9_\e(B) \e$B$rF3F~$7$F$/$@$5$$!#\e(BAPEL 
+(0) \e$BF3F~\e(B (install) \e$B$9$kA0$K!"\e(BAPEL (9.19 \e$B0J9_\e(B) \e$B$rF3F~$7$F$/$@$5$$!#\e(BAPEL 
     \e$B$O0J2<$N$H$3$m$G<hF@$G$-$^$9\e(B:
 
     \e$B$O0J2<$N$H$3$m$G<hF@$G$-$^$9\e(B:
 
-       ftp://ftp.jaist.ac.jp/pub/GNU/elisp/apel/
+       ftp://ftp.etl.go.jp/pub/mule/apel/
 
 (1-a) \e$BE83+$7$?>l=j$X$NF3F~\e(B
 
 
 (1-a) \e$BE83+$7$?>l=j$X$NF3F~\e(B
 
diff --git a/VERSION b/VERSION
index 2f8d3f3..a4dbc84 100644 (file)
--- a/VERSION
+++ b/VERSION
 ;;     Kinki Nippon Railway    \e$(B6a5&F|K\E4F;\e(B     http://www.kintetsu.co.jp/
 ;;     Ky\e-Dòto\e-A Line                \e$(B3`86@~\e(B
 ;;-------------------------------------------------------------------------
 ;;     Kinki Nippon Railway    \e$(B6a5&F|K\E4F;\e(B     http://www.kintetsu.co.jp/
 ;;     Ky\e-Dòto\e-A Line                \e$(B3`86@~\e(B
 ;;-------------------------------------------------------------------------
-       (Saidaiji)              (\e$(B@>Bg;{\e(B) ; \e$(B!{J?>k5\@W!"@>Bg;{\e(B
-1.12.0 Amagatsuji              \e$(BFt%vDT\e(B           ; \e$(B!{?b?NE79DNM\e(B
-1.12.1 Nishinoky\e-Dò\e-A                \e$(B@>$N5~\e(B           ; \e$(B!{Eb>7Ds;{!"Lt;U;{\e(B
+       (Saidaiji)              (\e$(B@>Bg;{\e(B)
+1.12.0 Amagatsuji              \e$(BFt%vDT\e(B
+1.12.1 Nishinoky\e-Dò\e-A                \e$(B@>$N5~\e(B
 1.12.2 Kuj\e-Dò\e-A                      \e$(B6e>r\e(B
 1.12.2 Kuj\e-Dò\e-A                      \e$(B6e>r\e(B
-1.12.3 Kintetsu-K\e-Dòriyama\e-A \e$(B6aE474;3\e(B ; \e$(B!{74;3>k@W!"\e(B
-                                               ;   \e$(B%"%Z%k!"%]!<!"CcHx$N2H\e(B
+1.12.3 Kintetsu-K\e-Dòriyama\e-A \e$(B6aE474;3\e(B
 1.12.4 Tsutsui                 \e$(BE{0f\e(B
 1.12.5 Hirahata                \e$(BJ?C<\e(B             ; = \e$(B6aE4\e(B \e$(BE7M}@~\e(B
 1.12.4 Tsutsui                 \e$(BE{0f\e(B
 1.12.5 Hirahata                \e$(BJ?C<\e(B             ; = \e$(B6aE4\e(B \e$(BE7M}@~\e(B
+1.12.6 Family-K\e-Dòenmae\e-A            \e$(B%U%!%_%j!<8x1`A0\e(B
+1.12.7 Y\e-Dþzaki\e-A                    \e$(B7k:j\e(B
+------ Iwami                   \e$(B@P8+\e(B
+------ Tawaramoto              \e$(BED86K\\e(B           ; <=> \e$(B6aE4\e(B \e$(B@>ED86K\\e(B
+------ Kasanui                 \e$(B3^K%\e(B
+------ Ninokuchi               \e$(B?7%N8}\e(B
+------ Yagi                    \e$(BH,LZ\e(B             ; = \e$(B6aE4\e(B \e$(BBg:e@~\e(B
+------ Yagi-Nishiguchi         \e$(BH,LZ@>8}\e(B
+------ Unebigory\e-Dòmae\e-A             \e$(B@&K58fNMA0\e(B
+------ Kashiharajingu-mae      \e$(B3`86?@5\A0\e(B       ; = \e$(B6aE4\e(B \e$(BFnBg:e@~!"5HLn@~\e(B
 
 
 [Chao Version names]
 
 
 [Chao Version names]
index 25635fd..87c9aed 100644 (file)
 
 ;;; Code:
 
 
 ;;; Code:
 
-(require 'std11)
-(require 'mel)
 (require 'mime-def)
 (require 'mime-def)
+(require 'mel)
+(require 'std11)
 
 (require 'ew-dec)
 (require 'ew-line)
 
 
 (require 'ew-dec)
 (require 'ew-line)
 
-(eval-when-compile (require 'cl))
+(eval-when-compile (require 'cl))      ; list*, pop
 
 (defgroup eword-decode nil
   "Encoded-word decoding"
 
 (defgroup eword-decode nil
   "Encoded-word decoding"
@@ -65,7 +65,7 @@
              mime-charset-regexp
              "\\)"
              (regexp-quote "?")
              mime-charset-regexp
              "\\)"
              (regexp-quote "?")
-             "\\(B\\|Q\\)"
+             "\\([BbQq]\\)"
              (regexp-quote "?")
              "\\("
              eword-encoded-text-regexp
              (regexp-quote "?")
              "\\("
              eword-encoded-text-regexp
index a04db3e..f4976c5 100644 (file)
 
 ;;; Code:
 
 
 ;;; Code:
 
-(require 'emu)
+(require 'mime-def)
 (require 'mel)
 (require 'std11)
 (require 'mel)
 (require 'std11)
-(require 'mime-def)
 (require 'eword-decode)
 
 
 (require 'eword-decode)
 
 
@@ -83,6 +82,7 @@ If method is nil, this field will not be encoded."
     (cn-gb             . "B")
     (cn-gb-2312                . "B")
     (euc-kr            . "B")
     (cn-gb             . "B")
     (cn-gb-2312                . "B")
     (euc-kr            . "B")
+    (tis-620           . "B")
     (iso-2022-jp-2     . "B")
     (iso-2022-int-1    . "B")
     (utf-8             . "B")
     (iso-2022-jp-2     . "B")
     (iso-2022-int-1    . "B")
     (utf-8             . "B")
@@ -183,30 +183,31 @@ MODE is allows `text', `comment', `phrase' or nil.  Default value is
 (defmacro ew-rword-type (rword)
   (` (car (cdr (cdr (cdr (, rword)))))))
 
 (defmacro ew-rword-type (rword)
   (` (car (cdr (cdr (cdr (, rword)))))))
 
-(defun tm-eword::find-charset-rule (charsets)
+(defun ew-find-charset-rule (charsets)
   (if charsets
   (if charsets
-      (let* ((charset (charsets-to-mime-charset charsets))
-            (encoding (cdr (assq charset eword-charset-encoding-alist)))
-            )
+      (let* ((charset (find-mime-charset-by-charsets charsets))
+            (encoding (cdr (or (assq charset eword-charset-encoding-alist)
+                               '(nil . "Q")))))
        (list charset encoding)
        )))
 
 (defun tm-eword::words-to-ruled-words (wl &optional mode)
   (mapcar (function
           (lambda (word)
        (list charset encoding)
        )))
 
 (defun tm-eword::words-to-ruled-words (wl &optional mode)
   (mapcar (function
           (lambda (word)
-            (let ((ret (tm-eword::find-charset-rule (car word))))
+            (let ((ret (ew-find-charset-rule (car word))))
               (make-ew-rword (cdr word) (car ret)(nth 1 ret) mode)
               )))
          wl))
 
               (make-ew-rword (cdr word) (car ret)(nth 1 ret) mode)
               )))
          wl))
 
-(defun tm-eword::space-process (seq)
+(defun ew-space-process (seq)
   (let (prev a ac b c cc)
     (while seq
       (setq b (car seq))
       (setq seq (cdr seq))
       (setq c (car seq))
       (setq cc (ew-rword-charset c))
   (let (prev a ac b c cc)
     (while seq
       (setq b (car seq))
       (setq seq (cdr seq))
       (setq c (car seq))
       (setq cc (ew-rword-charset c))
-      (if (null (ew-rword-charset b))
+      (if (and (null (ew-rword-charset b))
+              (not (eq (ew-rword-type b) 'special)))
          (progn
            (setq a (car prev))
            (setq ac (ew-rword-charset a))
          (progn
            (setq a (car prev))
            (setq ac (ew-rword-charset a))
@@ -235,7 +236,7 @@ MODE is allows `text', `comment', `phrase' or nil.  Default value is
     ))
 
 (defun eword-encode-split-string (str &optional mode)
     ))
 
 (defun eword-encode-split-string (str &optional mode)
-  (tm-eword::space-process
+  (ew-space-process
    (tm-eword::words-to-ruled-words
     (eword-encode-charset-words-to-words
      (eword-encode-divide-into-charset-words str))
    (tm-eword::words-to-ruled-words
     (eword-encode-charset-words-to-words
      (eword-encode-divide-into-charset-words str))
@@ -267,71 +268,82 @@ MODE is allows `text', `comment', `phrase' or nil.  Default value is
 ;;; @ encode-string
 ;;;
 
 ;;; @ encode-string
 ;;;
 
-(defun tm-eword::encode-string-1 (column rwl)
-  (let* ((rword (car rwl))
-        (ret (tm-eword::encoded-word-length rword))
-        string len)
-    (if (null ret)
-       (cond ((and (setq string (car rword))
-                   (or (<= (setq len (+ (length string) column)) 76)
-                       (<= column 1))
+(defun ew-encode-rword-1 (column rwl &optional must-output)
+  (catch 'can-not-output
+    (let* ((rword (car rwl))
+          (ret (tm-eword::encoded-word-length rword))
+          string len)
+      (if (null ret)
+         (cond ((and (setq string (car rword))
+                     (or (<= (setq len (+ (length string) column)) 76)
+                         (<= column 1))
+                     )
+                (setq rwl (cdr rwl))
+                )
+               ((memq (aref string 0) '(?  ?\t))
+                (setq string (concat "\n" string)
+                      len (length string)
+                      rwl (cdr rwl))
+                )
+               (must-output
+                (setq string "\n "
+                      len 1)
+                )
+               (t
+                (throw 'can-not-output nil)
+                ))
+       (cond ((and (setq len (car ret))
+                   (<= (+ column len) 76)
                    )
                    )
+              (setq string
+                    (eword-encode-text
+                     (ew-rword-charset rword)
+                     (ew-rword-encoding rword)
+                     (cdr ret)
+                     (ew-rword-type rword)
+                     ))
+              (setq len (+ (length string) column))
               (setq rwl (cdr rwl))
               )
              (t
               (setq rwl (cdr rwl))
               )
              (t
-              (setq string "\n ")
-              (setq len 1)
-              ))
-      (cond ((and (setq len (car ret))
-                 (<= (+ column len) 76)
-                 )
-            (setq string
-                  (eword-encode-text
-                   (ew-rword-charset rword)
-                   (ew-rword-encoding rword)
-                   (cdr ret)
-                   (ew-rword-type rword)
-                   ))
-            (setq len (+ (length string) column))
-            (setq rwl (cdr rwl))
-            )
-           (t
-            (setq string (car rword))
-            (let* ((p 0) np
-                   (str "") nstr)
-              (while (and (< p len)
-                          (progn
-                            (setq np (char-next-index (sref string p) p))
-                            (setq nstr (substring string 0 np))
-                            (setq ret (tm-eword::encoded-word-length
-                                       (cons nstr (cdr rword))
-                                       ))
-                            (setq nstr (cdr ret))
-                            (setq len (+ (car ret) column))
-                            (<= len 76)
-                            ))
-                (setq str nstr
-                      p np))
-              (if (string-equal str "")
-                  (setq string "\n "
-                        len 1)
-                (setq rwl (cons (cons (substring string p) (cdr rword))
-                                (cdr rwl)))
-                (setq string
-                      (eword-encode-text
-                       (ew-rword-charset rword)
-                       (ew-rword-encoding rword)
-                       str
-                       (ew-rword-type rword)))
-                (setq len (+ (length string) column))
-                )
-              )))
-      )
-    (list string len rwl)
-    ))
+              (setq string (car rword))
+              (let* ((p 0) np
+                     (str "") nstr)
+                (while (and (< p len)
+                            (progn
+                              (setq np (char-next-index (sref string p) p))
+                              (setq nstr (substring string 0 np))
+                              (setq ret (tm-eword::encoded-word-length
+                                         (cons nstr (cdr rword))
+                                         ))
+                              (setq nstr (cdr ret))
+                              (setq len (+ (car ret) column))
+                              (<= len 76)
+                              ))
+                  (setq str nstr
+                        p np))
+                (if (string-equal str "")
+                    (if must-output
+                        (setq string "\n "
+                              len 1)
+                      (throw 'can-not-output nil))
+                  (setq rwl (cons (cons (substring string p) (cdr rword))
+                                  (cdr rwl)))
+                  (setq string
+                        (eword-encode-text
+                         (ew-rword-charset rword)
+                         (ew-rword-encoding rword)
+                         str
+                         (ew-rword-type rword)))
+                  (setq len (+ (length string) column))
+                  )
+                )))
+       )
+      (list string len rwl)
+      )))
 
 (defun eword-encode-rword-list (column rwl)
 
 (defun eword-encode-rword-list (column rwl)
-  (let (ret dest ps special str ew-f pew-f)
+  (let (ret dest str ew-f pew-f folded-points)
     (while rwl
       (setq ew-f (nth 2 (car rwl)))
       (if (and pew-f ew-f)
     (while rwl
       (setq ew-f (nth 2 (car rwl)))
       (if (and pew-f ew-f)
@@ -339,40 +351,34 @@ MODE is allows `text', `comment', `phrase' or nil.  Default value is
                pew-f nil)
        (setq pew-f ew-f)
        )
                pew-f nil)
        (setq pew-f ew-f)
        )
-      (setq ret (tm-eword::encode-string-1 column rwl))
+      (if (null (setq ret (ew-encode-rword-1 column rwl)))
+         (let ((i (1- (length dest)))
+               c s r-dest r-column)
+           (catch 'success
+             (while (catch 'found
+                      (while (>= i 0)
+                        (cond ((memq (setq c (aref dest i)) '(?  ?\t))
+                               (if (memq i folded-points)
+                                   (throw 'found nil)
+                                 (setq folded-points (cons i folded-points))
+                                 (throw 'found i))
+                               )
+                              ((eq c ?\n)
+                               (throw 'found nil)
+                               ))
+                        (setq i (1- i))))
+               (setq s (substring dest i)
+                     r-column (length s)
+                     r-dest (concat (substring dest 0 i) "\n" s))
+               (when (setq ret (ew-encode-rword-1 r-column rwl))
+                 (setq dest r-dest
+                       column r-column)
+                 (throw 'success t)
+                 ))
+             (setq ret (ew-encode-rword-1 column rwl 'must-output))
+             )))
       (setq str (car ret))
       (setq str (car ret))
-      (if (eq (elt str 0) ?\n)
-         (if (eq special ?\()
-             (progn
-               (setq dest (concat dest "\n ("))
-               (setq ret (tm-eword::encode-string-1 2 rwl))
-               (setq str (car ret))
-               ))
-       (cond ((eq special ? )
-              (if (string= str "(")
-                  (setq ps t)
-                (setq dest (concat dest " "))
-                (setq ps nil)
-                ))
-             ((eq special ?\()
-              (if ps
-                  (progn
-                    (setq dest (concat dest " ("))
-                    (setq ps nil)
-                    )
-                (setq dest (concat dest "("))
-                )
-              )))
-      (cond ((string= str " ")
-            (setq special ? )
-            )
-           ((string= str "(")
-            (setq special ?\()
-            )
-           (t
-            (setq special nil)
-            (setq dest (concat dest str))
-            ))
+      (setq dest (concat dest str))
       (setq column (nth 1 ret)
            rwl (nth 2 ret))
       )
       (setq column (nth 1 ret)
            rwl (nth 2 ret))
       )
@@ -393,7 +399,7 @@ MODE is allows `text', `comment', `phrase' or nil.  Default value is
             (setq dest
                   (append dest
                           (list
             (setq dest
                   (append dest
                           (list
-                           (let ((ret (tm-eword::find-charset-rule
+                           (let ((ret (ew-find-charset-rule
                                        (find-non-ascii-charset-string str))))
                              (make-ew-rword
                               str (car ret)(nth 1 ret) 'phrase)
                                        (find-non-ascii-charset-string str))))
                              (make-ew-rword
                               str (car ret)(nth 1 ret) 'phrase)
@@ -403,13 +409,13 @@ MODE is allows `text', `comment', `phrase' or nil.  Default value is
            ((eq type 'comment)
             (setq dest
                   (append dest
            ((eq type 'comment)
             (setq dest
                   (append dest
-                          '(("(" nil nil))
+                          '(("(" nil nil special))
                           (tm-eword::words-to-ruled-words
                            (eword-encode-charset-words-to-words
                             (eword-encode-divide-into-charset-words
                              (cdr token)))
                            'comment)
                           (tm-eword::words-to-ruled-words
                            (eword-encode-charset-words-to-words
                             (eword-encode-divide-into-charset-words
                              (cdr token)))
                            'comment)
-                          '((")" nil nil))
+                          '((")" nil nil special))
                           ))
             )
            (t
                           ))
             )
            (t
@@ -423,7 +429,7 @@ MODE is allows `text', `comment', `phrase' or nil.  Default value is
             ))
       (setq phrase (cdr phrase))
       )
             ))
       (setq phrase (cdr phrase))
       )
-    (tm-eword::space-process dest)
+    (ew-space-process dest)
     ))
 
 (defun eword-encode-addr-seq-to-rword-list (seq)
     ))
 
 (defun eword-encode-addr-seq-to-rword-list (seq)
@@ -524,10 +530,12 @@ MODE is allows `text', `comment', `phrase' or nil.  Default value is
     dest))
 
 (defsubst eword-encode-msg-id-to-rword-list (msg-id)
     dest))
 
 (defsubst eword-encode-msg-id-to-rword-list (msg-id)
-  (cons '(" " nil nil)
-       (cons '("<" nil nil)
-             (nconc (eword-encode-addr-seq-to-rword-list (cdr msg-id))
-                    '((">" nil nil))))))
+  (list
+   (list
+    (concat "<"
+           (caar (eword-encode-addr-seq-to-rword-list (cdr msg-id)))
+           ">")
+    nil nil)))
 
 (defsubst eword-encode-in-reply-to-to-rword-list (in-reply-to)
   (let (dest)
 
 (defsubst eword-encode-in-reply-to-to-rword-list (in-reply-to)
   (let (dest)
diff --git a/ftp.in b/ftp.in
index e79cb27..0949088 100644 (file)
--- a/ftp.in
+++ b/ftp.in
@@ -2,12 +2,12 @@
 
   It is available from
 
 
   It is available from
 
-    ftp://ftp.jaist.ac.jp/pub/GNU/elisp/flim/flim-API
+    ftp://ftp.etl.go.jp/pub/mule/flim/flim-API
 
 --[[message/external-body;
        access-type=anon-ftp;
 
 --[[message/external-body;
        access-type=anon-ftp;
-       site="ftp.jaist.ac.jp";
-       directory="/pub/GNU/elisp/flim/flim-API";
+       site="ftp.etl.go.jp";
+       directory="/pub/mule/flim/flim-API";
        name="flim-VERSION.tar.gz";
        mode=image]]
 Content-Type: application/octet-stream;
        name="flim-VERSION.tar.gz";
        mode=image]]
 Content-Type: application/octet-stream;
index 12eee88..b3b7d90 100644 (file)
          (forward-char)))))
 
 (defsubst mailcap-look-at-qchar ()
          (forward-char)))))
 
 (defsubst mailcap-look-at-qchar ()
-  (let ((chr (char-after (point))))
-    (when (eq chr ?\\)
-      (forward-char 2)
-      (char-before (point))
-      )))
+  (when (eq (char-after (point)) ?\\)
+    (prog2
+       (forward-char)
+       (char-after (point))
+      (forward-char))))
 
 (defsubst mailcap-look-at-mtext ()
   (let ((beg (point)))
     (while (or (mailcap-look-at-qchar)
               (mailcap-look-at-schar)))
 
 (defsubst mailcap-look-at-mtext ()
   (let ((beg (point)))
     (while (or (mailcap-look-at-qchar)
               (mailcap-look-at-schar)))
-    (buffer-substring beg (point))
-    ))
+    (buffer-substring beg (point))))
 
 
 ;;; @ field
 
 
 ;;; @ field
index c47e00f..e0426b8 100644 (file)
@@ -1,4 +1,4 @@
-;;; mel-b-ccl.el: CCL based encoder/decoder of Base64
+;;; mel-b-ccl.el --- Base64 encoder/decoder using CCL.
 
 ;; Copyright (C) 1998 Tanaka Akira
 
 
 ;; Copyright (C) 1998 Tanaka Akira
 
@@ -19,7 +19,7 @@
 ;; General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
 ;; 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
+;; along with this program; see the file COPYING.  If not, write to the
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
@@ -105,6 +105,10 @@ abcdefghijklmnopqrstuvwxyz\
    (logand v (lsh 255 8))
    (lsh (logand v 255) 16)))
 
    (logand v (lsh 255 8))
    (lsh (logand v 255) 16)))
 
+)
+
+(eval-when-compile
+
 (defconst mel-ccl-decode-b-0-table
   (vconcat
    (mapcar
 (defconst mel-ccl-decode-b-0-table
   (vconcat
    (mapcar
@@ -402,17 +406,19 @@ abcdefghijklmnopqrstuvwxyz\
     (if no-line-break
        (decode-coding-string string 'mel-ccl-b-rev)
       (decode-coding-string string 'mel-ccl-base64-lf-rev)))
     (if no-line-break
        (decode-coding-string string 'mel-ccl-b-rev)
       (decode-coding-string string 'mel-ccl-base64-lf-rev)))
+  (defalias-maybe 'base64-encode-string 'base64-ccl-encode-string)
 
   (defun base64-ccl-encode-region (start end &optional no-line-break)
     "Encode region from START to END with base64 encoding."
 
   (defun base64-ccl-encode-region (start end &optional no-line-break)
     "Encode region from START to END with base64 encoding."
-    (interactive "r")
+    (interactive "*r")
     (if no-line-break
        (decode-coding-region start end 'mel-ccl-b-rev)
       (decode-coding-region start end 'mel-ccl-base64-lf-rev)))
     (if no-line-break
        (decode-coding-region start end 'mel-ccl-b-rev)
       (decode-coding-region start end 'mel-ccl-base64-lf-rev)))
+  (defalias-maybe 'base64-encode-region 'base64-ccl-encode-region)
 
   (defun base64-ccl-insert-encoded-file (filename)
     "Encode contents of file FILENAME to base64, and insert the result."
 
   (defun base64-ccl-insert-encoded-file (filename)
     "Encode contents of file FILENAME to base64, and insert the result."
-    (interactive (list (read-file-name "Insert encoded file: ")))
+    (interactive "*fInsert encoded file: ")
     (insert-file-contents-as-coding-system 'mel-ccl-base64-lf-rev filename))
 
   (mel-define-method-function (mime-encode-string string (nil "base64"))
     (insert-file-contents-as-coding-system 'mel-ccl-base64-lf-rev filename))
 
   (mel-define-method-function (mime-encode-string string (nil "base64"))
@@ -430,17 +436,17 @@ abcdefghijklmnopqrstuvwxyz\
 (defun base64-ccl-decode-string (string)
   "Decode base64 encoded STRING"
   (encode-coding-string string 'mel-ccl-b-rev))
 (defun base64-ccl-decode-string (string)
   "Decode base64 encoded STRING"
   (encode-coding-string string 'mel-ccl-b-rev))
+(defalias-maybe 'base64-decode-string 'base64-ccl-decode-string)
 
 (defun base64-ccl-decode-region (start end)
   "Decode base64 encoded the region from START to END."
 
 (defun base64-ccl-decode-region (start end)
   "Decode base64 encoded the region from START to END."
-  (interactive "r")
+  (interactive "*r")
   (encode-coding-region start end 'mel-ccl-b-rev))
   (encode-coding-region start end 'mel-ccl-b-rev))
+(defalias-maybe 'base64-decode-region 'base64-ccl-decode-region)
 
 (defun base64-ccl-write-decoded-region (start end filename)
   "Decode the region from START to END and write out to FILENAME."
 
 (defun base64-ccl-write-decoded-region (start end filename)
   "Decode the region from START to END and write out to FILENAME."
-  (interactive
-    (list (region-beginning) (region-end)
-          (read-file-name "Write decoded region to file: ")))
+  (interactive "*r\nFWrite decoded region to file: ")
   (write-region-as-coding-system 'mel-ccl-b-rev start end filename))
 
 (mel-define-method-function (mime-decode-string string (nil "base64"))
   (write-region-as-coding-system 'mel-ccl-b-rev start end filename))
 
 (mel-define-method-function (mime-decode-string string (nil "base64"))
@@ -452,8 +458,9 @@ abcdefghijklmnopqrstuvwxyz\
  'base64-ccl-write-decoded-region)
 
 (mel-define-method encoded-text-decode-string (string (nil "B"))
  'base64-ccl-write-decoded-region)
 
 (mel-define-method encoded-text-decode-string (string (nil "B"))
-  (if (and (string-match B-encoded-text-regexp string)
-          (string= string (match-string 0 string)))
+  (if (string-match (eval-when-compile
+                     (concat "\\`" B-encoded-text-regexp "\\'"))
+                   string)
       (base64-ccl-decode-string string)
     (error "Invalid encoded-text %s" string)))
 
       (base64-ccl-decode-string string)
     (error "Invalid encoded-text %s" string)))
 
@@ -463,4 +470,4 @@ abcdefghijklmnopqrstuvwxyz\
 
 (provide 'mel-b-ccl)
 
 
 (provide 'mel-b-ccl)
 
-;;; mel-b-ccl.el ends here
+;;; mel-b-ccl.el ends here.
index 411fa74..59bff29 100644 (file)
@@ -1,11 +1,11 @@
-;;; mel-b-dl.el: Base64 encoder/decoder using DL module
+;;; mel-b-dl.el --- Base64 encoder/decoder using DL module.
 
 ;; Copyright (C) 1998 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Keywords: MIME, Base64
 
 
 ;; Copyright (C) 1998 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Keywords: MIME, Base64
 
-;; This file is part of MEL (MIME Encoding Library).
+;; 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
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License as
 ;; General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
 ;; 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
+;; along with this program; see the file COPYING.  If not, write to the
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;;; Code:
 
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;;; Code:
 
-(require 'poe)
 (require 'mime-def)
 
 (eval-and-compile
   (defvar base64-dl-handle
 (require 'mime-def)
 
 (eval-and-compile
   (defvar base64-dl-handle
-    (and (file-exists-p base64-dl-module)
+    (and (stringp base64-dl-module)
+        (file-exists-p base64-dl-module)
         (dynamic-link base64-dl-module)))
 
   (dynamic-call "emacs_base64_init" base64-dl-handle)
   )
 
         (dynamic-link base64-dl-module)))
 
   (dynamic-call "emacs_base64_init" base64-dl-handle)
   )
 
+;; base64-dl-module provides `encode-base64-string' and `decode-base64-string'.
+(defalias 'base64-encode-string 'encode-base64-string)
+(defalias 'base64-decode-string 'decode-base64-string)
+
 (defun base64-encode-region (start end)
   "Encode current region by base64.
 START and END are buffer positions."
 (defun base64-encode-region (start end)
   "Encode current region by base64.
 START and END are buffer positions."
-  (interactive "r")
-  (let ((str (buffer-substring start end)))
-    (delete-region start end)
-    (insert (encode-base64-string str))
-    )
-  (or (bolp)
-      (insert "\n"))
-  )
-
-(defun decode-base64-region (start end)
+  (interactive "*r")
+  (insert
+    (prog1
+       (base64-encode-string
+        (buffer-substring start end))
+      (delete-region start end)))
+  (or (bolp) (insert ?\n)))
+
+(defun base64-decode-region (start end)
   "Decode current region by base64.
 START and END are buffer positions."
   "Decode current region by base64.
 START and END are buffer positions."
-  (interactive "r")
-  (let ((str (buffer-substring start end)))
-    (delete-region start end)
-    (condition-case err
-       (insert (decode-base64-string str))
-      (error (message (nth 1 err)))
-      )))
-
-(defalias 'base64-encode-string 'encode-base64-string)
-(defalias 'base64-decode-string 'decode-base64-string)
+  (interactive "*r")
+  (insert
+   (prog1
+       (base64-decode-string
+       (buffer-substring start end))
+     (delete-region start end))))
 
 
 (mel-define-method-function (mime-encode-string string (nil "base64"))
 
 
 (mel-define-method-function (mime-encode-string string (nil "base64"))
-                           'encode-base64-string)
+                           'base64-encode-string)
 (mel-define-method-function (mime-decode-string string (nil "base64"))
 (mel-define-method-function (mime-decode-string string (nil "base64"))
-                           'decode-base64-string)
+                           'base64-decode-string)
 (mel-define-method-function (mime-encode-region start end (nil "base64"))
                            'base64-encode-region)
 (mel-define-method-function (mime-decode-region start end (nil "base64"))
 (mel-define-method-function (mime-encode-region start end (nil "base64"))
                            'base64-encode-region)
 (mel-define-method-function (mime-decode-region start end (nil "base64"))
-                           'decode-base64-region)
+                           'base64-decode-region)
 
 (mel-define-method-function (encoded-text-encode-string string (nil "B"))
 
 (mel-define-method-function (encoded-text-encode-string string (nil "B"))
-                           'encode-base64-string)
+                           'base64-encode-string)
 
 (mel-define-method encoded-text-decode-string (string (nil "B"))
 
 (mel-define-method encoded-text-decode-string (string (nil "B"))
-  (if (and (string-match B-encoded-text-regexp string)
-          (string= string (match-string 0 string)))
-      (decode-base64-string string)
+  (if (string-match (eval-when-compile
+                     (concat "\\`" B-encoded-text-regexp "\\'"))
+                   string)
+      (base64-decode-string string)
     (error "Invalid encoded-text %s" string)))
 
 
     (error "Invalid encoded-text %s" string)))
 
 
@@ -89,28 +89,23 @@ START and END are buffer positions."
 It calls external base64 encoder specified by
 `base64-external-encoder'.  So you must install the program (maybe
 mmencode included in metamail or XEmacs package)."
 It calls external base64 encoder specified by
 `base64-external-encoder'.  So you must install the program (maybe
 mmencode included in metamail or XEmacs package)."
-  (interactive (list (read-file-name "Insert encoded file: ")))
-  (insert (encode-base64-string
+  (interactive "*fInsert encoded file: ")
+  (insert (base64-encode-string
           (with-temp-buffer
             (set-buffer-multibyte nil)
             (insert-file-contents-as-binary filename)
             (buffer-string))))
           (with-temp-buffer
             (set-buffer-multibyte nil)
             (insert-file-contents-as-binary filename)
             (buffer-string))))
-  (or (bolp)
-      (insert "\n"))
-  )
+  (or (bolp) (insert ?\n)))
 
 ;; (mel-define-method mime-write-decoded-region (start end filename
 ;;                                                     (nil "base64"))
 ;;   "Decode and write current region encoded by base64 into FILENAME.
 ;; START and END are buffer positions."
 
 ;; (mel-define-method mime-write-decoded-region (start end filename
 ;;                                                     (nil "base64"))
 ;;   "Decode and write current region encoded by base64 into FILENAME.
 ;; START and END are buffer positions."
-;;   (interactive
-;;    (list (region-beginning) (region-end)
-;;          (read-file-name "Write decoded region to file: ")))
+;;   (interactive "*r\nFWrite decoded region to file: ")
 ;;   (let ((str (buffer-substring start end)))
 ;;     (with-temp-buffer
 ;;   (let ((str (buffer-substring start end)))
 ;;     (with-temp-buffer
-;;       (insert (decode-base64-string str))
-;;       (write-region-as-binary (point-min) (point-max) filename)
-;;       )))
+;;       (insert (base64-decode-string str))
+;;       (write-region-as-binary (point-min)(point-max) filename))))
 
 
 ;;; @ end
 
 
 ;;; @ end
index 7426cc5..076f2f6 100644 (file)
@@ -1,13 +1,13 @@
-;;; mel-b-el.el: Base64 encoder/decoder for GNU Emacs
+;;; mel-b-el.el --- Base64 encoder/decoder.
 
 ;; Copyright (C) 1992,1995,1996,1997,1998 Free Software Foundation, Inc.
 
 ;; Author: ENAMI Tsugutomo <enami@sys.ptg.sony.co.jp>
 
 ;; Copyright (C) 1992,1995,1996,1997,1998 Free Software Foundation, Inc.
 
 ;; Author: ENAMI Tsugutomo <enami@sys.ptg.sony.co.jp>
-;;         MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;;     MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1995/6/24
 ;; Keywords: MIME, Base64
 
 ;; Created: 1995/6/24
 ;; Keywords: MIME, Base64
 
-;; This file is part of MEL (MIME Encoding Library).
+;; 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
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License as
 ;; General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
 ;; 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
+;; along with this program; see the file COPYING.  If not, write to the
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;;; Code:
 
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;;; Code:
 
-(require 'poe)
 (require 'mime-def)
 
 
 (require 'mime-def)
 
 
@@ -72,6 +71,26 @@ external decoder is called."
                 (integer :tag "Size")))
 
 
                 (integer :tag "Size")))
 
 
+;;; @ utility function
+;;;
+
+(defun pack-sequence (seq size)
+  "Split sequence SEQ into SIZE elements packs, and return list of packs.
+\[mel-b-el; tl-seq function]"
+  (let ((len (length seq))
+       (p 0)
+       dest unit)
+    (while (< p len)
+      (setq unit (cons (elt seq p) unit))
+      (setq p (1+ p))
+      (when (zerop (mod p size))
+       (setq dest (cons (nreverse unit) dest))
+       (setq unit nil)))
+    (if unit
+       (nreverse (cons (nreverse unit) dest))
+      (nreverse dest))))
+
+
 ;;; @ internal base64 encoder
 ;;;    based on base64 decoder by Enami Tsugutomo
 
 ;;; @ internal base64 encoder
 ;;;    based on base64 decoder by Enami Tsugutomo
 
@@ -84,33 +103,31 @@ external decoder is called."
   `(aref base64-characters ,n))
 
 (defun base64-encode-1 (pack)
   `(aref base64-characters ,n))
 
 (defun base64-encode-1 (pack)
-  (let ((a (car pack))
-       (b (nth 1 pack))
-       (c (nth 2 pack)))
-    (concat
-     (char-to-string (base64-num-to-char (ash a -2)))
-     (if b
-        (concat
-         (char-to-string
-          (base64-num-to-char (logior (ash (logand a 3) 4) (ash b -4))))
-         (if c
-             (concat
-              (char-to-string
-               (base64-num-to-char (logior (ash (logand b 15) 2) (ash c -6))))
-              (char-to-string (base64-num-to-char (logand c 63)))
-              )
-           (concat (char-to-string
-                    (base64-num-to-char (ash (logand b 15) 2))) "=")
-           ))
-       (concat (char-to-string
-               (base64-num-to-char (ash (logand a 3) 4))) "==")
-       ))))
+  (let ((buf (make-string 4 ?=)))
+    (aset buf 0 (base64-num-to-char (ash (car pack) -2)))
+    (if (nth 1 pack)
+       (progn
+         (aset buf 1 (base64-num-to-char
+                      (logior (ash (logand (car pack) 3) 4)
+                              (ash (nth 1 pack) -4))))
+         (if (nth 2 pack)
+             (progn
+               (aset buf 2 (base64-num-to-char
+                            (logior (ash (logand (nth 1 pack) 15) 2)
+                                    (ash (nth 2 pack) -6))))
+               (aset buf 3 (base64-num-to-char
+                            (logand (nth 2 pack) 63))))
+           (aset buf 2 (base64-num-to-char
+                        (ash (logand (nth 1 pack) 15) 2)))))
+      (aset buf 1 (base64-num-to-char
+                  (ash (logand (car pack) 3) 4))))
+    buf))
 
 (defun-maybe base64-encode-string (string)
   "Encode STRING to base64, and return the result."
 
 (defun-maybe base64-encode-string (string)
   "Encode STRING to base64, and return the result."
-  (let ((len (length string))
-       (b 0)(e 57)
-       dest)
+  (let* ((len (length string))
+        (b 0)(e 57)
+        (dest ""))
     (while (< e len)
       (setq dest
            (concat dest
     (while (< e len)
       (setq dest
            (concat dest
@@ -120,32 +137,23 @@ external decoder is called."
                     "")
                    "\n"))
       (setq b e
                     "")
                    "\n"))
       (setq b e
-           e (+ e 57)
-           )
-      )
-    (let* ((es (mapconcat
-               (function base64-encode-1)
-               (pack-sequence (substring string b) 3)
-               ""))
-          (m (mod (length es) 4))
-          )
-      (concat dest es (cond ((= m 3) "=")
-                           ((= m 2) "==")
-                           ))
-      )))
+           e (+ e 57)))
+    (concat dest
+           (mapconcat
+            (function base64-encode-1)
+            (pack-sequence (substring string b) 3)
+            ""))))
 
 (defun base64-internal-encode-region (beg end)
   (save-excursion
     (save-restriction
       (narrow-to-region beg end)
 
 (defun base64-internal-encode-region (beg end)
   (save-excursion
     (save-restriction
       (narrow-to-region beg end)
-      (let ((str (buffer-substring beg end)))
-       (delete-region beg end)
-       (insert (base64-encode-string str))
-       )
-      (or (bolp)
-         (insert "\n")
-         )
-      )))
+      (insert
+       (prog1
+          (base64-encode-string
+           (buffer-substring beg end))
+        (delete-region beg end)))
+      (or (bolp) (insert ?\n)))))
 
 
 ;;; @ internal base64 decoder
 
 
 ;;; @ internal base64 decoder
@@ -166,8 +174,7 @@ external decoder is called."
 
 (defsubst base64-internal-decode (string buffer)
   (let* ((len (length string))
 
 (defsubst base64-internal-decode (string buffer)
   (let* ((len (length string))
-        (i 0)
-        (j 0)
+        (i 0)(j 0)
         v1 v2 v3)
     (catch 'tag
       (while (< i len)
         v1 v2 v3)
     (catch 'tag
       (while (< i len)
@@ -187,12 +194,9 @@ external decoder is called."
                (if v4
                    (aset buffer (prog1 j (setq j (1+ j)))
                          (logior (lsh (logand v3 3) 6) v4))
                (if v4
                    (aset buffer (prog1 j (setq j (1+ j)))
                          (logior (lsh (logand v3 3) 6) v4))
-                 (throw 'tag nil)
-                 ))
-           (throw 'tag nil)
-           ))))
-    (substring buffer 0 j)
-    ))
+                 (throw 'tag nil)))
+           (throw 'tag nil)))))
+    (substring buffer 0 j)))
 
 (defun base64-internal-decode-string (string)
   (base64-internal-decode string (make-string (length string) 0)))
 
 (defun base64-internal-decode-string (string)
   (base64-internal-decode string (make-string (length string) 0)))
@@ -204,9 +208,10 @@ external decoder is called."
 (defun base64-internal-decode-region (beg end)
   (save-excursion
     (let ((str (string-as-unibyte (buffer-substring beg end))))
 (defun base64-internal-decode-region (beg end)
   (save-excursion
     (let ((str (string-as-unibyte (buffer-substring beg end))))
-      (delete-region beg end)
-      (goto-char beg)
-      (insert (base64-internal-decode str str)))))
+      (insert
+       (prog1
+          (base64-internal-decode str str)
+        (delete-region beg end))))))
 
 ;; (defun base64-internal-decode-region2 (beg end)
 ;;   (save-excursion
 
 ;; (defun base64-internal-decode-region2 (beg end)
 ;;   (save-excursion
@@ -233,30 +238,30 @@ external decoder is called."
       (as-binary-process
        (apply (function call-process-region)
              beg end (car base64-external-encoder)
       (as-binary-process
        (apply (function call-process-region)
              beg end (car base64-external-encoder)
-             t t nil (cdr base64-external-encoder)))
+             t t nil
+             (cdr base64-external-encoder)))
       ;; for OS/2
       ;;   regularize line break code
       (goto-char (point-min))
       (while (re-search-forward "\r$" nil t)
       ;; for OS/2
       ;;   regularize line break code
       (goto-char (point-min))
       (while (re-search-forward "\r$" nil t)
-       (replace-match ""))
-      )))
+       (replace-match "")))))
 
 (defun base64-external-decode-region (beg end)
   (save-excursion
     (as-binary-process
      (apply (function call-process-region)
            beg end (car base64-external-decoder)
 
 (defun base64-external-decode-region (beg end)
   (save-excursion
     (as-binary-process
      (apply (function call-process-region)
            beg end (car base64-external-decoder)
-           t t nil (cdr base64-external-decoder)))
-    ))
+           t t nil
+           (cdr base64-external-decoder)))))
 
 (defun base64-external-decode-string (string)
   (with-temp-buffer
     (insert string)
     (as-binary-process
      (apply (function call-process-region)
 
 (defun base64-external-decode-string (string)
   (with-temp-buffer
     (insert string)
     (as-binary-process
      (apply (function call-process-region)
-           (point-min) (point-max)
-           (car base64-external-decoder)
-           t t nil (cdr base64-external-decoder)))
+           (point-min)(point-max) (car base64-external-decoder)
+           t t nil
+           (cdr base64-external-decoder)))
     (buffer-string)))
 
 
     (buffer-string)))
 
 
@@ -271,7 +276,7 @@ smaller than `base64-internal-encoding-limit', otherwise it calls
 external base64 encoder specified by `base64-external-encoder'.  In
 this case, you must install the program (maybe mmencode included in
 metamail or XEmacs package)."
 external base64 encoder specified by `base64-external-encoder'.  In
 this case, you must install the program (maybe mmencode included in
 metamail or XEmacs package)."
-  (interactive "r")
+  (interactive "*r")
   (if (and base64-internal-encoding-limit
           (> (- end start) base64-internal-encoding-limit))
       (base64-external-encode-region start end)
   (if (and base64-internal-encoding-limit
           (> (- end start) base64-internal-encoding-limit))
       (base64-external-encode-region start end)
@@ -285,7 +290,7 @@ smaller than `base64-internal-decoding-limit', otherwise it calls
 external base64 decoder specified by `base64-external-decoder'.  In
 this case, you must install the program (maybe mmencode included in
 metamail or XEmacs package)."
 external base64 decoder specified by `base64-external-decoder'.  In
 this case, you must install the program (maybe mmencode included in
 metamail or XEmacs package)."
-  (interactive "r")
+  (interactive "*r")
   (if (and base64-internal-decoding-limit
           (> (- end start) base64-internal-decoding-limit))
       (base64-external-decode-region start end)
   (if (and base64-internal-decoding-limit
           (> (- end start) base64-internal-decoding-limit))
       (base64-external-decode-region start end)
@@ -298,7 +303,6 @@ smaller than `base64-internal-decoding-limit', otherwise it calls
 external base64 decoder specified by `base64-external-decoder'.  In
 this case, you must install the program (maybe mmencode included in
 metamail or XEmacs package)."
 external base64 decoder specified by `base64-external-decoder'.  In
 this case, you must install the program (maybe mmencode included in
 metamail or XEmacs package)."
-  (interactive "r")
   (if (and base64-internal-decoding-limit
           (> (length string) base64-internal-decoding-limit))
       (base64-external-decode-string string)
   (if (and base64-internal-decoding-limit
           (> (length string) base64-internal-decoding-limit))
       (base64-external-decode-string string)
@@ -318,8 +322,9 @@ metamail or XEmacs package)."
                            'base64-encode-string)
 
 (mel-define-method encoded-text-decode-string (string (nil "B"))
                            'base64-encode-string)
 
 (mel-define-method encoded-text-decode-string (string (nil "B"))
-  (if (and (string-match B-encoded-text-regexp string)
-          (string= string (match-string 0 string)))
+  (if (string-match (eval-when-compile
+                     (concat "\\`" B-encoded-text-regexp "\\'"))
+                   string)
       (base64-decode-string string)
     (error "Invalid encoded-text %s" string)))
 
       (base64-decode-string string)
     (error "Invalid encoded-text %s" string)))
 
@@ -328,21 +333,21 @@ metamail or XEmacs package)."
 It calls external base64 encoder specified by
 `base64-external-encoder'.  So you must install the program (maybe
 mmencode included in metamail or XEmacs package)."
 It calls external base64 encoder specified by
 `base64-external-encoder'.  So you must install the program (maybe
 mmencode included in metamail or XEmacs package)."
-  (interactive (list (read-file-name "Insert encoded file: ")))
+  (interactive "*fInsert encoded file: ")
   (if (and base64-internal-encoding-limit
           (> (nth 7 (file-attributes filename))
              base64-internal-encoding-limit))
   (if (and base64-internal-encoding-limit
           (> (nth 7 (file-attributes filename))
              base64-internal-encoding-limit))
-      (apply (function call-process) (car base64-external-encoder)
-            filename t nil (cdr base64-external-encoder))
+      (apply (function call-process)
+            (car base64-external-encoder)
+            filename t nil
+            (cdr base64-external-encoder))
     (insert
      (base64-encode-string
       (with-temp-buffer
        (set-buffer-multibyte nil)
        (insert-file-contents-as-binary filename)
        (buffer-string))))
     (insert
      (base64-encode-string
       (with-temp-buffer
        (set-buffer-multibyte nil)
        (insert-file-contents-as-binary filename)
        (buffer-string))))
-    (or (bolp)
-       (insert "\n"))
-     ))
+    (or (bolp) (insert ?\n))))
 
 (mel-define-method-function (mime-insert-encoded-file filename (nil "base64"))
                            'base64-insert-encoded-file)
 
 (mel-define-method-function (mime-insert-encoded-file filename (nil "base64"))
                            'base64-insert-encoded-file)
@@ -350,9 +355,7 @@ mmencode included in metamail or XEmacs package)."
 (defun base64-write-decoded-region (start end filename)
   "Decode and write current region encoded by base64 into FILENAME.
 START and END are buffer positions."
 (defun base64-write-decoded-region (start end filename)
   "Decode and write current region encoded by base64 into FILENAME.
 START and END are buffer positions."
-  (interactive
-   (list (region-beginning) (region-end)
-        (read-file-name "Write decoded region to file: ")))
+  (interactive "*r\nFWrite decoded region to file: ")
   (if (and base64-internal-decoding-limit
           (> (- end start) base64-internal-decoding-limit))
       (as-binary-process
   (if (and base64-internal-decoding-limit
           (> (- end start) base64-internal-decoding-limit))
       (as-binary-process
@@ -365,42 +368,13 @@ START and END are buffer positions."
     (let ((str (buffer-substring start end)))
       (with-temp-buffer
        (insert (base64-internal-decode-string str))
     (let ((str (buffer-substring start end)))
       (with-temp-buffer
        (insert (base64-internal-decode-string str))
-       (write-region-as-binary (point-min) (point-max) filename)
-       ))))
+       (write-region-as-binary (point-min) (point-max) filename)))))
 
 (mel-define-method-function
  (mime-write-decoded-region start end filename (nil "base64"))
  'base64-write-decoded-region)
 
        
 
 (mel-define-method-function
  (mime-write-decoded-region start end filename (nil "base64"))
  'base64-write-decoded-region)
 
        
-;;; @ etc
-;;;
-
-(defun pack-sequence (seq size)
-  "Split sequence SEQ into SIZE elements packs,
-and return list of packs. [mel-b-el; tl-seq function]"
-  (let ((len (length seq)) (p 0) obj
-       unit (i 0)
-       dest)
-    (while (< p len)
-      (setq obj (elt seq p))
-      (setq unit (cons obj unit))
-      (setq i (1+ i))
-      (if (= i size)
-         (progn
-           (setq dest (cons (reverse unit) dest))
-           (setq unit nil)
-           (setq i 0)
-           ))
-      (setq p (1+ p))
-      )
-    (if unit
-       (setq dest (cons (reverse unit) dest))
-      )
-    (reverse dest)
-    ))
-
-
 ;;; @ end
 ;;;
 
 ;;; @ end
 ;;;
 
index 8be016c..c0f3577 100644 (file)
--- a/mel-g.el
+++ b/mel-g.el
@@ -1,15 +1,14 @@
-;;; mel-g.el: Gzip64 encoder/decoder for GNU Emacs
+;;; mel-g.el --- Gzip64 encoder/decoder.
 
 ;; Copyright (C) 1995,1996,1997,1998 MORIOKA Tomohiko
 
 ;; Copyright (C) 1995,1996,1997,1998 MORIOKA Tomohiko
-;; Copyright (C) 1996,1997 Shuhei KOBAYASHI
+;; Copyright (C) 1996,1997,1999 Shuhei KOBAYASHI
 
 
-;; Author: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
-;;     modified by MORIOKA Tomohiko <morioka@jaist.ac.jp>
-;; Maintainer: Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
+;; Author: Shuhei KOBAYASHI <shuhei@aqua.ocn.ne.jp>
+;;     MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1995/10/25
 ;; Keywords: Gzip64, base64, gzip, MIME
 
 ;; Created: 1995/10/25
 ;; Keywords: Gzip64, base64, gzip, MIME
 
-;; This file is part of MEL (MIME Encoding Library).
+;; 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
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License as
@@ -22,7 +21,7 @@
 ;; General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
 ;; 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
+;; along with this program; see the file COPYING.  If not, write to the
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
@@ -33,9 +32,8 @@
 
 ;;; Code:
 
 
 ;;; Code:
 
-(require 'poem)
+(require 'mime-def)
 (require 'path-util)
 (require 'path-util)
-(require 'mel)
 
 
 ;;; @ variables
 
 
 ;;; @ variables
 (defvar gzip64-external-encoder
   (let ((file (exec-installed-p "mmencode")))
     (and file
 (defvar gzip64-external-encoder
   (let ((file (exec-installed-p "mmencode")))
     (and file
-        (` ("sh" "-c" (, (concat "gzip -c | " file))))
-        ))
+        (` ("sh" "-c" (, (concat "gzip -c | " file))))))
   "*list of gzip64 encoder program name and its arguments.")
 
 (defvar gzip64-external-decoder
   (let ((file (exec-installed-p "mmencode")))
     (and file
   "*list of gzip64 encoder program name and its arguments.")
 
 (defvar gzip64-external-decoder
   (let ((file (exec-installed-p "mmencode")))
     (and file
-        (` ("sh" "-c" (, (concat file " -u | gzip -dc"))))
-        ))
+        (` ("sh" "-c" (, (concat file " -u | gzip -dc"))))))
   "*list of gzip64 decoder program name and its arguments.")
 
 
   "*list of gzip64 decoder program name and its arguments.")
 
 
 (defun gzip64-external-encode-region (beg end)
   (interactive "*r")
   (save-excursion
 (defun gzip64-external-encode-region (beg end)
   (interactive "*r")
   (save-excursion
-    (as-binary-process (apply (function call-process-region)
-                             beg end (car gzip64-external-encoder)
-                             t t nil (cdr gzip64-external-encoder))
-                      )
+    (as-binary-process
+     (apply (function call-process-region)
+           beg end (car gzip64-external-encoder)
+           t t nil
+           (cdr gzip64-external-encoder)))
     ;; for OS/2
     ;;   regularize line break code
     (goto-char (point-min))
     (while (re-search-forward "\r$" nil t)
     ;; for OS/2
     ;;   regularize line break code
     (goto-char (point-min))
     (while (re-search-forward "\r$" nil t)
-      (replace-match "")
-      )
-    ))
+      (replace-match ""))))
 
 (defun gzip64-external-decode-region (beg end)
   (interactive "*r")
   (save-excursion
 
 (defun gzip64-external-decode-region (beg end)
   (interactive "*r")
   (save-excursion
-    (as-binary-process (apply (function call-process-region)
-                             beg end (car gzip64-external-decoder)
-                             t t nil (cdr gzip64-external-decoder))
-                      )
-    ))
+    (as-binary-process
+     (apply (function call-process-region)
+           beg end (car gzip64-external-decoder)
+           t t nil
+           (cdr gzip64-external-decoder)))))
 
 (mel-define-method-function (mime-encode-region start end (nil "x-gzip64"))
                            'gzip64-external-encode-region)
 
 (mel-define-method-function (mime-encode-region start end (nil "x-gzip64"))
                            'gzip64-external-encode-region)
 ;;;
 
 (mel-define-method mime-insert-encoded-file (filename (nil "x-gzip64"))
 ;;;
 
 (mel-define-method mime-insert-encoded-file (filename (nil "x-gzip64"))
-  (interactive (list (read-file-name "Insert encoded file: ")))
-  (apply (function call-process) (car gzip64-external-encoder)
+  (interactive "*fInsert encoded file: ")
+  (apply (function call-process)
+        (car gzip64-external-encoder)
         filename t nil
         filename t nil
-        (cdr gzip64-external-encoder))
-  )
+        (cdr gzip64-external-encoder)))
 
 (mel-define-method mime-write-decoded-region (start end filename
                                                    (nil "x-gzip64"))
   "Decode and write current region encoded by gzip64 into FILENAME.
 START and END are buffer positions."
 
 (mel-define-method mime-write-decoded-region (start end filename
                                                    (nil "x-gzip64"))
   "Decode and write current region encoded by gzip64 into FILENAME.
 START and END are buffer positions."
-  (interactive
-   (list (region-beginning) (region-end)
-        (read-file-name "Write decoded region to file: ")))
+  (interactive "*r\nFWrite decoded region to file: ")
   (as-binary-process
    (apply (function call-process-region)
          start end (car gzip64-external-decoder)
          nil nil nil
          (let ((args (cdr gzip64-external-decoder)))
            (append (butlast args)
   (as-binary-process
    (apply (function call-process-region)
          start end (car gzip64-external-decoder)
          nil nil nil
          (let ((args (cdr gzip64-external-decoder)))
            (append (butlast args)
-                   (list (concat (car (last args)) ">" filename))))
-         )))
+                   (list (concat (car (last args)) ">" filename)))))))
 
 
 ;;; @ end
 
 
 ;;; @ end
index d08184d..04e09b0 100644 (file)
@@ -1,5 +1,4 @@
-;;; mel-ccl.el: CCL based encoder/decoder of Quoted-Printable
-;;;             and Q-encoding
+;;; mel-q-ccl.el --- Quoted-Printable encoder/decoder using CCL.
 
 ;; Copyright (C) 1998 Tanaka Akira
 
 
 ;; Copyright (C) 1998 Tanaka Akira
 
@@ -20,7 +19,7 @@
 ;; General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
 ;; 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
+;; along with this program; see the file COPYING.  If not, write to the
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
@@ -237,6 +236,8 @@ abcdefghijklmnopqrstuvwxyz\
 
 (eval-when-compile
 
 
 (eval-when-compile
 
+(defvar eof-block-branches)
+(defvar eof-block-reg)
 (defun mel-ccl-set-eof-block (branch)
   (let ((p (assoc branch eof-block-branches)))
     (unless p
 (defun mel-ccl-set-eof-block (branch)
   (let ((p (assoc branch eof-block-branches)))
     (unless p
@@ -244,6 +245,9 @@ abcdefghijklmnopqrstuvwxyz\
            eof-block-branches (cons p eof-block-branches)))
     `(,eof-block-reg = ,(cdr p))))
 
            eof-block-branches (cons p eof-block-branches)))
     `(,eof-block-reg = ,(cdr p))))
 
+)
+
+(eval-when-compile
 
 (defun mel-ccl-try-to-read-crlf (input-crlf reg
                                            succ
 
 (defun mel-ccl-try-to-read-crlf (input-crlf reg
                                            succ
@@ -263,6 +267,10 @@ abcdefghijklmnopqrstuvwxyz\
        ,succ
        ,crlf-fail))))
 
        ,succ
        ,crlf-fail))))
 
+)
+
+(eval-when-compile
+
 ;; Generated CCL program works not properly on 20.2 because CCL_EOF_BLOCK
 ;; is not executed.
 (defun mel-ccl-encode-quoted-printable-generic (input-crlf output-crlf)
 ;; Generated CCL program works not properly on 20.2 because CCL_EOF_BLOCK
 ;; is not executed.
 (defun mel-ccl-encode-quoted-printable-generic (input-crlf output-crlf)
@@ -884,12 +892,12 @@ abcdefghijklmnopqrstuvwxyz\
 
   (defun quoted-printable-ccl-encode-region (start end)
     "Encode the region from START to END with quoted-printable encoding."
 
   (defun quoted-printable-ccl-encode-region (start end)
     "Encode the region from START to END with quoted-printable encoding."
-    (interactive "r")
+    (interactive "*r")
     (decode-coding-region start end 'mel-ccl-quoted-printable-lf-lf-rev))
 
   (defun quoted-printable-ccl-insert-encoded-file (filename)
     "Encode contents of the file named as FILENAME, and insert it."
     (decode-coding-region start end 'mel-ccl-quoted-printable-lf-lf-rev))
 
   (defun quoted-printable-ccl-insert-encoded-file (filename)
     "Encode contents of the file named as FILENAME, and insert it."
-    (interactive (list (read-file-name "Insert encoded file: ")))
+    (interactive "*fInsert encoded file: ")
     (insert-file-contents-as-coding-system
      'mel-ccl-quoted-printable-lf-lf-rev filename))
 
     (insert-file-contents-as-coding-system
      'mel-ccl-quoted-printable-lf-lf-rev filename))
 
@@ -913,15 +921,12 @@ abcdefghijklmnopqrstuvwxyz\
 (defun quoted-printable-ccl-decode-region (start end)
   "Decode the region from START to END with quoted-printable
 encoding."
 (defun quoted-printable-ccl-decode-region (start end)
   "Decode the region from START to END with quoted-printable
 encoding."
-  (interactive "r")
+  (interactive "*r")
   (encode-coding-region start end 'mel-ccl-quoted-printable-lf-lf-rev))
 
   (encode-coding-region start end 'mel-ccl-quoted-printable-lf-lf-rev))
 
-(defun quoted-printable-ccl-write-decoded-region
-  (start end filename)
+(defun quoted-printable-ccl-write-decoded-region (start end filename)
   "Decode quoted-printable encoded current region and write out to FILENAME."
   "Decode quoted-printable encoded current region and write out to FILENAME."
-  (interactive
-   (list (region-beginning) (region-end)
-         (read-file-name "Write decoded region to file: ")))
+  (interactive "*r\nFWrite decoded region to file: ")
   (write-region-as-coding-system 'mel-ccl-quoted-printable-lf-lf-rev
                                 start end filename))
 
   (write-region-as-coding-system 'mel-ccl-quoted-printable-lf-lf-rev
                                 start end filename))
 
@@ -959,7 +964,7 @@ MODE allows `text', `comment', `phrase' or nil.  Default value is
 (unless (featurep 'xemacs)
   (defun q-encoding-ccl-encoded-length (string &optional mode)
     (let ((status [nil nil nil nil nil nil nil nil nil]))
 (unless (featurep 'xemacs)
   (defun q-encoding-ccl-encoded-length (string &optional mode)
     (let ((status [nil nil nil nil nil nil nil nil nil]))
-      (fillarray status nil)
+      (fillarray status nil)           ; XXX: Is this necessary?
       (ccl-execute-on-string
        (cond
        ((eq mode 'text) 'mel-ccl-count-uq)
       (ccl-execute-on-string
        (cond
        ((eq mode 'text) 'mel-ccl-count-uq)
@@ -974,8 +979,9 @@ MODE allows `text', `comment', `phrase' or nil.  Default value is
                            'q-encoding-ccl-encode-string)
 
 (mel-define-method encoded-text-decode-string (string (nil "Q"))
                            'q-encoding-ccl-encode-string)
 
 (mel-define-method encoded-text-decode-string (string (nil "Q"))
-  (if (and (string-match Q-encoded-text-regexp string)
-          (string= string (match-string 0 string)))
+  (if (string-match (eval-when-compile
+                     (concat "\\`" Q-encoded-text-regexp "\\'"))
+                   string)
       (q-encoding-ccl-decode-string string)
     (error "Invalid encoded-text %s" string)))
 
       (q-encoding-ccl-decode-string string)
     (error "Invalid encoded-text %s" string)))
 
@@ -985,4 +991,4 @@ MODE allows `text', `comment', `phrase' or nil.  Default value is
 
 (provide 'mel-q-ccl)
 
 
 (provide 'mel-q-ccl)
 
-;;; mel-q-ccl.el ends here
+;;; mel-q-ccl.el ends here.
index 0e80c16..6200a74 100644 (file)
--- a/mel-q.el
+++ b/mel-q.el
@@ -1,12 +1,12 @@
-;;; mel-q.el: Quoted-Printable and Q-encoding encoder/decoder for GNU Emacs
+;;; mel-q.el --- Quoted-Printable encoder/decoder.
 
 
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
+;; Copyright (C) 1995,1996,1997,1998,1999 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1995/6/25
 ;; Keywords: MIME, Quoted-Printable, Q-encoding
 
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1995/6/25
 ;; Keywords: MIME, Quoted-Printable, Q-encoding
 
-;; This file is part of MEL (MIME Encoding Library).
+;; 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
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License as
 ;; General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
 ;; 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
+;; along with this program; see the file COPYING.  If not, write to the
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;;; Code:
 
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;;; Code:
 
-(require 'emu)
 (require 'mime-def)
 (require 'mime-def)
+(require 'path-util)
 
 
 ;;; @ Quoted-Printable encoder
 
 
 ;;; @ Quoted-Printable encoder
   (concat
    "="
    (char-to-string (aref quoted-printable-hex-chars (ash character -4)))
   (concat
    "="
    (char-to-string (aref quoted-printable-hex-chars (ash character -4)))
-   (char-to-string (aref quoted-printable-hex-chars (logand character 15)))
-   ))
+   (char-to-string (aref quoted-printable-hex-chars (logand character 15)))))
 
 (defun quoted-printable-internal-encode-region (start end)
   (save-excursion
     (save-restriction
 
 (defun quoted-printable-internal-encode-region (start end)
   (save-excursion
     (save-restriction
-      (narrow-to-region start end)
-      (goto-char start)
-      (let ((col 0))
-       (while (< (point)(point-max))
-         (cond ((>= col 75)
-                (insert "=\n")
-                (setq col 0)
-                )
-               ((looking-at-as-unibyte "^From ")
-                (replace-match "=46rom ")
-                (backward-char 1)
-                (setq col (+ col 6))
-                )
-               ((looking-at-as-unibyte "[ \t]\n")
-                (forward-char 1)
-                (insert "=\n")
-                (forward-char 1)
-                (setq col 0)
-                )
-               (t
-                (let ((chr (char-after (point))))
-                  (cond ((= chr ?\n)
-                         (forward-char 1)
-                         (setq col 0)
-                         )
-                        ((or (= chr ?\t)
-                             (and (<= 32 chr)(/= chr ?=)(< chr 127))
-                             )
-                         (forward-char 1)
-                         (setq col (1+ col))
-                         )
-                        ((>= col 73)
-                         (insert "=\n")
-                         (setq col 0)
-                         )
-                        (t
-                         (delete-char 1)
-                         (insert (quoted-printable-quote-char chr))
-                         (setq col (+ col 3))
-                         ))
-                  )))
-         )))))
+      (narrow-to-region (goto-char start) end)
+      (let ((col 0)
+           chr)
+       (while (not (eobp))
+         (cond
+          ((>= col 75)                 ; soft line break.
+           (insert "=\n")
+           (setq col 0))
+          ((eolp)                      ; end of line.
+           (forward-char)
+           (setq col 0))
+          (t
+           (setq chr (char-after (point)))
+           (cond
+            ((and (memq chr '(?  ?\t)) ; encode WSP char before CRLF.
+                  (eq (char-after (1+ (point))) ?\n))
+             (forward-char)
+             (insert "=\n")
+             (forward-char)
+             (setq col 0))
+            ((and (bolp)               ; "^From " is not safe.
+                  (eq chr                        ?F)
+                  (eq (char-after (1+  (point))) ?r)
+                  (eq (char-after (+ 2 (point))) ?o)
+                  (eq (char-after (+ 3 (point))) ?m)
+                  (eq (char-after (+ 4 (point))) ? ))
+             (delete-region (point)(1+ (point)))
+             (insert "=46")            ; moved to ?r.
+             (forward-char 4)          ; skip "rom ".
+             (setq col 7))
+            ((or (= chr ?\t)           ; skip safe char.
+                 (and (<= 32 chr)(/= chr ?=)(< chr 127)))
+             (forward-char)
+             (setq col (1+ col)))
+            ((>= col 73)               ; soft line break.
+             (insert "=\n")
+             (setq col 0))
+            (t                         ; encode unsafe char.
+             (delete-region (point)(1+ (point)))
+             ;; (insert (quoted-printable-quote-char chr))
+             (insert
+              ?=
+              (aref quoted-printable-hex-chars (ash chr -4))
+              (aref quoted-printable-hex-chars (logand chr 15)))
+             (setq col (+ col 3)))))))))))
 
 
 (defvar quoted-printable-external-encoder '("mmencode" "-q")
 
 
 (defvar quoted-printable-external-encoder '("mmencode" "-q")
       (as-binary-process
        (apply (function call-process-region)
              start end (car quoted-printable-external-encoder)
       (as-binary-process
        (apply (function call-process-region)
              start end (car quoted-printable-external-encoder)
-             t t nil (cdr quoted-printable-external-encoder))
-       )
+             t t nil
+             (cdr quoted-printable-external-encoder)))
       ;; for OS/2
       ;;   regularize line break code
       (goto-char (point-min))
       (while (re-search-forward "\r$" nil t)
       ;; for OS/2
       ;;   regularize line break code
       (goto-char (point-min))
       (while (re-search-forward "\r$" nil t)
-       (replace-match "")
-       )
-      )))
+       (replace-match "")))))
 
 
 (defvar quoted-printable-internal-encoding-limit
 
 
 (defvar quoted-printable-internal-encoding-limit
     (require 'path-util)
     (if (exec-installed-p "mmencode")
        1000
     (require 'path-util)
     (if (exec-installed-p "mmencode")
        1000
-      (message "Don't found external encoder for Quoted-Printable!")
+      ;; XXX: Fix this message, or simply remove it.
+      ;; (message "Don't found external encoder for Quoted-Printable!")
       nil))
   "*limit size to use internal quoted-printable encoder.
 If size of input to encode is larger than this limit,
       nil))
   "*limit size to use internal quoted-printable encoder.
 If size of input to encode is larger than this limit,
@@ -127,21 +128,18 @@ region is smaller than `quoted-printable-internal-encoding-limit',
 otherwise it calls external quoted-printable encoder specified by
 `quoted-printable-external-encoder'.  In this case, you must install
 the program (maybe mmencode included in metamail or XEmacs package)."
 otherwise it calls external quoted-printable encoder specified by
 `quoted-printable-external-encoder'.  In this case, you must install
 the program (maybe mmencode included in metamail or XEmacs package)."
-  (interactive "r")
+  (interactive "*r")
   (if (and quoted-printable-internal-encoding-limit
           (> (- end start) quoted-printable-internal-encoding-limit))
       (quoted-printable-external-encode-region start end)
   (if (and quoted-printable-internal-encoding-limit
           (> (- end start) quoted-printable-internal-encoding-limit))
       (quoted-printable-external-encode-region start end)
-    (quoted-printable-internal-encode-region start end)
-    ))
-
+    (quoted-printable-internal-encode-region start end)))
 
 (defun quoted-printable-encode-string (string)
   "Encode STRING to quoted-printable, and return the result."
   (with-temp-buffer
     (insert string)
     (quoted-printable-encode-region (point-min)(point-max))
 
 (defun quoted-printable-encode-string (string)
   "Encode STRING to quoted-printable, and return the result."
   (with-temp-buffer
     (insert string)
     (quoted-printable-encode-region (point-min)(point-max))
-    (buffer-string)
-    ))
+    (buffer-string)))
 
 
 (mel-define-method-function
 
 
 (mel-define-method-function
@@ -152,16 +150,16 @@ the program (maybe mmencode included in metamail or XEmacs package)."
  (mime-encode-region start end (nil "quoted-printable"))
  'quoted-printable-encode-region)
 
  (mime-encode-region start end (nil "quoted-printable"))
  'quoted-printable-encode-region)
 
-(mel-define-method mime-insert-encoded-file (filename
-                                            (nil "quoted-printable"))
+(mel-define-method mime-insert-encoded-file (filename (nil "quoted-printable"))
   "Encode contents of file FILENAME to quoted-printable, and insert the result.
 It calls external quoted-printable encoder specified by
 `quoted-printable-external-encoder'.  So you must install the program
 \(maybe mmencode included in metamail or XEmacs package)."
   "Encode contents of file FILENAME to quoted-printable, and insert the result.
 It calls external quoted-printable encoder specified by
 `quoted-printable-external-encoder'.  So you must install the program
 \(maybe mmencode included in metamail or XEmacs package)."
-  (interactive (list (read-file-name "Insert encoded file: ")))
-  (apply (function call-process) (car quoted-printable-external-encoder)
-        filename t nil (cdr quoted-printable-external-encoder))
-  )
+  (interactive "*fInsert encoded file: ")
+  (apply (function call-process)
+        (car quoted-printable-external-encoder)
+        filename t nil
+        (cdr quoted-printable-external-encoder)))
 
 
 ;;; @ Quoted-Printable decoder
 
 
 ;;; @ Quoted-Printable decoder
@@ -179,25 +177,28 @@ It calls external quoted-printable encoder specified by
       (narrow-to-region start end)
       (goto-char (point-min))
       (while (search-forward "=" nil t)
       (narrow-to-region start end)
       (goto-char (point-min))
       (while (search-forward "=" nil t)
-       (let ((beg (match-beginning 0)))
-         (cond ((looking-at "\n")
-                (delete-region beg (match-end 0))
-                )
-               ((looking-at
-                 `,(concat "[" quoted-printable-hex-chars
-                           "][" quoted-printable-hex-chars "]"))
-                (let* ((end (match-end 0))
-                       (hex (buffer-substring (match-beginning 0) end)))
-                  (delete-region beg end)
-                  (insert
-                   (logior
-                    (ash (quoted-printable-hex-char-to-num (aref hex 0)) 4)
-                    (quoted-printable-hex-char-to-num (aref hex 1))))
-                  ))
-               (t
-                ;; invalid
-                ))
-         )))))
+       (cond
+        ((eolp)
+         ;; unfold soft line break.
+         (delete-region (1- (point))(1+ (point))))
+        ((and (memq (char-after (point))
+                    (eval-when-compile
+                      ;; XXX: should provide char-list instead.
+                      (string-to-char-list quoted-printable-hex-chars)))
+              (memq (char-after (1+ (point)))
+                    (eval-when-compile
+                      ;; XXX: should provide char-list instead.
+                      (string-to-char-list quoted-printable-hex-chars))))
+         ;; encoded char.
+         (insert
+          (prog1
+              (logior
+               (ash (quoted-printable-hex-char-to-num (char-after (point))) 4)
+               (quoted-printable-hex-char-to-num (char-after (1+ (point)))))
+            (delete-region (1- (point))(+ 2 (point))))))
+        (t
+         ;; invalid encoding.
+         ))))))
 
 (defvar quoted-printable-external-decoder '("mmencode" "-q" "-u")
   "*list of quoted-printable decoder program name and its arguments.")
 
 (defvar quoted-printable-external-decoder '("mmencode" "-q" "-u")
   "*list of quoted-printable decoder program name and its arguments.")
@@ -207,8 +208,8 @@ It calls external quoted-printable encoder specified by
     (as-binary-process
      (apply (function call-process-region)
            start end (car quoted-printable-external-decoder)
     (as-binary-process
      (apply (function call-process-region)
            start end (car quoted-printable-external-decoder)
-           t t nil (cdr quoted-printable-external-decoder))
-     )))
+           t t nil
+           (cdr quoted-printable-external-decoder)))))
 
 
 (defvar quoted-printable-internal-decoding-limit nil
 
 
 (defvar quoted-printable-internal-decoding-limit nil
@@ -224,12 +225,11 @@ region is smaller than `quoted-printable-internal-decoding-limit',
 otherwise it calls external quoted-printable decoder specified by
 `quoted-printable-external-decoder'.  In this case, you must install
 the program (maybe mmencode included in metamail or XEmacs package)."
 otherwise it calls external quoted-printable decoder specified by
 `quoted-printable-external-decoder'.  In this case, you must install
 the program (maybe mmencode included in metamail or XEmacs package)."
-  (interactive "r")
+  (interactive "*r")
   (if (and quoted-printable-internal-decoding-limit
           (> (- end start) quoted-printable-internal-decoding-limit))
       (quoted-printable-external-decode-region start end)
   (if (and quoted-printable-internal-decoding-limit
           (> (- end start) quoted-printable-internal-decoding-limit))
       (quoted-printable-external-decode-region start end)
-    (quoted-printable-internal-decode-region start end)
-    ))
+    (quoted-printable-internal-decode-region start end)))
 
 (defun quoted-printable-decode-string (string)
   "Decode STRING which is encoded in quoted-printable, and return the result."
 
 (defun quoted-printable-decode-string (string)
   "Decode STRING which is encoded in quoted-printable, and return the result."
@@ -255,17 +255,14 @@ the program (maybe mmencode included in metamail or XEmacs package)."
                                                    (nil "quoted-printable"))
   "Decode and write current region encoded by quoted-printable into FILENAME.
 START and END are buffer positions."
                                                    (nil "quoted-printable"))
   "Decode and write current region encoded by quoted-printable into FILENAME.
 START and END are buffer positions."
-  (interactive
-   (list (region-beginning) (region-end)
-        (read-file-name "Write decoded region to file: ")))
+  (interactive "*r\nFWrite decoded region to file: ")
   (as-binary-process
    (apply (function call-process-region)
          start end (car quoted-printable-external-decoder)
          nil nil nil
          (append (cdr quoted-printable-external-decoder)
                  quoted-printable-external-decoder-option-to-specify-file
   (as-binary-process
    (apply (function call-process-region)
          start end (car quoted-printable-external-decoder)
          nil nil nil
          (append (cdr quoted-printable-external-decoder)
                  quoted-printable-external-decoder-option-to-specify-file
-                 (list filename))
-         )))
+                 (list filename)))))
 
 \f
 ;;; @ Q-encoding encode/decode string
 
 \f
 ;;; @ Q-encoding encode/decode string
@@ -283,22 +280,16 @@ START and END are buffer positions."
 MODE allows `text', `comment', `phrase' or nil.  Default value is
 `phrase'."
   (let ((specials (cdr (or (assq mode q-encoding-special-chars-alist)
 MODE allows `text', `comment', `phrase' or nil.  Default value is
 `phrase'."
   (let ((specials (cdr (or (assq mode q-encoding-special-chars-alist)
-                          (assq 'phrase q-encoding-special-chars-alist)
-                          ))))
+                          (assq 'phrase q-encoding-special-chars-alist)))))
     (mapconcat (function
                (lambda (chr)
                  (cond ((eq chr ? ) "_")
                        ((or (< chr 32) (< 126 chr)
     (mapconcat (function
                (lambda (chr)
                  (cond ((eq chr ? ) "_")
                        ((or (< chr 32) (< 126 chr)
-                            (memq chr specials)
-                            )
-                        (quoted-printable-quote-char chr)
-                        )
+                            (memq chr specials))
+                        (quoted-printable-quote-char chr))
                        (t
                        (t
-                        (char-to-string chr)
-                        ))
-                 ))
-              string "")
-    ))
+                        (char-to-string chr)))))
+              string "")))
 
 (defun q-encoding-decode-string (string)
   "Decode STRING which is encoded in Q-encoding and return the result."
 
 (defun q-encoding-decode-string (string)
   "Decode STRING which is encoded in Q-encoding and return the result."
@@ -315,19 +306,17 @@ MODE allows `text', `comment', `phrase' or nil.  Default value is
                        (h (setq l (quoted-printable-hex-char-to-num chr))
                           (prog1
                               (char-to-string (logior (ash h 4) l))
                        (h (setq l (quoted-printable-hex-char-to-num chr))
                           (prog1
                               (char-to-string (logior (ash h 4) l))
-                            (setq h nil)
-                            )
-                          )
-                       (t (char-to-string chr))
-                       )))
+                            (setq h nil)))
+                       (t (char-to-string chr)))))
               string "")))
 
 (mel-define-method-function (encoded-text-encode-string string (nil "Q"))
                            'q-encoding-encode-string)
 
 (mel-define-method encoded-text-decode-string (string (nil "Q"))
               string "")))
 
 (mel-define-method-function (encoded-text-encode-string string (nil "Q"))
                            'q-encoding-encode-string)
 
 (mel-define-method encoded-text-decode-string (string (nil "Q"))
-  (if (and (string-match Q-encoded-text-regexp string)
-          (string= string (match-string 0 string)))
+  (if (string-match (eval-when-compile
+                     (concat "\\`" Q-encoded-text-regexp "\\'"))
+                   string)
       (q-encoding-decode-string string)
     (error "Invalid encoded-text %s" string)))
 
       (q-encoding-decode-string string)
     (error "Invalid encoded-text %s" string)))
 
@@ -337,4 +326,4 @@ MODE allows `text', `comment', `phrase' or nil.  Default value is
 
 (provide 'mel-q)
 
 
 (provide 'mel-q)
 
-;;; mel-q.el ends here
+;;; mel-q.el ends here.
index 3328e56..94ede06 100644 (file)
--- a/mel-u.el
+++ b/mel-u.el
@@ -1,6 +1,6 @@
-;;; mel-u.el: uuencode encoder/decoder for GNU Emacs
+;;; mel-u.el --- uuencode encoder/decoder.
 
 
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
+;; Copyright (C) 1995,1996,1997,1998,1999 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1995/10/25
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1995/10/25
 ;; General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
 ;; 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
+;; along with this program; see the file COPYING.  If not, write to the
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;;; Code:
 
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;;; Code:
 
-(require 'emu)
 (require 'mime-def)
 (require 'mime-def)
+(require 'path-util)
 
 
 (mel-define-backend "x-uue")
 
 
 (mel-define-backend "x-uue")
@@ -51,17 +51,16 @@ This function uses external uuencode encoder which is specified by
 variable `uuencode-external-encoder'."
   (interactive "*r")
   (save-excursion
 variable `uuencode-external-encoder'."
   (interactive "*r")
   (save-excursion
-    (as-binary-process (apply (function call-process-region)
-                             start end (car uuencode-external-encoder)
-                             t t nil (cdr uuencode-external-encoder))
-                      )
+    (as-binary-process
+     (apply (function call-process-region)
+           start end (car uuencode-external-encoder)
+           t t nil
+           (cdr uuencode-external-encoder)))
     ;; for OS/2
     ;;   regularize line break code
     (goto-char (point-min))
     (while (re-search-forward "\r$" nil t)
     ;; for OS/2
     ;;   regularize line break code
     (goto-char (point-min))
     (while (re-search-forward "\r$" nil t)
-      (replace-match "")
-      )
-    ))
+      (replace-match ""))))
 
 (defun uuencode-external-decode-region (start end)
   "Decode current region by unofficial uuencode format.
 
 (defun uuencode-external-decode-region (start end)
   "Decode current region by unofficial uuencode format.
@@ -76,14 +75,14 @@ variable `uuencode-external-decoder'."
                        (if (re-search-forward "^begin [0-9]+ " nil t)
                            (if (looking-at ".+$")
                                (buffer-substring (match-beginning 0)
                        (if (re-search-forward "^begin [0-9]+ " nil t)
                            (if (looking-at ".+$")
                                (buffer-substring (match-beginning 0)
-                                                 (match-end 0))
-                             )))))
+                                                 (match-end 0)))))))
          (default-directory temporary-file-directory))
       (if filename
          (as-binary-process
           (apply (function call-process-region)
                  start end (car uuencode-external-decoder)
          (default-directory temporary-file-directory))
       (if filename
          (as-binary-process
           (apply (function call-process-region)
                  start end (car uuencode-external-decoder)
-                 t nil nil (cdr uuencode-external-decoder))
+                 t nil nil
+                 (cdr uuencode-external-decoder))
           (as-binary-input-file (insert-file-contents filename))
           ;; The previous line causes the buffer to be made read-only, I
           ;; do not pretend to understand the control flow leading to this
           (as-binary-input-file (insert-file-contents filename))
           ;; The previous line causes the buffer to be made read-only, I
           ;; do not pretend to understand the control flow leading to this
@@ -91,10 +90,7 @@ variable `uuencode-external-decoder'."
           ;;   Use `inhibit-read-only' to avoid to force
           ;;   buffer-read-only nil. - tomo.
           (let ((inhibit-read-only t))
           ;;   Use `inhibit-read-only' to avoid to force
           ;;   buffer-read-only nil. - tomo.
           (let ((inhibit-read-only t))
-            (delete-file filename)
-            )
-          ))
-      )))
+            (delete-file filename)))))))
 
 (mel-define-method-function (mime-encode-region start end (nil "x-uue"))
                            'uuencode-external-encode-region)
 
 (mel-define-method-function (mime-encode-region start end (nil "x-uue"))
                            'uuencode-external-encode-region)
@@ -125,18 +121,16 @@ variable `uuencode-external-decoder'."
   "Insert file encoded by unofficial uuencode format.
 This function uses external uuencode encoder which is specified by
 variable `uuencode-external-encoder'."
   "Insert file encoded by unofficial uuencode format.
 This function uses external uuencode encoder which is specified by
 variable `uuencode-external-encoder'."
-  (interactive (list (read-file-name "Insert encoded file: ")))
-  (call-process (car uuencode-external-encoder) filename t nil
-               (file-name-nondirectory filename))
-  )
+  (interactive "*fInsert encoded file: ")
+  (call-process (car uuencode-external-encoder)
+               filename t nil
+               (file-name-nondirectory filename)))
 
 (mel-define-method mime-write-decoded-region (start end filename
                                                    (nil "x-uue"))
   "Decode and write current region encoded by uuencode into FILENAME.
 START and END are buffer positions."
 
 (mel-define-method mime-write-decoded-region (start end filename
                                                    (nil "x-uue"))
   "Decode and write current region encoded by uuencode into FILENAME.
 START and END are buffer positions."
-  (interactive
-   (list (region-beginning) (region-end)
-        (read-file-name "Write decoded region to file: ")))
+  (interactive "*r\nFWrite decoded region to file: ")
   (save-excursion
     (let ((file (save-excursion
                  (save-restriction
   (save-excursion
     (let ((file (save-excursion
                  (save-restriction
@@ -145,16 +139,15 @@ START and END are buffer positions."
                    (if (re-search-forward "^begin [0-9]+ " nil t)
                        (if (looking-at ".+$")
                            (buffer-substring (match-beginning 0)
                    (if (re-search-forward "^begin [0-9]+ " nil t)
                        (if (looking-at ".+$")
                            (buffer-substring (match-beginning 0)
-                                             (match-end 0))
-                         )))))
+                                             (match-end 0)))))))
          (default-directory temporary-file-directory))
       (if file
          (as-binary-process
           (apply (function call-process-region)
                  start end (car uuencode-external-decoder)
          (default-directory temporary-file-directory))
       (if file
          (as-binary-process
           (apply (function call-process-region)
                  start end (car uuencode-external-decoder)
-                 nil nil nil (cdr uuencode-external-decoder))
-          (rename-file file filename 'overwrites)
-          )))))
+                 nil nil nil
+                 (cdr uuencode-external-decoder))
+          (rename-file file filename 'overwrites))))))
 
 
 ;;; @ end
 
 
 ;;; @ end
@@ -164,4 +157,4 @@ START and END are buffer positions."
 
 (mel-define-backend "x-uuencode" ("x-uue"))
 
 
 (mel-define-backend "x-uuencode" ("x-uue"))
 
-;;; mel-u.el ends here
+;;; mel-u.el ends here.
diff --git a/mel.el b/mel.el
index e44ad5b..f128321 100644 (file)
--- a/mel.el
+++ b/mel.el
@@ -1,6 +1,6 @@
-;;; mel.el : a MIME encoding/decoding library
+;;; mel.el --- A MIME encoding/decoding library.
 
 
-;; Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.
+;; Copyright (C) 1995,1996,1997,1998,1999 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1995/6/25
 
 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
 ;; Created: 1995/6/25
 ;; General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
 ;; 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
+;; along with this program; 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 'mime-def)
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;;; Code:
 
 (require 'mime-def)
-(require 'poem)
+(require 'path-util)
 
 (defcustom mime-encoding-list
   '("7bit" "8bit" "binary" "base64" "quoted-printable")
 
 (defcustom mime-encoding-list
   '("7bit" "8bit" "binary" "base64" "quoted-printable")
@@ -59,17 +59,15 @@ Content-Transfer-Encoding for it."
 
 (defun mime-encoding-alist (&optional service)
   "Return table of Content-Transfer-Encoding for completion."
 
 (defun mime-encoding-alist (&optional service)
   "Return table of Content-Transfer-Encoding for completion."
-  (mapcar #'list (mime-encoding-list service))
-  )
+  (mapcar #'list (mime-encoding-list service)))
 
 (defsubst mel-use-module (name encodings)
 
 (defsubst mel-use-module (name encodings)
-  (let (encoding)
-    (while (setq encoding (car encodings))
-      (set-alist 'mel-encoding-module-alist
-                encoding
-                (cons name (cdr (assoc encoding mel-encoding-module-alist))))
-      (setq encodings (cdr encodings))
-      )))
+  (while encodings
+    (set-alist 'mel-encoding-module-alist
+              (car encodings)
+              (cons name (cdr (assoc (car encodings)
+                                     mel-encoding-module-alist))))
+    (setq encodings (cdr encodings))))
 
 (defsubst mel-find-function (service encoding)
   (mel-find-function-from-obarray
 
 (defsubst mel-find-function (service encoding)
   (mel-find-function-from-obarray
@@ -115,21 +113,20 @@ Content-Transfer-Encoding for it."
 It calls external base64 encoder specified by
 `base64-external-encoder'.  So you must install the program (maybe
 mmencode included in metamail or XEmacs package)."
 It calls external base64 encoder specified by
 `base64-external-encoder'.  So you must install the program (maybe
 mmencode included in metamail or XEmacs package)."
-    (interactive (list (read-file-name "Insert encoded file: ")))
+    (interactive "*fInsert encoded file: ")
     (insert (base64-encode-string
             (with-temp-buffer
               (set-buffer-multibyte nil)
               (insert-file-contents-as-binary filename)
               (buffer-string))))
     (insert (base64-encode-string
             (with-temp-buffer
               (set-buffer-multibyte nil)
               (insert-file-contents-as-binary filename)
               (buffer-string))))
-    (or (bolp)
-       (insert "\n"))
-    )
+    (or (bolp) (insert ?\n)))
     
   (mel-define-method-function (encoded-text-encode-string string (nil "B"))
                              'base64-encode-string)
   (mel-define-method encoded-text-decode-string (string (nil "B"))
     
   (mel-define-method-function (encoded-text-encode-string string (nil "B"))
                              'base64-encode-string)
   (mel-define-method encoded-text-decode-string (string (nil "B"))
-    (if (and (string-match B-encoded-text-regexp string)
-            (string= string (match-string 0 string)))
+    (if (string-match (eval-when-compile
+                       (concat "\\`" B-encoded-text-regexp "\\'"))
+                     string)
        (base64-decode-string string)
       (error "Invalid encoded-text %s" string)))
   )
        (base64-decode-string string)
       (error "Invalid encoded-text %s" string)))
   )
@@ -143,27 +140,22 @@ mmencode included in metamail or XEmacs package)."
   (and (featurep 'mule)
        (progn
         (require 'path-util)
   (and (featurep 'mule)
        (progn
         (require 'path-util)
-        (module-installed-p 'mel-b-ccl)
-        )))
+        (module-installed-p 'mel-b-ccl))))
 
 (defvar mel-q-ccl-module
   (and (featurep 'mule)
        (progn
         (require 'path-util)
 
 (defvar mel-q-ccl-module
   (and (featurep 'mule)
        (progn
         (require 'path-util)
-        (module-installed-p 'mel-q-ccl)
-        )))
+        (module-installed-p 'mel-q-ccl))))
 
 
-(if mel-b-ccl-module
-    (mel-use-module 'mel-b-ccl '("base64" "B"))
-  )
+(when mel-b-ccl-module
+  (mel-use-module 'mel-b-ccl '("base64" "B")))
 
 
-(if mel-q-ccl-module
-    (mel-use-module 'mel-q-ccl '("quoted-printable" "Q"))
-  )
+(when mel-q-ccl-module
+  (mel-use-module 'mel-q-ccl '("quoted-printable" "Q")))
 
 
-(if base64-dl-module
-    (mel-use-module 'mel-b-dl '("base64" "B"))
-  )
+(when base64-dl-module
+  (mel-use-module 'mel-b-dl '("base64" "B")))
 
 
 ;;; @ region
 
 
 ;;; @ region
@@ -174,12 +166,11 @@ mmencode included in metamail or XEmacs package)."
   "Encode region START to END of current buffer using ENCODING.
 ENCODING must be string."
   (interactive
   "Encode region START to END of current buffer using ENCODING.
 ENCODING must be string."
   (interactive
-   (list (region-beginning) (region-end)
-        (completing-read "encoding: "
+   (list (region-beginning)(region-end)
+        (completing-read "Encoding: "
                          (mime-encoding-alist)
                          nil t "base64")))
                          (mime-encoding-alist)
                          nil t "base64")))
-  (funcall (mel-find-function 'mime-encode-region encoding) start end)
-  )
+  (funcall (mel-find-function 'mime-encode-region encoding) start end))
 
 
 ;;;###autoload
 
 
 ;;;###autoload
@@ -187,8 +178,8 @@ ENCODING must be string."
   "Decode region START to END of current buffer using ENCODING.
 ENCODING must be string."
   (interactive
   "Decode region START to END of current buffer using ENCODING.
 ENCODING must be string."
   (interactive
-   (list (region-beginning) (region-end)
-        (completing-read "encoding: "
+   (list (region-beginning)(region-end)
+        (completing-read "Encoding: "
                          (mime-encoding-alist 'mime-decode-region)
                          nil t "base64")))
   (funcall (mel-find-function 'mime-decode-region encoding)
                          (mime-encoding-alist 'mime-decode-region)
                          nil t "base64")))
   (funcall (mel-find-function 'mime-decode-region encoding)
@@ -204,33 +195,29 @@ ENCODING must be string."
 ENCODING must be string.  If ENCODING is found in
 `mime-string-decoding-method-alist' as its key, this function decodes
 the STRING by its value."
 ENCODING must be string.  If ENCODING is found in
 `mime-string-decoding-method-alist' as its key, this function decodes
 the STRING by its value."
-  (let ((fun (mel-find-function 'mime-decode-string encoding)))
-    (if fun
-       (funcall (mel-find-function 'mime-decode-string encoding)
-                string)
+  (let ((f (mel-find-function 'mime-decode-string encoding)))
+    (if f
+       (funcall f string)
       string)))
 
       string)))
 
+
 (mel-define-service encoded-text-encode-string (string encoding)
 (mel-define-service encoded-text-encode-string (string encoding)
-  "Encode STRING as encoded-text using ENCODING.
-ENCODING must be string.")
+  "Encode STRING as encoded-text using ENCODING.  ENCODING must be string.")
 
 (mel-define-service encoded-text-decode-string (string encoding)
 
 (mel-define-service encoded-text-decode-string (string encoding)
-  "Decode STRING as encoded-text using ENCODING.
-ENCODING must be string.")
+  "Decode STRING as encoded-text using ENCODING.  ENCODING must be string.")
 
 (defun base64-encoded-length (string)
   (* (/ (+ (length string) 2) 3) 4))
 
 (defsubst Q-encoding-printable-char-p (chr mode)
   (and (not (memq chr '(?= ?? ?_)))
 
 (defun base64-encoded-length (string)
   (* (/ (+ (length string) 2) 3) 4))
 
 (defsubst Q-encoding-printable-char-p (chr mode)
   (and (not (memq chr '(?= ?? ?_)))
-       (<= ?\   chr)(<= chr ?~)
+       (<= ?\  chr)(<= chr ?~)
        (cond ((eq mode 'text) t)
             ((eq mode 'comment)
        (cond ((eq mode 'text) t)
             ((eq mode 'comment)
-             (not (memq chr '(?\( ?\) ?\\)))
-             )
+             (not (memq chr '(?\( ?\) ?\\))))
             (t
             (t
-             (string-match "[A-Za-z0-9!*+/=_---]" (char-to-string chr))
-             ))))
+             (string-match "[A-Za-z0-9!*+/=_---]" (char-to-string chr))))))
 
 (defun Q-encoded-text-length (string &optional mode)
   (let ((l 0)(i 0)(len (length string)) chr)
 
 (defun Q-encoded-text-length (string &optional mode)
   (let ((l 0)(i 0)(len (length string)) chr)
@@ -238,9 +225,8 @@ ENCODING must be string.")
       (setq chr (elt string i))
       (if (Q-encoding-printable-char-p chr mode)
          (setq l (+ l 1))
       (setq chr (elt string i))
       (if (Q-encoding-printable-char-p chr mode)
          (setq l (+ l 1))
-       (setq l (+ l 3))
-       )
-      (setq i (+ i 1)) )
+       (setq l (+ l 3)))
+      (setq i (+ i 1)))
     l))
 
 
     l))
 
 
@@ -252,7 +238,7 @@ ENCODING must be string.")
   "Insert file FILENAME encoded by ENCODING format."
   (interactive
    (list (read-file-name "Insert encoded file: ")
   "Insert file FILENAME encoded by ENCODING format."
   (interactive
    (list (read-file-name "Insert encoded file: ")
-        (completing-read "encoding: "
+        (completing-read "Encoding: "
                          (mime-encoding-alist)
                          nil t "base64")))
   (funcall (mel-find-function 'mime-insert-encoded-file encoding)
                          (mime-encoding-alist)
                          nil t "base64")))
   (funcall (mel-find-function 'mime-insert-encoded-file encoding)
@@ -264,9 +250,9 @@ ENCODING must be string.")
   "Decode and write current region encoded by ENCODING into FILENAME.
 START and END are buffer positions."
   (interactive
   "Decode and write current region encoded by ENCODING into FILENAME.
 START and END are buffer positions."
   (interactive
-   (list (region-beginning) (region-end)
+   (list (region-beginning)(region-end)
         (read-file-name "Write decoded region to file: ")
         (read-file-name "Write decoded region to file: ")
-        (completing-read "encoding: "
+        (completing-read "Encoding: "
                          (mime-encoding-alist 'mime-write-decoded-region)
                          nil t "base64")))
   (funcall (mel-find-function 'mime-write-decoded-region encoding)
                          (mime-encoding-alist 'mime-write-decoded-region)
                          nil t "base64")))
   (funcall (mel-find-function 'mime-write-decoded-region encoding)
index 9c40695..3d41ae4 100644 (file)
 
 ;;; Code:
 
 
 ;;; Code:
 
+(require 'poe)
+(require 'poem)
+(require 'pcustom)
 (require 'mcharset)
 (require 'mcharset)
+(require 'alist)
+
+(eval-when-compile (require 'cl))      ; list*
 
 (eval-and-compile
 
 (eval-and-compile
-  (defconst mime-library-product ["FLAM-DOODLE" (1 12 5) "\e$BFP\e(B 10R4.0/7.0"]
+  (defconst mime-library-product ["FLAM-DOODLE" (1 12 6) "\e$B3w\e(B 10R4.0/5.0"]
     "Product name, version number and code name of MIME-library package.")
   )
 
     "Product name, version number and code name of MIME-library package.")
   )
 
 ;;; @ variables
 ;;;
 
 ;;; @ variables
 ;;;
 
-(require 'custom)
-
-(eval-when-compile (require 'cl))
-
-(defgroup mime nil
+(defgroup mime '((default-mime-charset custom-variable))
   "Emacs MIME Interfaces"
   :group 'news
   :group 'mail)
 
   "Emacs MIME Interfaces"
   :group 'news
   :group 'mail)
 
-(custom-handle-keyword 'default-mime-charset :group 'mime
-                      'custom-variable)
-
 (defcustom mime-uuencode-encoding-name-list '("x-uue" "x-uuencode")
   "*List of encoding names for uuencode format."
   :group 'mime
 (defcustom mime-uuencode-encoding-name-list '("x-uue" "x-uuencode")
   "*List of encoding names for uuencode format."
   :group 'mime
@@ -87,7 +86,7 @@
   (defconst std11-non-qtext-char-list '(?\" ?\\ ?\r ?\n))
   (defconst std11-qtext-regexp
     (eval-when-compile
   (defconst std11-non-qtext-char-list '(?\" ?\\ ?\r ?\n))
   (defconst std11-qtext-regexp
     (eval-when-compile
-      (concat "[^" (apply #'string std11-non-qtext-char-list) "]"))))
+      (concat "[^" std11-non-qtext-char-list "]"))))
 (defconst std11-quoted-string-regexp
   (eval-when-compile
     (concat "\""
 (defconst std11-quoted-string-regexp
   (eval-when-compile
     (concat "\""
@@ -99,8 +98,9 @@
 ;;; @ about MIME
 ;;;
 
 ;;; @ about MIME
 ;;;
 
-(defconst mime-tspecial-char-list
-  '(?\] ?\[ ?\( ?\) ?< ?> ?@ ?, ?\; ?: ?\\ ?\" ?/ ?? ?=))
+(eval-and-compile
+  (defconst mime-tspecial-char-list
+    '(?\] ?\[ ?\( ?\) ?< ?> ?@ ?, ?\; ?: ?\\ ?\" ?/ ?? ?=)))
 (defconst mime-token-regexp
   (eval-when-compile
     (concat "[^" mime-tspecial-char-list "\000-\040]+")))
 (defconst mime-token-regexp
   (eval-when-compile
     (concat "[^" mime-tspecial-char-list "\000-\040]+")))
@@ -357,8 +357,6 @@ message/rfc822, `mime-entity' structures of them are included in
 ;;; @ for mm-backend
 ;;;
 
 ;;; @ for mm-backend
 ;;;
 
-(require 'alist)
-
 (defvar mime-entity-implementation-alist nil)
 
 (defmacro mm-define-backend (type &optional parents)
 (defvar mime-entity-implementation-alist nil)
 
 (defmacro mm-define-backend (type &optional parents)
@@ -443,7 +441,7 @@ If ARGS is specified, NAME is defined as a generic function for the
 service."
   `(progn
      (add-to-list 'mel-service-list ',name)
 service."
   `(progn
      (add-to-list 'mel-service-list ',name)
-     (defvar ,(intern (format "%s-obarray" name)) (make-vector 1 nil))
+     (defvar ,(intern (format "%s-obarray" name)) (make-vector 7 0))
      ,@(if args
           `((defun ,name ,args
               ,@rest
      ,@(if args
           `((defun ,name ,args
               ,@rest
index dd428f8..3ef7f7f 100644 (file)
@@ -870,18 +870,23 @@ ENCODING must be string.")
 <h1> Network representation of header
 <node> encoded-word
 <p>
 <h1> Network representation of header
 <node> encoded-word
 <p>
-encoded-word \e$B$O\e(B header \e$B$GHs\e(B <dref>ASCII</dref> \e$BJ8;z$rI=8=$9$k$?$a$N7A\e(B
-\e$B<0$G!"\e(B<concept>RFC 2047</concept> \e$B$GDj5A$5$l$F$$$^$9!#\e(B
+<concept>RFC 2047</concept> defines the
+<concept>encoded-word</concept> which is a format to represent
+non-<dref>ASCII</dref> characters in a header.
 <p>
 <rfc number="2047" type="Standards Track" author="K. Moore"
              title="MIME (Multipurpose Internet Mail Extensions) Part
              Three: Message Header Extensions for Non-ASCII Text"
              date="November 1996" obsolete="1521,1522,1590">
 <p>
 <p>
 <rfc number="2047" type="Standards Track" author="K. Moore"
              title="MIME (Multipurpose Internet Mail Extensions) Part
              Three: Message Header Extensions for Non-ASCII Text"
              date="November 1996" obsolete="1521,1522,1590">
 <p>
-\e$B$^$?!"9T57$N0-$$$3$H$@$H8@$($^$9$,!"\e(Bencoded-word \e$B$rMQ$$$:$KHs\e(B 
-<dref>ASCII</dref> \e$BJ8;z$r\e(B header \e$B$KF~$l$?5-;v$bB8:_$7$^$9!#\e(B
+The encoded-word is the only valid format to represent
+non-<dref>ASCII</dref> characters in a header, but there are also
+invalid styles.  Such kinds of evil messages represent
+non-<dref>ASCII</dref> characters in headers without encoded-words (it
+is called "raw" non-<dref>ASCII</dref> characters).
 <p>
 <p>
-FLIM \e$B$O$3$l$i$rId9f2=!&I|9f2=$9$k5!G=$rDs6!$7$^$9!#\e(B
+FLIM provides encoding/decoding features of both encoded-word and
+invalid "raw" non-<dref>ASCII</dref> characters.
 
 
 <h2> Header encoding/decoding
 
 
 <h2> Header encoding/decoding
index aa65897..bf1be13 100644 (file)
@@ -957,10 +957,11 @@ ENCODING must be string.")
 @chapter Network representation of header
 @cindex RFC 2047
 @cindex Standards Track
 @chapter Network representation of header
 @cindex RFC 2047
 @cindex Standards Track
+@cindex encoded-word
 @cindex RFC 2047
 
 @cindex RFC 2047
 
-encoded-word \e$B$O\e(B header \e$B$GHs\e(B ASCII (@ref{ASCII}) \e$BJ8;z$rI=8=$9$k$?$a$N7A<0\e(B
-\e$B$G!"\e(B@strong{RFC 2047} \e$B$GDj5A$5$l$F$$$^$9!#\e(B@refill
+@strong{RFC 2047} defines the @strong{encoded-word} which is a format to
+represent non-ASCII (@ref{ASCII}) characters in a header.@refill
 
 
 @noindent
 
 
 @noindent
@@ -971,10 +972,14 @@ Message Header Extensions for Non-ASCII Text'', November 1996, Standards
 Track (obsolete RFC 1521,1522,1590).
 @end quotation
 
 Track (obsolete RFC 1521,1522,1590).
 @end quotation
 
-\e$B$^$?!"9T57$N0-$$$3$H$@$H8@$($^$9$,!"\e(Bencoded-word \e$B$rMQ$$$:$KHs\e(B ASCII
-(@ref{ASCII}) \e$BJ8;z$r\e(B header \e$B$KF~$l$?5-;v$bB8:_$7$^$9!#\e(B@refill
+The encoded-word is the only valid format to represent non-ASCII
+(@ref{ASCII}) characters in a header, but there are also invalid styles.
+Such kinds of evil messages represent non-ASCII (@ref{ASCII}) characters
+in headers without encoded-words (it is called "raw" non-ASCII
+(@ref{ASCII}) characters).@refill
 
 
-FLIM \e$B$O$3$l$i$rId9f2=!&I|9f2=$9$k5!G=$rDs6!$7$^$9!#\e(B
+FLIM provides encoding/decoding features of both encoded-word and
+invalid "raw" non-ASCII (@ref{ASCII}) characters.
 
 
 @menu
 
 
 @menu
index e4dcda2..e358ca0 100644 (file)
@@ -60,12 +60,12 @@ FLIM \e$B$O\e(B entity \e$B$N>pJs$rI=8=$9$k$?$a$K\e(B<concept>mime-entity</concept>
 <defun name="mime-open-entity">
          <opts> type location
 <p>
 <defun name="mime-open-entity">
          <opts> type location
 <p>
-Open an entity and return it.
+Entity \e$B$r3+$$$F!"$=$l$rJV$7$^$9!#\e(B
 <p>
 <p>
-<var>type</var> is representation-type. <cf node="mm-backend">
+<var>type</var> \e$B$O\e(B representation-type \e$B$G$9!#\e(B <cf node="mm-backend">
 <p>
 <p>
-<var>location</var> is location of entity.  Specification of it is
-depended on representation-type.
+<var>location</var> \e$B$O\e(B entity \e$B$N0LCV$G$9!#;XDjJ}K!$O\e(B
+representation-type \e$B$K0M$C$FJQ$o$j$^$9!#\e(B
 </defun>
 
 <defun name="mime-parse-buffer">
 </defun>
 
 <defun name="mime-parse-buffer">
@@ -176,28 +176,29 @@ buffer local \e$BJQ?t!#\e(B
 <defun name="mime-find-entity-from-number">
            <args> entity-number <opts> message
 <p>
 <defun name="mime-find-entity-from-number">
            <args> entity-number <opts> message
 <p>
-Return entity from <var>entity-number</var> in <var>message</var>.
+<var>message</var> \e$B$+$i!"\e(B<var>enity-number</var> \e$B$N\e(B entity \e$B$rJV$7$^$9!#\e(B
 <p>
 <p>
-If <var>message</var> is not specified,
-<code>mime-message-structure</code> is used.
+<var>message</var> \e$B$,;XDj$5$l$F$$$J$$>l9g$O!"\e(B
+<code>mime-message-structrue</code> \e$B$,;H$o$l$^$9!#\e(B
 </defun>
 
 <defun name="mime-find-entity-from-node-id">
            <args> entity-node-id <opts> message
 <p>
 </defun>
 
 <defun name="mime-find-entity-from-node-id">
            <args> entity-node-id <opts> message
 <p>
-Return entity from <var>entity-node-id</var> in <var>message</var>.
+<var>message</var> \e$B$+$i!"\e(B<var>entity-node-id</var> \e$B$N\e(B entity \e$B$rJV$7$^\e(B
+\e$B$9!#\e(B
 <p>
 <p>
-If <var>message</var> is not specified,
-<code>mime-message-structure</code> is used.
+<var>message</var> \e$B$,;XDj$5$l$F$$$J$$>l9g$O!"\e(B
+<code>mime-message-structure</code> \e$B$,;H$o$l$^$9!#\e(B
 </defun>
 
 <defun name="mime-find-entity-from-content-id">
            <args> cid <opts> message
 <p>
 </defun>
 
 <defun name="mime-find-entity-from-content-id">
            <args> cid <opts> message
 <p>
-Return entity from <var>cid</var> in <var>message</var>.
+<var>message</var> \e$B$+$i!"\e(B<var>cid</var> \e$B$N\e(B entity \e$B$rJV$7$^$9!#\e(B
 <p>
 <p>
-If <var>message</var> is not specified,
-<code>mime-message-structure</code> is used.
+<var>message</var> \e$B$,;XDj$5$l$F$$$J$$>l9g$O!"\e(B
+<code>mime-message-structure</code> \e$B$,;H$o$l$^$9!#\e(B
 </defun>
 
 
 </defun>
 
 
@@ -238,8 +239,8 @@ node="Content-Transfer-Encoding">
 <defun name="mime-entity-cooked-p">
            <args> entity
 <p>
 <defun name="mime-entity-cooked-p">
            <args> entity
 <p>
-Return non-nil if contents of <var>entity</var> has been already
-code-converted.
+<var>entity</var> \e$B$NFbMF$,4{$K%3!<%IJQ49$5$l$F$$$k>l9g$O\e(B nil \e$B$GL5$$CM\e(B
+\e$B$rJV$9!#\e(B
 </defun>
 
 
 </defun>
 
 
@@ -300,12 +301,11 @@ list \e$B$G!"$=$l$>$l!"I=<($7$?$/$J$$\e(B field \e$BL>$HI=<($7$?$$MsL>$rI=8=$7$?$b$
 <defun name="mime-insert-text-content">
            <args> entity
 <p>
 <defun name="mime-insert-text-content">
            <args> entity
 <p>
-Insert before point a contents of <var>entity</var> as text entity.
+point \e$B$NA0$K\e(B <var>entity</var> \e$B$r\e(B text entity \e$B$H$7$FA^F~$7$^$9!#\e(B
 <p>
 <p>
-Contents of the <var>entity</var> are decoded as <dref>MIME
-charset</dref>.  If the <var>entity</var> does not have charset
-parameter of Content-Type field, <code>default-mime-charset</code> is
-used as default value.
+<var>entity</var> \e$B$NFbMF$O\e(B <dref>MIMe charset</dref> \e$B$H$7$FI|9f2=$5$l\e(B
+\e$B$^$9!#\e(B<var>entity</var> \e$B$N\e(B Content-Type field \e$B$K\e(B charset paramter \e$B$,L5\e(B
+\e$B$$$H!"\e(B<code>default-mime-charset</code> \e$B$,=i4|CM$H$7$F;H$o$l$^$9!#\e(B
 </defun>
 
 <defvar name="default-mime-charset">
 </defun>
 
 <defvar name="default-mime-charset">
@@ -329,13 +329,13 @@ MIME charset.
 <defun name="mime-insert-entity-content">
            <args> entity
 <p>
 <defun name="mime-insert-entity-content">
            <args> entity
 <p>
-Insert content of <var>entity</var> at point.
+pointo \e$B$N0LCV$K\e(B <var>entity</var> \e$B$NFbMF$rA^F~$7$^$9!#\e(B
 </defun>
 
 <defun name="mime-write-entity-content">
            <args> entity filename
 <p>
 </defun>
 
 <defun name="mime-write-entity-content">
            <args> entity filename
 <p>
-Write content of <var>entity</var> into <var>filename</var>.
+<var>entity</var> \e$B$NFbMF$r\e(B <var>filename</var> \e$B$K=q$-9~$_$^$9!#\e(B
 </defun>
 
 
 </defun>
 
 
@@ -345,19 +345,19 @@ Write content of <var>entity</var> into <var>filename</var>.
 <defun name="mime-insert-entity">
            <args> entity
 <p>
 <defun name="mime-insert-entity">
            <args> entity
 <p>
-Insert header and body of <var>entity</var> at point.
+<var>entity</var> \e$B$N\e(B header \e$B$H\e(B body \e$B$r\e(B point \e$B$N$H$3$m$KA^F~$7$^$9!#\e(B
 </defun>
 
 <defun name="mime-write-entity">
            <args> entity filename
 <p>
 </defun>
 
 <defun name="mime-write-entity">
            <args> entity filename
 <p>
-Write representation of <var>entity</var> into <var>filename</var>.
+<var>entity</var> \e$B$NI=8=$r\e(B <var>filename</var> \e$B$K=q$-9~$_$^$9!#\e(B
 </defun>
 
 <defun name="mime-write-entity-body">
            <args> entity filename
 <p>
 </defun>
 
 <defun name="mime-write-entity-body">
            <args> entity filename
 <p>
-Write body of <var>entity</var> into <var>filename</var>.
+<var>entity</var> \e$B$N\e(B body \e$B$r\e(B <var>filename</var> \e$B$K=q$-9~$_$^$9!#\e(B
 </defun>
 
 
 </defun>
 
 
@@ -456,12 +456,13 @@ representation-type \e$B$NL>A0$N@hF,$K\e(B <code>mm</code> \e$B$rIU$1$?$b$N$K$J$C$F
 <args> type
 <opts> parents
 <p>
 <args> type
 <opts> parents
 <p>
-Define <var>type</var> as a mm-backend.
+<var>type</var> \e$B$r\e(B mm-backend \e$B$H$7$FDj5A$7$^$9!#\e(B
 <p>
 <p>
-If <var>PARENTS</var> is specified, <var>type</var> inherits parents.
-Each parent must be representation-type.
+<var>PARENTS</var> \e$B$,;XDj$5$l$F$$$k>l9g$O!"\e(B<var>type</var> \e$B$O\e(B prents
+\e$B$r7Q>5$7$^$9!#$=$l$>$l$N\e(B parent \e$B$O\e(B representation-type \e$B$G$"$kI,MW$,$"\e(B
+\e$B$j$^$9!#\e(B
 <p>
 <p>
-Example:
+\e$BNc\e(B:
 <p>
 <lisp>
 (mm-define-backend chao (generic))
 <p>
 <lisp>
 (mm-define-backend chao (generic))
@@ -471,15 +472,15 @@ Example:
 <defmacro name="mm-define-method">
 <args> name args <rest> body
 <p>
 <defmacro name="mm-define-method">
 <args> name args <rest> body
 <p>
-Define <var>name</var> as a method function of (nth 1 (car
-<var>args</var>)) backend.
+<var>name</var> \e$B$r\e(B (nth 1 (car <var>args</var>)) backend \e$B$N\e(B method \e$B4X\e(B
+\e$B?t$H$7$FDj5A$7$^$9!#\e(B
 <p>
 <p>
-<var>args</var> is like an argument list of lambda, but (car
-<var>args</var>) must be specialized parameter.  (car (car
-<var>args</var>)) is name of variable and (nth 1 (car
-<var>args</var>)) is name of backend (representation-type).
+<var>args</var> \e$B$O\e(B lambda \e$B$N0z?t%j%9%H$N$h$&$J$b$N$G$9$,!"\e(B(car
+<var>args</var>) \e$B$O;XDj$5$l$?\e(B parameter \e$B$G$"$kI,MW$,$"$j$^$9!#\e(B(car
+(car <var>args</var>)) \e$B$OJQ?t$NL>A0$G!"\e(B(nth 1 (car <var>args</var>))
+\e$B$O\e(B backend \e$B$NL>A0\e(B (representation-type) \e$B$G$9!#\e(B
 <p>
 <p>
-Example:
+\e$BNc\e(B:
 <p>
 <lisp>
 (mm-define-method entity-cooked-p ((entity chao)) nil)
 <p>
 <lisp>
 (mm-define-method entity-cooked-p ((entity chao)) nil)
@@ -724,15 +725,15 @@ Content-Transfer-Encoding \e$BMs$,B8:_$7$J$$>l9g$O\e(B
 <defun name="mime-encode-region">
            <args> start end encoding
 <p>
 <defun name="mime-encode-region">
            <args> start end encoding
 <p>
-Encode region <var>start</var> to <var>end</var> of current buffer
-using <var>encoding</var>.
+\e$B8=:_$N\e(B buffer \e$B$N\e(B <var>start</var> \e$B$+$i\e(B <var>end</var> \e$B$^$G$N\e(B region \e$B$r\e(B
+<var>encoding</var> \e$B$r;H$C$FId9f2=$7$^$9!#\e(B
 </defun>
 
 <defun name="mime-decode-region">
            <args> start end encoding
 <p>
 </defun>
 
 <defun name="mime-decode-region">
            <args> start end encoding
 <p>
-Decode region <var>start</var> to <var>end</var> of current buffer
-using <var>encoding</var>.
+\e$B8=:_$N\e(B buffer \e$B$N\e(B <var>start</var> \e$B$+$i\e(B <var>end</var> \e$B$^$G$N\e(B region \e$B$r\e(B
+<var>encoding</var> \e$B$r;H$C$FI|9f2=$7$^$9!#\e(B
 </defun>
 
 
 </defun>
 
 
@@ -746,56 +747,57 @@ using <var>encoding</var>.
 <defun name="mime-insert-encoded-file">
            <args> filename encoding
 <p>
 <defun name="mime-insert-encoded-file">
            <args> filename encoding
 <p>
-Insert file <var>FILENAME</var> encoded by <var>ENCODING</var> format.
+<var>ENCODING</var> format \e$B$GId9f2=$5$l$?\e(B file <var>FILENAME</var> \e$B$r\e(B
+\e$BA^F~$9$k!#\e(B
 </defun>
 
 <defun name="mime-write-decoded-region">
              <args> start end filename encoding
 <p>
 </defun>
 
 <defun name="mime-write-decoded-region">
              <args> start end filename encoding
 <p>
-Decode and write current region encoded by <var>encoding</var> into
-<var>filename</var>.
+<var>encoding</var> \e$B$GId9f2=$5$l$?8=:_$N\e(B region \e$B$rI|9f2=$7$F\e(B
+<var>filename</var>\e$B$K=q$-9~$_$^$9!#\e(B
 <p>
 <p>
-<var>start</var> and <var>end</var> are buffer positions.
+<var>start<var> \e$B$H\e(B <var>end</var> \e$B$O\e(B buffer \e$B$N0LCV$G$9!#\e(B
 </defun>
 
 
 </defun>
 
 
-<h2> Other utilities
+<h2> \e$BB>$N\e(B utility
 <node> Encoding information
 <p>
 <defun name="mime-encoding-list">
            <opts> SERVICE
 <p>
 <node> Encoding information
 <p>
 <defun name="mime-encoding-list">
            <opts> SERVICE
 <p>
-Return list of Content-Transfer-Encoding.
+Content-Transfer-Encoding \e$B$N\e(B list \e$B$rJV$7$^$9!#\e(B
 <p>
 <p>
-If <var>service</var> is specified, it returns available list of
-Content-Transfer-Encoding for it.
+<var>service</var> \e$B$,;XDj$5$l$F$$$k$H!"$=$l$KBP$9$k\e(B
+Content-Transfer-Encoding \e$B$rJV$7$^$9!#\e(B
 </defun>
 
 <defun name="mime-encoding-alist">
            <opts> SERVICE
 <p>
 </defun>
 
 <defun name="mime-encoding-alist">
            <opts> SERVICE
 <p>
-Return table of Content-Transfer-Encoding for completion.
+\e$BJd40$N$?$a$N\e(B Content-Transfer-Encoding \e$B$NI=$rJV$7$^$9!#\e(B
 <p>
 <p>
-If <var>service</var> is specified, it returns available list of
-Content-Transfer-Encoding for it.
+<var>service</var> \e$B$,;XDj$5$l$F$$$k>l9g$O$=$l$KBP$9$k\e(B
+Content-Transfer-Encoding \e$B$N\e(B list \e$B$rJV$7$^$9!#\e(B
 </defun>
 
 
 </defun>
 
 
-<h2> How to write encoder/decoder module
+<h2> \e$BId9f2=\e(B/\e$BI|9f2=\e(B module \e$B$N=q$-J}\e(B
 <node> mel-backend
 <p>
 <defmacro name="mel-define-method">
 <args> name args <rest> body
 <p>
 <node> mel-backend
 <p>
 <defmacro name="mel-define-method">
 <args> name args <rest> body
 <p>
-Define <var>name</var> as a method function of (nth 1 (car (last
-<var>args</var>))) backend.
+<var>name</var> \e$B$r\e(B (nth 1 (car (last <var>args</var>))) backend \e$B$N\e(B
+method \e$B4X?t$H$7$FDj5A$7$^$9!#\e(B
 <p>
 <p>
-<var>args</var> is like an argument list of lambda, but (car (last
-<var>args</var>)) must be specialized parameter.  (car (car (last
-<var>args</var>))) is name of variable and (nth 1 (car (last
-<var>args</var>))) is name of backend (encoding).
+<var>args</var> \e$B$O\e(B lambda \e$B$N0z?t\e(B list \e$B$H;w$F$$$^$9$,!"\e(B(car (last
+<var>args</var>)) \e$B$O;XDj$5$l$?\e(B parameter \e$B$G$"$kI,MW$,$"$j$^$9!#\e(B(car
+(car (last <var>args</var>))) \e$B$OJQ?t$NL>A0$G!"\e(B(nth 1 (car (last
+<var>args</var>))) \e$B$O\e(B backend \e$B$NL>A0\e(B (encoding) \e$B$G$9!#\e(B
 <p>
 <p>
-Example:
+\e$BNc\e(B:
 <p>
 <lisp>
 (mel-define-method mime-write-decoded-region (start end filename
 <p>
 <lisp>
 (mel-define-method mime-write-decoded-region (start end filename
@@ -816,16 +818,16 @@ START and END are buffer positions."
 <defmacro name="mel-define-method-function">
 <args> spec function
 <p>
 <defmacro name="mel-define-method-function">
 <args> spec function
 <p>
-Set <var>spec</var>'s function definition to <var>function</var>.
+<var>spec</var> \e$B$N4X?tDj5A$r\e(B <var>function</var> \e$B$K@_Dj$7$^$9!#\e(B
 <p>
 <p>
-First element of <var>spec</var> is service.
+<var>spec</var> \e$B$N:G=i$NMWAG$O\e(B service \e$B$G$9!#\e(B
 <p>
 <p>
-Rest of <var>args</var> is like an argument list of lambda, but (car
-(last <var>args</var>)) must be specialized parameter.  (car (car
-(last <var>args</var>))) is name of variable and (nth 1 (car (last
-<var>args</var>))) is name of backend (encoding).
+<var>args</var> \e$B$N;D$j$O\e(B lambda \e$B$N0z?t\e(B list \e$B;w$F$$$^$9$,!"\e(B(car (last
+<var>args</var>)) \e$B$O;XDj$5$l$?\e(B parameter \e$B$G$"$kI,MW$,$"$j$^$9!#\e(B(car
+(car (last <var>args</var>))) \e$B$OJQ?t$NL>A0$G!"\e(B(nth 1 (car (last
+<var>args</var>))) \e$B$O\e(B backend \e$B$NL>A0\e(B (encoding) \e$B$G$9!#\e(B
 <p>
 <p>
-Example:
+\e$BNc\e(B:
 <p>
 <lisp>
 (mel-define-method-function (mime-encode-string string (nil "base64"))
 <p>
 <lisp>
 (mel-define-method-function (mime-encode-string string (nil "base64"))
@@ -834,19 +836,20 @@ Example:
 </defmacro>
 
 
 </defmacro>
 
 
-<h2> How to add encoding/decoding service
+<h2> \e$BId9f2=\e(B/\e$BI|9f2=\e(B service \e$B$rDI2C$9$kJ}K!\e(B
 <node> generic function for mel-backend
 <p>
 <defmacro name="mel-define-service">
 <args> name
 <opts> args doc-string
 <p>
 <node> generic function for mel-backend
 <p>
 <defmacro name="mel-define-service">
 <args> name
 <opts> args doc-string
 <p>
-Define <var>name</var> as a service for Content-Transfer-Encodings.
+<var>name</var> \e$B$r\e(B Content-Transfer-Encoding \e$B$N\e(B service \e$B$H$7$FDj5A$7$^\e(B
+\e$B$9!#\e(B
 <p>
 <p>
-If <var>args</var> is specified, <var>name</var> is defined as a
-generic function for the service.
+<var>args</var> \e$B$,;XDj$5$l$F$$$k$H!"\e(B<var>name</var> \e$B$O\e(B service \e$B$N\e(B
+generic function \e$B$H$7$FDj5A$5$l$^$9!#\e(B
 <p>
 <p>
-Example:
+\e$BNc\e(B:
 <p>
 <lisp>
 (mel-define-service encoded-text-encode-string (string encoding)
 <p>
 <lisp>
 (mel-define-service encoded-text-encode-string (string encoding)
@@ -903,20 +906,19 @@ Header \e$B$r\e(B network \e$BI=8=$KId9f2=$9$k!#\e(B
 
 <defvar name="eword-field-encoding-method-alist">
 <p>
 
 <defvar name="eword-field-encoding-method-alist">
 <p>
-Association list to specify field encoding method.  Each element looks
-like (FIELD . METHOD).
+Field \e$B$rId9f2=$9$kJ}K!$r;XDj$9$kO"A[\e(B list\e$B!#3F\e(B element \e$B$O\e(B (FIELD
+. METHOD) \e$B$NMM$K$J$C$F$$$k!#\e(B
 <p>
 <p>
-If METHOD is <code>mime</code>, the FIELD will be encoded into MIME
-format (encoded-word).
+METHOD \e$B$,\e(B <code>mime</code> \e$B$G$"$l$P!"\e(BFIELD \e$B$O\e(B MIME format \e$B$KId9f2=$5\e(B
+\e$B$l$k\e(B (encoded-word)\e$B!#\e(B
 <p>
 <p>
-If METHOD is <code>nil</code>, the FIELD will not be encoded.
+METHOD \e$B$,\e(B <code>nil</code> \e$B$G$"$l$P!"\e(BFIELD \e$B$OId9f2=$5$l$J$$!#\e(B
 <p>
 <p>
-If METHOD is a MIME charset, the FIELD will be encoded as the charset
-when it must be convert into network-code.
+METHOD \e$B$,\e(B MIME charset \e$B$G$"$l$P!"\e(BFIELD \e$B$O%M%C%H%o!<%/%3!<%I$KJQ49$7$J\e(B
+\e$B$1$l$P$J$i$J$$$H$-$K\e(B charset \e$B$KId9f2=$5$l$k!#\e(B
 <p>
 <p>
-Otherwise the FIELD will be encoded as variable
-<code>default-mime-charset</code> when it must be convert into
-network-code.
+\e$B$=$&$G$J$1$l$P!"\e(BFIELD \e$B$O%M%C%H%o!<%/%3!<%I$KJQ49$7$J$1$l$P$J$i$J$$$H$-\e(B
+\e$B$K\e(B \e$BJQ?t\e(B <code>default-mime-charset</code> \e$B$GId9f2=$5$l$k\e(B
 </defvar>
 
 
 </defvar>
 
 
index 003b800..7d760c4 100644 (file)
 
 ;;; Code:
 
 
 ;;; Code:
 
-(require 'std11)
 (require 'mime-def)
 (require 'mime-def)
-
-(eval-when-compile (require 'cl))
+(require 'std11)
 
 
 ;;; @ lexical analyzer
 
 
 ;;; @ lexical analyzer
diff --git a/mime.el b/mime.el
index 0130f99..ce23631 100644 (file)
--- a/mime.el
+++ b/mime.el
 (require 'mime-def)
 (require 'eword-decode)
 
 (require 'mime-def)
 (require 'eword-decode)
 
-(autoload 'eword-encode-field "eword-encode"
-  "Encode header field STRING, and return the result.")
+(eval-and-compile
+
 (autoload 'eword-encode-header "eword-encode"
   "Encode header fields to network representation, such as MIME encoded-word.")
 
 (autoload 'eword-encode-header "eword-encode"
   "Encode header fields to network representation, such as MIME encoded-word.")
 
-
 (autoload 'mime-parse-Content-Type "mime-parse"
   "Parse STRING as field-body of Content-Type field.")
 (autoload 'mime-read-Content-Type "mime-parse"
 (autoload 'mime-parse-Content-Type "mime-parse"
   "Parse STRING as field-body of Content-Type field.")
 (autoload 'mime-read-Content-Type "mime-parse"
@@ -62,6 +61,7 @@ current-buffer, and return it.")
 (autoload 'mime-parse-buffer "mime-parse"
   "Parse BUFFER as a MIME message.")
 
 (autoload 'mime-parse-buffer "mime-parse"
   "Parse BUFFER as a MIME message.")
 
+)
 
 ;;; @ Entity Representation and Implementation
 ;;;
 
 ;;; @ Entity Representation and Implementation
 ;;;
diff --git a/smtp.el b/smtp.el
index 79ef969..baef1ec 100644 (file)
--- a/smtp.el
+++ b/smtp.el
@@ -3,8 +3,9 @@
 ;; Copyright (C) 1995, 1996, 1998 Free Software Foundation, Inc.
 
 ;; Author: Tomoji Kagatani <kagatani@rbc.ncl.omron.co.jp>
 ;; Copyright (C) 1995, 1996, 1998 Free Software Foundation, Inc.
 
 ;; Author: Tomoji Kagatani <kagatani@rbc.ncl.omron.co.jp>
-;;         Simon Leinen <simon@switch.ch> (ESMTP support)
-;;         Shuhei KOBAYASHI <shuhei-k@jaist.ac.jp>
+;;     Simon Leinen <simon@switch.ch> (ESMTP support)
+;;     MORIOKA Tomohiko <tomo@m17n.org> (separate smtp.el from smtpmail.el)
+;;     Shuhei KOBAYASHI <shuhei@aqua.ocn.ne.jp>
 ;; Keywords: SMTP, mail
 
 ;; This file is part of FLIM (Faithful Library about Internet Message).
 ;; Keywords: SMTP, mail
 
 ;; This file is part of FLIM (Faithful Library about Internet Message).
 ;; General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
 ;; 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
+;; along with this program; see the file COPYING.  If not, write to the
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;;; Code:
 
 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;;; Code:
 
-(require 'mail-utils) ; pick up mail-strip-quoted-names
+(require 'poe)
+(require 'poem)
+(require 'pcustom)
+(require 'mail-utils)                  ; mail-strip-quoted-names
+
+(eval-when-compile (require 'cl))      ; push
 
 (defgroup smtp nil
   "SMTP protocol for sending mail."
 
 (defgroup smtp nil
   "SMTP protocol for sending mail."
   :group 'smtp)
 
 (defcustom smtp-server (or (getenv "SMTPSERVER") smtp-default-server)
   :group 'smtp)
 
 (defcustom smtp-server (or (getenv "SMTPSERVER") smtp-default-server)
-  "*The name of the host running SMTP server."
-  :type '(choice (const nil) string)
+  "*The name of the host running SMTP server.  It can also be a function
+called from `smtp-via-smtp' with arguments SENDER and RECIPIENTS."
+  :type '(choice (string :tag "Name")
+                (function :tag "Function"))
   :group 'smtp)
 
 (defcustom smtp-service "smtp"
   :group 'smtp)
 
 (defcustom smtp-service "smtp"
@@ -60,7 +68,11 @@ don't define this value."
   :type '(choice (const nil) string)
   :group 'smtp)
 
   :type '(choice (const nil) string)
   :group 'smtp)
 
-(defvar smtp-debug-info nil)
+(defcustom smtp-debug-info nil
+  "*smtp debug info printout. messages and process buffer."
+  :type 'boolean
+  :group 'smtp)
+
 (defvar smtp-read-point nil)
 
 (defun smtp-make-fqdn ()
 (defvar smtp-read-point nil)
 
 (defun smtp-make-fqdn ()
@@ -75,11 +87,14 @@ don't define this value."
       (error "Cannot generate valid FQDN. Set `smtp-local-domain' correctly.")))))
 
 (defun smtp-via-smtp (sender recipients smtp-text-buffer)
       (error "Cannot generate valid FQDN. Set `smtp-local-domain' correctly.")))))
 
 (defun smtp-via-smtp (sender recipients smtp-text-buffer)
-  (let (process response extensions)
+  (let ((server (if (functionp smtp-server)
+                   (funcall smtp-server sender recipients)
+                 smtp-server))
+       process response extensions)
     (save-excursion
       (set-buffer
        (get-buffer-create
     (save-excursion
       (set-buffer
        (get-buffer-create
-       (format "*trace of SMTP session to %s*" smtp-server)))
+       (format "*trace of SMTP session to %s*" server)))
       (erase-buffer)
       (make-local-variable 'smtp-read-point)
       (setq smtp-read-point (point-min))
       (erase-buffer)
       (make-local-variable 'smtp-read-point)
       (setq smtp-read-point (point-min))
@@ -87,7 +102,7 @@ don't define this value."
       (unwind-protect
          (catch 'done
            (setq process (open-network-stream-as-binary
       (unwind-protect
          (catch 'done
            (setq process (open-network-stream-as-binary
-                          "SMTP" (current-buffer) smtp-server smtp-service))
+                          "SMTP" (current-buffer) server smtp-service))
            (or process (throw 'done nil))
 
            (set-process-filter process 'smtp-process-filter)
            (or process (throw 'done nil))
 
            (set-process-filter process 'smtp-process-filter)
@@ -121,7 +136,7 @@ don't define this value."
                        extensions)
                  (setq extension-lines (cdr extension-lines)))))
 
                        extensions)
                  (setq extension-lines (cdr extension-lines)))))
 
-            ;; ONEX --- One message transaction only (sendmail extension?)
+           ;; ONEX --- One message transaction only (sendmail extension?)
            (if (or (memq 'onex extensions)
                    (memq 'xone extensions))
                (progn
            (if (or (memq 'onex extensions)
                    (memq 'xone extensions))
                (progn
@@ -132,7 +147,7 @@ don't define this value."
                          (>= (car response) 400))
                      (throw 'done (car (cdr response))))))
 
                          (>= (car response) 400))
                      (throw 'done (car (cdr response))))))
 
-            ;; VERB --- Verbose (sendmail extension?)
+           ;; VERB --- Verbose (sendmail extension?)
            (if (and smtp-debug-info
                     (or (memq 'verb extensions)
                         (memq 'xvrb extensions)))
            (if (and smtp-debug-info
                     (or (memq 'verb extensions)
                         (memq 'xvrb extensions)))
@@ -144,7 +159,7 @@ don't define this value."
                          (>= (car response) 400))
                      (throw 'done (car (cdr response))))))
 
                          (>= (car response) 400))
                      (throw 'done (car (cdr response))))))
 
-            ;; XUSR --- Initial (user) submission (sendmail extension?)
+           ;; XUSR --- Initial (user) submission (sendmail extension?)
            (if (memq 'xusr extensions)
                (progn
                  (smtp-send-command process "XUSR")
            (if (memq 'xusr extensions)
                (progn
                  (smtp-send-command process "XUSR")
@@ -159,7 +174,7 @@ don't define this value."
             process
             (format "MAIL FROM:<%s>%s%s"
                     sender
             process
             (format "MAIL FROM:<%s>%s%s"
                     sender
-                     ;; SIZE --- Message Size Declaration (RFC1870)
+                    ;; SIZE --- Message Size Declaration (RFC1870)
                     (if (memq 'size extensions)
                         (format " SIZE=%d"
                                 (save-excursion
                     (if (memq 'size extensions)
                         (format " SIZE=%d"
                                 (save-excursion
@@ -174,7 +189,7 @@ don't define this value."
                                      ;; those two bytes anyway:
                                      2)))
                       "")
                                      ;; those two bytes anyway:
                                      2)))
                       "")
-                     ;; 8BITMIME --- 8bit-MIMEtransport (RFC1652)
+                    ;; 8BITMIME --- 8bit-MIMEtransport (RFC1652)
                     (if (and (memq '8bitmime extensions)
                              smtp-use-8bitmime)
                         " BODY=8BITMIME"
                     (if (and (memq '8bitmime extensions)
                              smtp-use-8bitmime)
                         " BODY=8BITMIME"
@@ -184,7 +199,7 @@ don't define this value."
                    (not (integerp (car response)))
                    (>= (car response) 400))
                (throw 'done (car (cdr response))))
                    (not (integerp (car response)))
                    (>= (car response) 400))
                (throw 'done (car (cdr response))))
-       
+
            ;; RCPT TO:<recipient>
            (while recipients
              (smtp-send-command process
            ;; RCPT TO:<recipient>
            (while recipients
              (smtp-send-command process
@@ -195,7 +210,7 @@ don't define this value."
                      (not (integerp (car response)))
                      (>= (car response) 400))
                  (throw 'done (car (cdr response)))))
                      (not (integerp (car response)))
                      (>= (car response) 400))
                  (throw 'done (car (cdr response)))))
-       
+
            ;; DATA
            (smtp-send-command process "DATA")
            (setq response (smtp-read-response process))
            ;; DATA
            (smtp-send-command process "DATA")
            (setq response (smtp-read-response process))
index 807b4a7..1cb7a1f 100644 (file)
@@ -18,8 +18,8 @@
 ;; General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
 ;; 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,
+;; along with this program; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
 ;;; Commentary:
 ;; Boston, MA 02111-1307, USA.
 
 ;;; Commentary:
 
 ;;; Code:
 
 
 ;;; Code:
 
+(require 'poe)
+(require 'pcustom)
 (require 'smtp)
 (require 'sendmail)
 (require 'time-stamp)
 
 (require 'smtp)
 (require 'sendmail)
 (require 'time-stamp)
 
+(eval-when-compile (require 'static))
+
+(static-when (featurep 'xemacs)
+  (define-obsolete-variable-alias 'smtpmail-default-smtp-server
+    'smtp-default-server)
+  (define-obsolete-variable-alias 'smtpmail-smtp-server 'smtp-server)
+  (define-obsolete-variable-alias 'smtpmail-smtp-service 'smtp-service)
+  (define-obsolete-variable-alias 'smtpmail-local-domain 'smtp-local-domain)
+  (define-obsolete-variable-alias 'smtpmail-debug-info 'smtp-debug-info)
+  )
+
 ;;;
 
 (defcustom smtpmail-queue-mail nil 
 ;;;
 
 (defcustom smtpmail-queue-mail nil 
@@ -102,7 +115,7 @@ This is relative to `smtpmail-queue-dir'.")
          (backward-char 1)
          (setq delimline (point-marker))
 ;;       (sendmail-synch-aliases)
          (backward-char 1)
          (setq delimline (point-marker))
 ;;       (sendmail-synch-aliases)
-         (if mail-aliases
+         (if (and mail-aliases (fboundp 'expand-mail-aliases)) ; XEmacs
              (expand-mail-aliases (point-min) delimline))
          (goto-char (point-min))
          ;; ignore any blank lines in the header
              (expand-mail-aliases (point-min) delimline))
          (goto-char (point-min))
          ;; ignore any blank lines in the header
index a083236..982b895 100644 (file)
--- a/std11.el
+++ b/std11.el
 
 ;;; Code:
 
 
 ;;; Code:
 
-(or (fboundp 'buffer-substring-no-properties)
-    (require 'poe))
-
-(require 'custom)
+(require 'poe)
+(require 'poem)                                ; find-non-ascii-charset-string
+(require 'pcustom)                     ; std11-lexical-analyzer
 
 
 ;;; @ fetch
 
 
 ;;; @ fetch