X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mel-b.el;h=e9a382a5dfa2de27f3e8473d25068677778c6fb4;hb=72572076a671d8b11bd6631432aef4c040ceceae;hp=9a5091054600071f42ecbf3aea79dc8badc03fff;hpb=7bb363b0f42336b97a5229e0097b265adaa0eef2;p=elisp%2Fflim.git diff --git a/mel-b.el b/mel-b.el index 9a50910..e9a382a 100644 --- a/mel-b.el +++ b/mel-b.el @@ -149,8 +149,7 @@ external decoder is called.") )) ))) -(defun base64-decode-string (string) - "Decode STRING which is encoded in base64, and return the result." +(defun base64-internal-decode-string (string) (let ((len (length string)) (i 0) dest) @@ -210,7 +209,7 @@ external decoder is called.") (let ((str (buffer-substring beg end))) (delete-region beg end) (goto-char beg) - (insert (base64-decode-string str))))) + (insert (base64-internal-decode-string str))))) (defun base64-external-encode-region (beg end) (save-excursion @@ -235,6 +234,17 @@ external decoder is called.") t t nil (cdr base64-external-decoder)) ))) +(defun base64-external-decode-string (string) + (with-temp-buffer + (insert string) + (as-binary-process (apply (function call-process-region) + (point-min) (point-max) + (car base64-external-decoder) + t t nil (cdr base64-external-decoder)) + ) + (buffer-string))) + + (defun base64-encode-region (start end) "Encode current region by base64. START and END are buffer positions. @@ -265,6 +275,20 @@ metamail or XEmacs package)." (base64-internal-decode-region start end) )) +(defun base64-decode-string (string) + "Decode STRING which is encoded in base64, and return the result. +This function calls internal base64 decoder if size of STRING is +smaller than `base64-internal-decoding-limit', otherwise it calls +external base64 decoder specified by `base64-external-decoder'. In +this case, you must install the program (maybe mmencode included in +metamail or XEmacs package)." + (interactive "r") + (if (and base64-internal-decoding-limit + (> (length string) base64-internal-decoding-limit)) + (base64-external-decode-string string) + (base64-internal-decode-string string) + )) + ;;; @ base64 encoder/decoder for file ;;;