# HG changeset patch # User Richard M. Stallman # Date 1015581282 0 # Node ID c62ae85e0f7b75a136e68e51c74bbde199467125 # Parent 5de6df44f85fb4736c52851714a385d83caea097 (tar-untar-buffer): New function. diff -r 5de6df44f85f -r c62ae85e0f7b lisp/tar-mode.el --- a/lisp/tar-mode.el Fri Mar 08 09:39:16 2002 +0000 +++ b/lisp/tar-mode.el Fri Mar 08 09:54:42 2002 +0000 @@ -373,6 +373,27 @@ (concat (if (= type 1) " ==> " " --> ") link-name) "")))) +(defun tar-untar-buffer () + "Extract all archive members in the tar-file." + (interactive) + (let ((multibyte enable-multibyte-characters)) + (unwind-protect + (save-restriction + (widen) + (set-buffer-multibyte nil) + (dolist (descriptor tar-parse-info) + (let* ((tokens (tar-desc-tokens descriptor)) + (name (tar-header-name tokens)) + (dir (file-name-directory name)) + (start (+ (tar-desc-data-start descriptor) tar-header-offset -1)) + (end (+ start (tar-header-size tokens)))) + (message "Extracting %s" name) + (if (and dir (not (file-exists-p dir))) + (make-directory dir t)) + (write-region start end name) + (set-file-modes name (tar-header-mode tokens))))) + (set-buffer-multibyte multibyte)))) + (defun tar-summarize-buffer () "Parse the contents of the tar file in the current buffer. Place a dired-like listing on the front;