Function: archive-extract-by-file
archive-extract-by-file is a byte-compiled function defined in
arc-mode.el.gz.
Signature
(archive-extract-by-file ARCHIVE NAME COMMAND &optional STDOUT-TEST)
Source Code
;; Defined in /usr/src/emacs/lisp/arc-mode.el.gz
(defun archive-extract-by-file (archive name command &optional stdout-test)
(let ((dest (make-temp-file "arc-dir" 'dir))
(stdout-file (make-temp-file "arc-stdout")))
(unwind-protect
(prog1
(apply #'call-process
(car command)
nil
`(:file ,stdout-file)
nil
`(,archive ,name ,@(cdr command) ,dest))
(with-temp-buffer
(insert-file-contents stdout-file)
(goto-char (point-min))
(when (if (stringp stdout-test)
(not (re-search-forward stdout-test nil t))
(> (buffer-size) 0))
(message "%s" (buffer-string))))
(if (file-exists-p (expand-file-name name dest))
(insert-file-contents-literally (expand-file-name name dest))))
(if (file-exists-p stdout-file)
(delete-file stdout-file))
(if (file-exists-p (expand-file-name name dest))
(delete-file (expand-file-name name dest)))
(while (file-name-directory name)
(setq name (directory-file-name (file-name-directory name)))
(when (file-directory-p (expand-file-name name dest))
(delete-directory (expand-file-name name dest))))
(when (file-directory-p dest)
(delete-directory dest)))))