From 419625f7f62a926e1eb27bd581511fd08021e183 Mon Sep 17 00:00:00 2001 From: Magnus Henoch Date: Wed, 23 Apr 2008 16:46:57 +0000 Subject: [PATCH] (tar-untar-buffer): If the entry has directory link type, extract it as a directory even if its file name doesn't end with a slash. Fixes extraction of NetBSD tar archives. --- lisp/ChangeLog | 6 ++++++ lisp/tar-mode.el | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 9ac6b7a541f..5ad79ce1421 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2008-04-23 Magnus Henoch + + * tar-mode.el (tar-untar-buffer): If the entry has directory + link type, extract it as a directory even if its file name doesn't + end with a slash. Fixes extraction of NetBSD tar archives. + 2008-04-23 Stefan Monnier * server.el (server-start): Also don't get confused by CRs since we diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el index 2d9651832b5..4589127e26b 100644 --- a/lisp/tar-mode.el +++ b/lisp/tar-mode.el @@ -395,7 +395,9 @@ MODE should be an integer which is a file mode value." (dolist (descriptor tar-parse-info) (let* ((tokens (tar-desc-tokens descriptor)) (name (tar-header-name tokens)) - (dir (file-name-directory name)) + (dir (if (eq (tar-header-link-type tokens) 5) + name + (file-name-directory name))) (start (+ (tar-desc-data-start descriptor) (- tar-header-offset (point-min)))) (end (+ start (tar-header-size tokens)))) -- 2.39.5