Subject: bug#5540 closed by Juri Linkov <[email-masked]> (Re: bug#5540: 23.1.92; failed to access zip inside zip when not using tramp)

From: [email-masked] (Emacs bug Tracking System)
Date: Fri, 12 Feb 2010 19:52:04 +0000

This is an automatic notification regarding your bug report
which was filed against the emacs package:

#5540: 23.1.92; failed to access zip inside zip when not using tramp

It has been closed by Juri Linkov <[email-masked]>.

Their explanation is attached below along with your original report.
If this explanation is unsatisfactory and you have not received a
better one in a separate message then please contact Juri Linkov <[email-masked]> by
replying to this email.

-- 
5540: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=5540
Emacs Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#5540: 23.1.92; failed to access zip inside zip when not using tramp
From: Juri Linkov <[email-masked]>
To: [email-masked]
Date: Fri, 12 Feb 2010 21:45:17 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

> The following patch creates the directories for nested archives:
>
> === modified file 'lisp/arc-mode.el'
> --- lisp/arc-mode.el	2010-02-04 19:54:46 +0000
> +++ lisp/arc-mode.el	2010-02-09 21:12:51 +0000
> @@ -850,6 +850,11 @@ (defun archive-unique-fname (fname dir)
>  	  ;; reconstructed in the temporary directory.
>  	  (make-directory (file-name-directory tmpfile) t)
>  	  (make-temp-file tmpfile))
> +      ;; Maked sure all the leading directories in `fullname' exist
> +      ;; under archive-tmpdir.  This is necessary for nested archives
> +      ;; (`archive-extract' sets `archive-remote' to t in case
> +      ;; an archive occurs inside another archive).
> +      (make-directory (file-name-directory fullname) t)
>        fullname)))
>  
>  (defun archive-maybe-copy (archive)

Installed.

-- 
Juri Linkov
http://www.jurta.org/emacs/

Subject: 23.1.92; failed to access zip inside zip when not using tramp
From: Juri Linkov <[email-masked]>
To: [email-masked]
Date: Sun, 07 Feb 2010 19:01:56 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

The fix revno#98570 for bug#4929 (with the subject "failed to access file
inside zip archive when using tramp") broke the ability to visit a file
in an archive inside another archive.

The problem is in the following lines in `archive-extract':

	    ;; Just in case an archive occurs inside another archive.
	    (when (derived-mode-p 'archive-mode)
              (setq archive-remote t)

This means that nested archives are treated as remote files.

An example of a patch that fixes this bug for nested archives:

=== modified file 'lisp/arc-mode.el'
--- lisp/arc-mode.el	2010-02-04 18:54:46 +0000
+++ lisp/arc-mode.el	2010-02-07 17:01:18 +0000
@@ -842,7 +842,7 @@ (defun archive-unique-fname (fname dir)
 	      "am"
 	    "arc-mode.")
 	  dir)))
-    (if (or alien (file-exists-p fullname))
+    (if (or alien (not (file-exists-p fullname)))
 	(progn
 	  ;; Maked sure all the leading directories in
 	  ;; archive-local-name exist under archive-tmpdir, so that

But this patch should NOT be installed, because it causes the original
remote archive to be overwritten!  This is just a demonstration of the
logic for nested archives.

I currently don't understand the decision to use archive-remote=t
for nested archives (this is an old decision), but perhaps they
should be distinguished from remote archives with a new variable
or a new value of `archive-remote'?

-- 
Juri Linkov
http://www.jurta.org/emacs/