From: Magnus Henoch Date: Wed, 23 Apr 2008 16:46:57 +0000 (+0000) Subject: (tar-untar-buffer): If the entry has directory link type, extract it X-Git-Tag: emacs-pretest-23.0.90~6093 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=419625f7f62a926e1eb27bd581511fd08021e183;p=emacs.git (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. --- 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))))