X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=lisp%2Fbase64.el;h=a30d29251128024f499637050c0f5d16ef753854;hb=6c1cc3f8b3cb1cd33a6d8fd658721714f2310503;hp=5abc827d504c72e20075e00556ae6bdd25de2120;hpb=c9bd698099731ccbdb758c62c7735a2bc699b100;p=elisp%2Fgnus.git- diff --git a/lisp/base64.el b/lisp/base64.el index 5abc827..a30d292 100644 --- a/lisp/base64.el +++ b/lisp/base64.el @@ -25,6 +25,8 @@ ;;; Boston, MA 02111-1307, USA. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(require 'poe) + ;; For non-MULE (if (not (fboundp 'char-int)) (fset 'char-int 'identity)) @@ -73,9 +75,13 @@ base64-encoder-program.") (setq p (cdr p))) v)) +(defvar base64-binary-coding-system 'binary) + (defun base64-run-command-on-region (start end output-buffer command &rest arg-list) - (let ((tempfile nil) status errstring default-process-coding-system) + (let ((tempfile nil) status errstring default-process-coding-system + (coding-system-for-write base64-binary-coding-system) + (coding-system-for-read base64-binary-coding-system)) (unwind-protect (progn (setq tempfile (make-temp-name "base64")) @@ -94,27 +100,19 @@ base64-encoder-program.") (setq errstring (buffer-string)) (kill-buffer nil) (cons status errstring))))) - (condition-case () - (delete-file tempfile) - (error nil))))) + (ignore-errors + (delete-file tempfile))))) -(defun base64-insert-char (char &optional count ignored buffer) - (condition-case nil - (progn - (insert-char char count ignored buffer) - (fset 'base64-insert-char 'insert-char)) - (wrong-number-of-arguments - (fset 'base64-insert-char 'base64-xemacs-insert-char) - (base64-insert-char char count ignored buffer)))) +(if (string-match "XEmacs" emacs-version) + (defalias 'base64-insert-char 'insert-char) + (defun base64-insert-char (char &optional count ignored buffer) + (if (or (null buffer) (eq buffer (current-buffer))) + (insert-char char count) + (with-current-buffer buffer + (insert-char char count)))) + (setq base64-binary-coding-system 'raw-text)) -(defun base64-xemacs-insert-char (char &optional count ignored buffer) - (if (or (null buffer) (eq buffer (current-buffer))) - (insert-char char count) - (save-excursion - (set-buffer buffer) - (insert-char char count)))) - -(defun base64-decode-region (start end) +(defun-maybe base64-decode-region (start end) (interactive "r") ;;(message "Decoding base64...") (let ((work-buffer nil) @@ -143,7 +141,7 @@ base64-encoder-program.") ((> (skip-chars-forward base64-alphabet end) 0) (setq lim (point)) (while (< inputpos lim) - (setq bits (+ bits + (setq bits (+ bits (aref base64-alphabet-decoding-vector (char-int (char-after inputpos))))) (setq counter (1+ counter) @@ -182,7 +180,7 @@ base64-encoder-program.") ;;(message "Decoding base64... done") ) -(defun base64-encode-region (start end &optional no-line-break) +(defun-maybe base64-encode-region (start end &optional no-line-break) (interactive "r") (message "Encoding base64...") (let ((work-buffer nil) @@ -272,7 +270,7 @@ base64-encoder-program.") (delete-region (point-max) (point)) (prog1 (buffer-string) - (kill-buffer (current-buffer))))) + (kill-buffer (current-buffer))))) (fset 'base64-decode-string 'base64-decode)