Function: jka-compr-file-local-copy
jka-compr-file-local-copy is a byte-compiled function defined in
jka-compr.el.gz.
Signature
(jka-compr-file-local-copy FILE)
Source Code
;; Defined in /usr/src/emacs/lisp/jka-compr.el.gz
(defun jka-compr-file-local-copy (file)
(let* ((filename (expand-file-name file))
(info (jka-compr-get-compression-info filename)))
(if info
(let ((uncompress-message (jka-compr-info-uncompress-message info))
(uncompress-program (jka-compr-info-uncompress-program info))
(uncompress-args (jka-compr-info-uncompress-args info))
(base-name (file-name-nondirectory filename))
(local-copy
(jka-compr-run-real-handler 'file-local-copy (list filename)))
(temp-file (jka-compr-make-temp-name t))
(temp-buffer (get-buffer-create " *jka-compr-flc-temp*"))
local-file)
(setq local-file (or local-copy filename))
(unwind-protect
(with-current-buffer temp-buffer
(and
uncompress-message
jka-compr-verbose
(message "%s %s..." uncompress-message base-name))
;; Here we must read the output of uncompress program
;; and write it to TEMP-FILE without any code
;; conversion. An appropriate code conversion (if
;; necessary) is done by the later I/O operation
;; (e.g. load).
(let ((coding-system-for-read 'no-conversion)
(coding-system-for-write 'no-conversion))
(jka-compr-call-process uncompress-program
(concat uncompress-message
" " base-name)
local-file
t
nil
uncompress-args)
(and
uncompress-message
jka-compr-verbose
(message "%s %s...done" uncompress-message base-name))
(write-region
(point-min) (point-max) temp-file nil 'dont)))
(and
local-copy
(file-exists-p local-copy)
(delete-file local-copy))
(kill-buffer temp-buffer))
temp-file)
(jka-compr-run-real-handler 'file-local-copy (list filename)))))