From 27129192f52aa06774ef7d6dc3ec3fa8c36842d7 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Fri, 8 Mar 2002 09:54:42 +0000 Subject: [PATCH] (tar-untar-buffer): New function. --- lisp/tar-mode.el | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el index 2bfd75c7630..576d8be02e6 100644 --- a/lisp/tar-mode.el +++ b/lisp/tar-mode.el @@ -373,6 +373,27 @@ MODE should be an integer which is a file mode value." (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; -- 2.39.2