Importing Pterodactyl Gnus v0.93.
[elisp/gnus.git-] / lisp / base64.el
index 3d89247..0eec5f4 100644 (file)
@@ -25,8 +25,6 @@
 ;;; Boston, MA 02111-1307, USA.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(require 'mm-util)
-
 ;; For non-MULE
 (if (not (fboundp 'char-int))
     (fset 'char-int 'identity))
@@ -75,9 +73,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)
+  (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"))
@@ -96,25 +98,17 @@ base64-encoder-program.")
                     (setq errstring (buffer-string))
                     (kill-buffer nil)
                     (cons status errstring)))))
-      (condition-case ()
-         (delete-file tempfile)
-       (error nil)))))
-
-(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))))
+      (ignore-errors
+       (delete-file tempfile)))))
 
-(defun base64-xemacs-insert-char (char &optional count ignored buffer)
-  (if (and buffer (eq buffer (current-buffer)))
-      (insert-char char count)
-    (save-excursion
-      (set-buffer buffer)
-      (insert-char char count))))
+(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 'no-conversion))
 
 (defun base64-decode-region (start end)
   (interactive "r")
@@ -145,7 +139,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)
@@ -164,7 +158,7 @@ base64-encoder-program.")
                    (error "at least %d bits missing at end of base64 encoding"
                           (* (- 4 counter) 6)))
                (setq done t))
-              ((= (char-after (point)) ?=)
+              ((eq (char-after (point)) ?=)
                (setq done t)
                (cond ((= counter 1)
                       (error "at least 2 bits missing at end of base64 encoding"))
@@ -274,6 +268,8 @@ 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)
 
 (provide 'base64)