X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mel-b-ccl.el;h=fa1248316d1745059563f89c1e104ca8b651eb84;hb=refs%2Fheads%2Fdoodle;hp=e9e7f16df55446d15b0c31e51370a3afe90834d8;hpb=58422837b07923805a9a1c02c60e965027909ea4;p=elisp%2Fflim.git diff --git a/mel-b-ccl.el b/mel-b-ccl.el index e9e7f16..fa12483 100644 --- a/mel-b-ccl.el +++ b/mel-b-ccl.el @@ -1,6 +1,6 @@ -;;; 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,1999 Tanaka Akira ;; Author: Tanaka Akira ;; Created: 1998/9/17 @@ -19,7 +19,7 @@ ;; 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. @@ -105,6 +105,10 @@ abcdefghijklmnopqrstuvwxyz\ (logand v (lsh 255 8)) (lsh (logand v 255) 16))) +) + +(eval-when-compile + (defconst mel-ccl-decode-b-0-table (vconcat (mapcar @@ -284,9 +288,10 @@ abcdefghijklmnopqrstuvwxyz\ (&optional quantums-per-line output-crlf terminate-with-newline) `(2 ((r3 = 0) + (r2 = 0) + (read r1) (loop - (r2 = 0) - (read-branch + (branch r1 ,@(mapcar (lambda (r1) @@ -327,6 +332,8 @@ abcdefghijklmnopqrstuvwxyz\ (nth r1 mel-ccl-64-to-256-table)) mel-ccl-64-table))) (r3 += 1) + (r2 = 0) + (read r1) ,@(when quantums-per-line `((if (r3 == ,quantums-per-line) ((write ,(if output-crlf "\r\n" "\n")) @@ -394,20 +401,25 @@ abcdefghijklmnopqrstuvwxyz\ (unless-broken ccl-execute-eof-block-on-decoding-some - (defun base64-ccl-encode-string (string) + (defun base64-ccl-encode-string (string &optional no-line-break) "Encode STRING with base64 encoding." - (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) + (defun base64-ccl-encode-region (start end &optional no-line-break) "Encode region from START to END with base64 encoding." - (interactive "r") - (decode-coding-region start end 'mel-ccl-base64-lf-rev)) + (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))) + (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." - (interactive (list (read-file-name "Insert encoded file: "))) - (let ((coding-system-for-read 'mel-ccl-base64-lf-rev)) - (insert-file-contents filename))) + (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")) 'base64-ccl-encode-string) @@ -424,20 +436,18 @@ abcdefghijklmnopqrstuvwxyz\ (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." - (interactive "r") + (interactive "*r") (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." - (interactive - (list (region-beginning) (region-end) - (read-file-name "Write decoded region to file: "))) - (let ((coding-system-for-write 'mel-ccl-b-rev) - jka-compr-compression-info-list) - (write-region start end filename))) + (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")) 'base64-ccl-decode-string) @@ -448,8 +458,9 @@ abcdefghijklmnopqrstuvwxyz\ '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))) @@ -459,4 +470,4 @@ abcdefghijklmnopqrstuvwxyz\ (provide 'mel-b-ccl) -;;; mel-b-ccl.el ends here +;;; mel-b-ccl.el ends here.