;;; Boston, MA 02111-1307, USA.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(eval-when-compile (require 'cl))
+
;; For non-MULE
(if (not (fboundp 'char-int))
- (fset 'char-int 'identity))
+ (defalias 'char-int 'identity))
(defvar base64-alphabet
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")
(ignore-errors
(delete-file tempfile)))))
-(if (string-match "XEmacs" emacs-version)
+(if (featurep 'xemacs)
(defalias 'base64-insert-char 'insert-char)
(defun base64-insert-char (char &optional count ignored buffer)
(if (or (null buffer) (eq buffer (current-buffer)))
(setq bits 0 counter 0))
(t (setq bits (lsh bits 6)))))))
(cond
- ((= (point) end)
- (if (not (zerop counter))
- (error "at least %d bits missing at end of base64 encoding"
- (* (- 4 counter) 6)))
- (setq done t))
- ((eq (char-after (point)) ?=)
+ ((or (= (point) end)
+ (eq (char-after (point)) ?=))
+ (if (and (= (point) end) (> counter 1))
+ (message
+ "at least %d bits missing at end of base64 encoding"
+ (* (- 4 counter) 6)))
(setq done t)
(cond ((= counter 1)
(error "at least 2 bits missing at end of base64 encoding"))
(and work-buffer (kill-buffer work-buffer))))
(message "Encoding base64... done"))
-(defun base64-encode (string)
+(defun base64-encode (string &optional no-line-break)
(save-excursion
(set-buffer (get-buffer-create " *base64-encode*"))
(erase-buffer)
(insert string)
- (base64-encode-region (point-min) (point-max))
+ (base64-encode-region (point-min) (point-max) no-line-break)
(skip-chars-backward " \t\r\n")
(delete-region (point-max) (point))
(prog1
(buffer-string)
(kill-buffer (current-buffer)))))
-(fset 'base64-decode-string 'base64-decode)
-(fset 'base64-encode-string 'base64-encode)
+(defalias 'base64-decode-string 'base64-decode)
+(defalias 'base64-encode-string 'base64-encode)
(provide 'base64)