(TopLevel): Use `static-if', requiring "static" at the compile time.
[elisp/gnus.git-] / lisp / base64.el
index 6766e6f..a30d292 100644 (file)
@@ -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"))
@@ -103,9 +109,10 @@ base64-encoder-program.")
     (if (or (null buffer) (eq buffer (current-buffer)))
        (insert-char char count)
       (with-current-buffer buffer
-       (insert-char char count)))))
+       (insert-char char count))))
+  (setq base64-binary-coding-system 'raw-text))
 
-(defun base64-decode-region (start end)
+(defun-maybe base64-decode-region (start end)
   (interactive "r")
   ;;(message "Decoding base64...")
   (let ((work-buffer nil)
@@ -173,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)