2 ;;; $Id: mel-u.el,v 2.0 1995/10/30 06:01:29 morioka Exp $
8 (defvar uuencode-external-encoder '("uuencode" "-")
9 "*list of uuencode encoder program name and its arguments.")
11 (defvar uuencode-external-decoder '("uudecode")
12 "*list of uuencode decoder program name and its arguments.")
13 (list "sh" "-c" (format "(cd %s; uudecode)" mime/tmp-dir))
15 (defvar mime/tmp-dir (or (getenv "TM_TMP_DIR") "/tmp/"))
18 ;;; @ external encoder
22 (define-program-coding-system
23 nil (car uuencode-external-encoder) *noconv*)
24 (define-program-coding-system
25 nil (car uuencode-external-decoder) *noconv*)
28 (define-program-kanji-code
29 nil (car uuencode-external-encoder) 0)
30 (define-program-kanji-code
31 nil (car uuencode-external-decoder) 0)
34 (defun uuencode-external-encode-region (beg end)
37 (let ((selective-display nil) ;Disable ^M to nl translation.
39 (kanji-flag nil)) ;NEmacs
40 (apply (function call-process-region)
41 beg end (car uuencode-external-encoder)
42 t t nil (cdr uuencode-external-encoder))
45 (defun uuencode-external-decode-region (beg end)
48 (let ((selective-display nil) ;Disable ^M to nl translation.
50 (kanji-flag nil) ;NEmacs
51 (filename (save-excursion
53 (narrow-to-region beg end)
55 (if (re-search-forward "^begin [0-9]+ " nil t)
56 (if (looking-at ".+$")
57 (buffer-substring (match-beginning 0)
64 (funcall (function call-process-region)
67 "-c" (format "(cd %s; %s)"
69 (mapconcat (function identity)
70 uuencode-external-decoder
73 (setq filename (expand-file-name filename mime/tmp-dir))
74 (let ((file-coding-system-for-read
75 (if (boundp 'MULE) *noconv*)) ; Mule
76 kanji-fileio-code) ; NEmacs
77 (insert-file-contents filename)
79 (delete-file filename)
83 (defalias 'uuencode-encode-region 'uuencode-external-encode-region)
84 (defalias 'uuencode-decode-region 'uuencode-external-decode-region)