unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#5475: Archives with filenames with square brackets
@ 2010-01-25 17:48 Juri Linkov
  2010-01-26 21:05 ` Chong Yidong
  0 siblings, 1 reply; 36+ messages in thread
From: Juri Linkov @ 2010-01-25 17:48 UTC (permalink / raw)
  To: 5475

When a zip archive contains a file with square brackets in its name
(e.g. "file[name].txt") then visiting this file displays an error:

  caution: filename not matched:  file[name].txt

For more details please see
http://lists.gnu.org/archive/html/emacs-devel/2010-01/msg01161.html

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







^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-01-25 17:48 bug#5475: Archives with filenames with square brackets Juri Linkov
@ 2010-01-26 21:05 ` Chong Yidong
  2010-01-26 21:47   ` Eli Zaretskii
  0 siblings, 1 reply; 36+ messages in thread
From: Chong Yidong @ 2010-01-26 21:05 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 5475

> When a zip archive contains a file with square brackets in its name
> (e.g. "file[name].txt") then visiting this file displays an error:
>
>   caution: filename not matched:  file[name].txt

I assume this is a specific quirk of unzip that it handles square
brackets specially (characters like * seem to be handled literally).
How about this patch?

*** lisp/arc-mode.el	2010-01-13 08:35:10 +0000
--- lisp/arc-mode.el	2010-01-26 21:03:54 +0000
***************
*** 1782,1787 ****
--- 1782,1791 ----
      (apply 'vector (nreverse files))))
  
  (defun archive-zip-extract (archive name)
+   (when (string-match "[][]" name)
+     (require 'comint)
+     (let ((comint-file-name-quote-list '(?\] ?\[)))
+       (setq name (comint-quote-filename name))))
    (if (equal (car archive-zip-extract) "pkzip")
        (archive-*-extract archive name archive-zip-extract)
      (archive-extract-by-stdout archive name archive-zip-extract)))






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-01-26 21:05 ` Chong Yidong
@ 2010-01-26 21:47   ` Eli Zaretskii
  2010-01-27 16:57     ` Chong Yidong
  0 siblings, 1 reply; 36+ messages in thread
From: Eli Zaretskii @ 2010-01-26 21:47 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 5475

> From: Chong Yidong <cyd@stupidchicken.com>
> Date: Tue, 26 Jan 2010 16:05:20 -0500
> Cc: 5475@debbugs.gnu.org
> 
> > When a zip archive contains a file with square brackets in its name
> > (e.g. "file[name].txt") then visiting this file displays an error:
> >
> >   caution: filename not matched:  file[name].txt
> 
> I assume this is a specific quirk of unzip that it handles square
> brackets specially (characters like * seem to be handled literally).

I think it treats all wildcard characters the same.  A `*' may not
cause a warning because a file whose name is literally foo*, matches
the wildcard foo*.

> How about this patch?
> 
> *** lisp/arc-mode.el	2010-01-13 08:35:10 +0000
> --- lisp/arc-mode.el	2010-01-26 21:03:54 +0000
> ***************
> *** 1782,1787 ****
> --- 1782,1791 ----
>       (apply 'vector (nreverse files))))
>   
>   (defun archive-zip-extract (archive name)
> +   (when (string-match "[][]" name)
> +     (require 'comint)
> +     (let ((comint-file-name-quote-list '(?\] ?\[)))
> +       (setq name (comint-quote-filename name))))
>     (if (equal (car archive-zip-extract) "pkzip")
>         (archive-*-extract archive name archive-zip-extract)
>       (archive-extract-by-stdout archive name archive-zip-extract)))

First, why not use shell-quote-argument, instead of requiring comint?

Second, could someone please see if pkzip also expands wildcards
internally?  If it does not, the quoting will need to be done only in
the non-pkzip branch.  We also need to test this on MS-Windows.

But most importantly, this patch is not clean, IMO: it hardcodes into
archive-zip-extract (the function) some knowledge of what can be the
possible values of archive-zip-extract the defcustom.  What if
tomorrow there will be a 3rd possibility, in addition to pkzip and
unzip?

That is why I thought about some less trivial patch: add to the data
structures that are values of these defcustom's a flag to indicate
whether the file name needs to be quoted or not.






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-01-26 21:47   ` Eli Zaretskii
@ 2010-01-27 16:57     ` Chong Yidong
  2010-01-27 17:35       ` Eli Zaretskii
  0 siblings, 1 reply; 36+ messages in thread
From: Chong Yidong @ 2010-01-27 16:57 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 5475

Eli Zaretskii <eliz@gnu.org> writes:

> First, why not use shell-quote-argument, instead of requiring comint?

I wasn't sure whether it was only [] that was handled specially, or the
usual shell wildcards.  But I see now that it is the latter, as you say.
So shell-quote-argument is indeed the correct thing.

> Second, could someone please see if pkzip also expands wildcards
> internally?  If it does not, the quoting will need to be done only in
> the non-pkzip branch.  We also need to test this on MS-Windows.

I have no way to check this.  Looks like pkzip is Windows-only.

> But most importantly, this patch is not clean, IMO: it hardcodes into
> archive-zip-extract (the function) some knowledge of what can be the
> possible values of archive-zip-extract the defcustom.  What if
> tomorrow there will be a 3rd possibility, in addition to pkzip and
> unzip?
>
> That is why I thought about some less trivial patch: add to the data
> structures that are values of these defcustom's a flag to indicate
> whether the file name needs to be quoted or not.

Well, archive-zip-extract already branches for pkzip/unzip, so whatever
uncleanliness that's associated with is already present...






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-01-27 16:57     ` Chong Yidong
@ 2010-01-27 17:35       ` Eli Zaretskii
  2010-01-28 20:07         ` Chong Yidong
  0 siblings, 1 reply; 36+ messages in thread
From: Eli Zaretskii @ 2010-01-27 17:35 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 5475

> From: Chong Yidong <cyd@stupidchicken.com>
> Cc: juri@jurta.org, 5475@debbugs.gnu.org
> Date: Wed, 27 Jan 2010 11:57:46 -0500
> 
> > But most importantly, this patch is not clean, IMO: it hardcodes into
> > archive-zip-extract (the function) some knowledge of what can be the
> > possible values of archive-zip-extract the defcustom.  What if
> > tomorrow there will be a 3rd possibility, in addition to pkzip and
> > unzip?
> >
> > That is why I thought about some less trivial patch: add to the data
> > structures that are values of these defcustom's a flag to indicate
> > whether the file name needs to be quoted or not.
> 
> Well, archive-zip-extract already branches for pkzip/unzip

Yes, but it does that by a user option, not by some hidden knowledge.
I won't mind introducing a similar option that would tell arc-mode to
quote the file arguments.






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-01-27 17:35       ` Eli Zaretskii
@ 2010-01-28 20:07         ` Chong Yidong
  2010-01-28 21:05           ` Eli Zaretskii
  0 siblings, 1 reply; 36+ messages in thread
From: Chong Yidong @ 2010-01-28 20:07 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 5475

Eli Zaretskii <eliz@gnu.org> writes:

>> Well, archive-zip-extract already branches for pkzip/unzip
>
> Yes, but it does that by a user option, not by some hidden knowledge.
> I won't mind introducing a similar option that would tell arc-mode to
> quote the file arguments.

Right, but once the user tells arc-mode to use unzip, we can
automagically shell-quote the filename; there seems to be no reason not
to.

It doesn't seem like anyone's going to test PKzip anytime soon.  In the
meantime, I have checked in the change to use shell-quote-argument for
unzip.






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-01-28 20:07         ` Chong Yidong
@ 2010-01-28 21:05           ` Eli Zaretskii
  2010-01-28 21:24             ` Lennart Borgman
  2010-01-30 22:59             ` Juri Linkov
  0 siblings, 2 replies; 36+ messages in thread
From: Eli Zaretskii @ 2010-01-28 21:05 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 5475

> From: Chong Yidong <cyd@stupidchicken.com>
> Cc: juri@jurta.org, 5475@debbugs.gnu.org
> Date: Thu, 28 Jan 2010 15:07:09 -0500
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> Well, archive-zip-extract already branches for pkzip/unzip
> >
> > Yes, but it does that by a user option, not by some hidden knowledge.
> > I won't mind introducing a similar option that would tell arc-mode to
> > quote the file arguments.
> 
> Right, but once the user tells arc-mode to use unzip, we can
> automagically shell-quote the filename; there seems to be no reason not
> to.

If you want to glean the need for quoting from the value of
archive-zip-extract (i.e. its car being "unzip"), I'm fine with that
as well.  But as your patch is written, it imposes that on any unzip
command, regardless of whether it was "unzip" or something else, like
p7zip, for example.  That doesn't seem right to me.

> It doesn't seem like anyone's going to test PKzip anytime soon.  In the
> meantime, I have checked in the change to use shell-quote-argument for
> unzip.

My "soon" is once a week.  You only waited 2 days. :-(






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-01-28 21:05           ` Eli Zaretskii
@ 2010-01-28 21:24             ` Lennart Borgman
  2010-01-28 22:00               ` Eli Zaretskii
  2010-01-30 22:59             ` Juri Linkov
  1 sibling, 1 reply; 36+ messages in thread
From: Lennart Borgman @ 2010-01-28 21:24 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 5475, Chong Yidong

On Thu, Jan 28, 2010 at 10:05 PM, Eli Zaretskii <eliz@gnu.org> wrote:
>> From: Chong Yidong <cyd@stupidchicken.com>
>> Cc: juri@jurta.org, 5475@debbugs.gnu.org
>> Date: Thu, 28 Jan 2010 15:07:09 -0500
>>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>
>> >> Well, archive-zip-extract already branches for pkzip/unzip
>> >
>> > Yes, but it does that by a user option, not by some hidden knowledge.
>> > I won't mind introducing a similar option that would tell arc-mode to
>> > quote the file arguments.
>>
>> Right, but once the user tells arc-mode to use unzip, we can
>> automagically shell-quote the filename; there seems to be no reason not
>> to.


Excuse me, I did not follow this thread at all, but I get curious.
What does shell-quote have to do with the arc-mode library? Does it
use a shell at all?


> If you want to glean the need for quoting from the value of
> archive-zip-extract (i.e. its car being "unzip"), I'm fine with that
> as well.  But as your patch is written, it imposes that on any unzip
> command, regardless of whether it was "unzip" or something else, like
> p7zip, for example.  That doesn't seem right to me.


Now that 7-zip is available on GNU/Linux too wouldn't it be very good
to include support for it?


>> It doesn't seem like anyone's going to test PKzip anytime soon.  In the
>> meantime, I have checked in the change to use shell-quote-argument for
>> unzip.
>
> My "soon" is once a week.  You only waited 2 days. :-(
>
>
>
>
>






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-01-28 21:24             ` Lennart Borgman
@ 2010-01-28 22:00               ` Eli Zaretskii
  0 siblings, 0 replies; 36+ messages in thread
From: Eli Zaretskii @ 2010-01-28 22:00 UTC (permalink / raw)
  To: Lennart Borgman; +Cc: 5475, cyd

> From: Lennart Borgman <lennart.borgman@gmail.com>
> Date: Thu, 28 Jan 2010 22:24:50 +0100
> Cc: Chong Yidong <cyd@stupidchicken.com>, 5475@debbugs.gnu.org
> 
> On Thu, Jan 28, 2010 at 10:05 PM, Eli Zaretskii <eliz@gnu.org> wrote:
> >> From: Chong Yidong <cyd@stupidchicken.com>
> >> Cc: juri@jurta.org, 5475@debbugs.gnu.org
> >> Date: Thu, 28 Jan 2010 15:07:09 -0500
> >>
> >> Eli Zaretskii <eliz@gnu.org> writes:
> >>
> >> >> Well, archive-zip-extract already branches for pkzip/unzip
> >> >
> >> > Yes, but it does that by a user option, not by some hidden knowledge.
> >> > I won't mind introducing a similar option that would tell arc-mode to
> >> > quote the file arguments.
> >>
> >> Right, but once the user tells arc-mode to use unzip, we can
> >> automagically shell-quote the filename; there seems to be no reason not
> >> to.
> 
> 
> Excuse me, I did not follow this thread at all, but I get curious.
> What does shell-quote have to do with the arc-mode library? Does it
> use a shell at all?

No, it doesn't use the shell.  But "unzip" expands wildcards
internally, so wildcard characters need to be quoted if a file
includes them literally.

> Now that 7-zip is available on GNU/Linux too wouldn't it be very good
> to include support for it?

Patches are always welcome.






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-01-28 21:05           ` Eli Zaretskii
  2010-01-28 21:24             ` Lennart Borgman
@ 2010-01-30 22:59             ` Juri Linkov
  2010-01-31  4:18               ` Eli Zaretskii
  1 sibling, 1 reply; 36+ messages in thread
From: Juri Linkov @ 2010-01-30 22:59 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 5475, Chong Yidong

>> >> Well, archive-zip-extract already branches for pkzip/unzip
>> >
>> > Yes, but it does that by a user option, not by some hidden knowledge.
>> > I won't mind introducing a similar option that would tell arc-mode to
>> > quote the file arguments.
>>
>> Right, but once the user tells arc-mode to use unzip, we can
>> automagically shell-quote the filename; there seems to be no reason not
>> to.
>
> If you want to glean the need for quoting from the value of
> archive-zip-extract (i.e. its car being "unzip"), I'm fine with that
> as well.  But as your patch is written, it imposes that on any unzip
> command, regardless of whether it was "unzip" or something else, like
> p7zip, for example.  That doesn't seem right to me.

I don't understand how this was supposed to work at all?

The default value of `archive-zip-extract' can be either "unzip" or
"pkunzip" (depending on the presence of the executable in `exec-path'),
but the function `archive-zip-extract' compares with the value "pkzip".
So the pkzip/pkunzip branch is never executed.

It seems the intention of the change revno#45347 (2002-05-19) was
to compare with "pkunzip" instead of "pkzip", but I currently can't
confirm that since I can't find pkunzip for GNU/Linux.

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






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-01-30 22:59             ` Juri Linkov
@ 2010-01-31  4:18               ` Eli Zaretskii
  2010-01-31 10:56                 ` Juri Linkov
  0 siblings, 1 reply; 36+ messages in thread
From: Eli Zaretskii @ 2010-01-31  4:18 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 5475, cyd

> From: Juri Linkov <juri@jurta.org>
> Cc: Chong Yidong <cyd@stupidchicken.com>,  5475@debbugs.gnu.org
> Date: Sun, 31 Jan 2010 00:59:12 +0200
> 
> The default value of `archive-zip-extract' can be either "unzip" or
> "pkunzip" (depending on the presence of the executable in `exec-path'),
> but the function `archive-zip-extract' compares with the value "pkzip".
> So the pkzip/pkunzip branch is never executed.
> 
> It seems the intention of the change revno#45347 (2002-05-19) was
> to compare with "pkunzip" instead of "pkzip"

Right, looks like a bug.

Btw, I looked into 7z, and it doesn't have the same problem as unzip.
So we probably should only quote with unzip.






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-01-31  4:18               ` Eli Zaretskii
@ 2010-01-31 10:56                 ` Juri Linkov
  2010-01-31 18:04                   ` Eli Zaretskii
  0 siblings, 1 reply; 36+ messages in thread
From: Juri Linkov @ 2010-01-31 10:56 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 5475, cyd

>> The default value of `archive-zip-extract' can be either "unzip" or
>> "pkunzip" (depending on the presence of the executable in `exec-path'),
>> but the function `archive-zip-extract' compares with the value "pkzip".
>> So the pkzip/pkunzip branch is never executed.
>>
>> It seems the intention of the change revno#45347 (2002-05-19) was
>> to compare with "pkunzip" instead of "pkzip"
>
> Right, looks like a bug.
>
> Btw, I looked into 7z, and it doesn't have the same problem as unzip.
> So we probably should only quote with unzip.

Does the following patch look right?  At least, it fixes a bug, and
after feature freeze we could add more data structures to defcustom to
indicate whether the file name needs to be quoted.

=== modified file 'lisp/arc-mode.el'
--- lisp/arc-mode.el	2010-01-28 20:06:36 +0000
+++ lisp/arc-mode.el	2010-01-31 10:55:14 +0000
@@ -1782,12 +1782,13 @@ (defun archive-zip-summarize ()
     (apply 'vector (nreverse files))))
 
 (defun archive-zip-extract (archive name)
-  (if (equal (car archive-zip-extract) "pkzip")
-      (archive-*-extract archive name archive-zip-extract)
-    ;; unzip expands wildcards in NAME, so we need to quote it.
-    ;; FIXME: Does pkzip need similar treatment?
-    (archive-extract-by-stdout archive (shell-quote-argument name)
-			       archive-zip-extract)))
+  (if (equal (car archive-zip-extract) "unzip")
+      ;; unzip expands wildcards in NAME, so we need to quote it.
+      ;; FIXME: Does pkzip need similar treatment?
+      ;; (7z doesn't need to quote wildcards)
+      (archive-extract-by-stdout archive (shell-quote-argument name)
+				 archive-zip-extract)
+    (archive-*-extract archive name archive-zip-extract)))
 
 (defun archive-zip-write-file-member (archive descr)
   (archive-*-write-file-member


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






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-01-31 10:56                 ` Juri Linkov
@ 2010-01-31 18:04                   ` Eli Zaretskii
  2010-01-31 21:59                     ` Juri Linkov
  0 siblings, 1 reply; 36+ messages in thread
From: Eli Zaretskii @ 2010-01-31 18:04 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 5475, cyd

> From: Juri Linkov <juri@jurta.org>
> Cc: cyd@stupidchicken.com,  5475@debbugs.gnu.org
> Date: Sun, 31 Jan 2010 12:56:19 +0200
> 
> >> The default value of `archive-zip-extract' can be either "unzip" or
> >> "pkunzip" (depending on the presence of the executable in `exec-path'),
> >> but the function `archive-zip-extract' compares with the value "pkzip".
> >> So the pkzip/pkunzip branch is never executed.
> >>
> >> It seems the intention of the change revno#45347 (2002-05-19) was
> >> to compare with "pkunzip" instead of "pkzip"
> >
> > Right, looks like a bug.
> >
> > Btw, I looked into 7z, and it doesn't have the same problem as unzip.
> > So we probably should only quote with unzip.
> 
> Does the following patch look right?  At least, it fixes a bug, and
> after feature freeze we could add more data structures to defcustom to
> indicate whether the file name needs to be quoted.

Looks okay to me, except that perhaps compare strings
case-insensitively instead of just with `equal'.






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-01-31 18:04                   ` Eli Zaretskii
@ 2010-01-31 21:59                     ` Juri Linkov
  2010-02-01  4:15                       ` Eli Zaretskii
  0 siblings, 1 reply; 36+ messages in thread
From: Juri Linkov @ 2010-01-31 21:59 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 5475, cyd

>> > Right, looks like a bug.
>> >
>> > Btw, I looked into 7z, and it doesn't have the same problem as unzip.
>> > So we probably should only quote with unzip.
>> 
>> Does the following patch look right?  At least, it fixes a bug, and
>> after feature freeze we could add more data structures to defcustom to
>> indicate whether the file name needs to be quoted.
>
> Looks okay to me, except that perhaps compare strings
> case-insensitively instead of just with `equal'.

There are more problems.

When I try to set `archive-zip-extract' to ("7z" "x" "-so") it puts some
unnecessary information (header lines, progress indication, etc.)  to
the output buffer, because it outputs this to stderr.  With the following
change, stderr goes to /dev/null, but there is no chance to see possible errors
(this patch is for demonstration only, not to be installed):

=== modified file 'lisp/arc-mode.el'
--- lisp/arc-mode.el	2010-01-28 20:06:36 +0000
+++ lisp/arc-mode.el	2010-01-31 21:48:51 +0000
@@ -1080,7 +1080,7 @@ (defun archive-extract-by-stdout (archiv
   (apply 'call-process
 	 (car command)
 	 nil
-	 t
+	 '(t nil)
 	 nil
 	 (append (cdr command) (list archive name))))
 
To process 7z in the correct branch, the following patch is needed,
where any values other than pkunzip/pkzip are processed by
archive-extract-by-stdout instead of archive-*-extract,
where "unzip" needs to quote its filenames.

So I propose to install the following patch, and add more
changes for 7z processing after feature freeze.

=== modified file 'lisp/arc-mode.el'
--- lisp/arc-mode.el	2010-01-28 20:06:36 +0000
+++ lisp/arc-mode.el	2010-01-31 21:48:51 +0000
@@ -1782,12 +1782,17 @@ (defun archive-zip-summarize ()
     (apply 'vector (nreverse files))))
 
 (defun archive-zip-extract (archive name)
-  (if (equal (car archive-zip-extract) "pkzip")
+  (if (member-ignore-case (car archive-zip-extract) '("pkunzip" "pkzip"))
       (archive-*-extract archive name archive-zip-extract)
     ;; unzip expands wildcards in NAME, so we need to quote it.
-    ;; FIXME: Does pkzip need similar treatment?
-    (archive-extract-by-stdout archive (shell-quote-argument name)
-			       archive-zip-extract)))
+    ;; FIXME: Does pkunzip need similar treatment?
+    ;; (7z doesn't need to quote wildcards)
+    (archive-extract-by-stdout
+     archive
+     (if (equal (car archive-zip-extract) "unzip")
+	 (shell-quote-argument name)
+       name)
+     archive-zip-extract)))
 
 (defun archive-zip-write-file-member (archive descr)
   (archive-*-write-file-member

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






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-01-31 21:59                     ` Juri Linkov
@ 2010-02-01  4:15                       ` Eli Zaretskii
  2010-02-01 10:34                         ` Juri Linkov
  0 siblings, 1 reply; 36+ messages in thread
From: Eli Zaretskii @ 2010-02-01  4:15 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 5475, cyd

> From: Juri Linkov <juri@jurta.org>
> Cc: cyd@stupidchicken.com,  5475@debbugs.gnu.org
> Date: Sun, 31 Jan 2010 23:59:40 +0200
> 
> When I try to set `archive-zip-extract' to ("7z" "x" "-so") it puts some
> unnecessary information (header lines, progress indication, etc.)  to
> the output buffer, because it outputs this to stderr.  With the following
> change, stderr goes to /dev/null, but there is no chance to see possible errors
> (this patch is for demonstration only, not to be installed):
> 
> === modified file 'lisp/arc-mode.el'
> --- lisp/arc-mode.el	2010-01-28 20:06:36 +0000
> +++ lisp/arc-mode.el	2010-01-31 21:48:51 +0000
> @@ -1080,7 +1080,7 @@ (defun archive-extract-by-stdout (archiv
>    (apply 'call-process
>  	 (car command)
>  	 nil
> -	 t
> +	 '(t nil)
>  	 nil
>  	 (append (cdr command) (list archive name))))
>  
> To process 7z in the correct branch, the following patch is needed,
> where any values other than pkunzip/pkzip are processed by
> archive-extract-by-stdout instead of archive-*-extract,
> where "unzip" needs to quote its filenames.
> 
> So I propose to install the following patch, and add more
> changes for 7z processing after feature freeze.

Thanks.  I'm not sure we need to support 7z, I just tried it to see if
other unzip programs expand wildcards by default like "unzip" does.






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-01  4:15                       ` Eli Zaretskii
@ 2010-02-01 10:34                         ` Juri Linkov
  2010-02-01 11:48                           ` Lennart Borgman
                                             ` (2 more replies)
  0 siblings, 3 replies; 36+ messages in thread
From: Juri Linkov @ 2010-02-01 10:34 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 5475, cyd

> Thanks.  I'm not sure we need to support 7z, I just tried it to see if
> other unzip programs expand wildcards by default like "unzip" does.

Do you mean we don't need to support 7z in 23.2 or at all?
Are there some problems with 7z that makes undesirable to support it
(maybe, it is not free software, or has an unsuitable license?)

Even though it's quite rarely used format, sometimes when I try to visit
a 7z archive in Emacs, I see only binary data.  At least, nowadays the
need to visit a 7z archive arises more often than for obsolete formats
like arc/lzh/zoo still supported by arc-mode.el.

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






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-01 10:34                         ` Juri Linkov
@ 2010-02-01 11:48                           ` Lennart Borgman
  2010-02-01 15:43                           ` Stefan Monnier
  2010-02-01 19:49                           ` Eli Zaretskii
  2 siblings, 0 replies; 36+ messages in thread
From: Lennart Borgman @ 2010-02-01 11:48 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 5475, cyd

On Mon, Feb 1, 2010 at 11:34 AM, Juri Linkov <juri@jurta.org> wrote:
>
> Even though it's quite rarely used format, sometimes when I try to visit
> a 7z archive in Emacs, I see only binary data.  At least, nowadays the
> need to visit a 7z archive arises more often than for obsolete formats
> like arc/lzh/zoo still supported by arc-mode.el.

7zip also supports most other compression formats, including password
protection.

When I first started using 7zip it was the only free software that did
this. I am not sure whether there is something else now.






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-01 10:34                         ` Juri Linkov
  2010-02-01 11:48                           ` Lennart Borgman
@ 2010-02-01 15:43                           ` Stefan Monnier
  2010-02-01 21:55                             ` Juri Linkov
  2010-02-01 19:49                           ` Eli Zaretskii
  2 siblings, 1 reply; 36+ messages in thread
From: Stefan Monnier @ 2010-02-01 15:43 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 5475, cyd

> Do you mean we don't need to support 7z in 23.2 or at all?
> Are there some problems with 7z that makes undesirable to support it
> (maybe, it is not free software, or has an unsuitable license?)

AFAIK 7zip is Free Software, but adding 7z support would be a new
feature, so we would probably be better off insalling it into the
`pending' branch.


        Stefan






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-01 10:34                         ` Juri Linkov
  2010-02-01 11:48                           ` Lennart Borgman
  2010-02-01 15:43                           ` Stefan Monnier
@ 2010-02-01 19:49                           ` Eli Zaretskii
  2010-02-01 21:21                             ` Drew Adams
                                               ` (2 more replies)
  2 siblings, 3 replies; 36+ messages in thread
From: Eli Zaretskii @ 2010-02-01 19:49 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 5475, cyd

> From: Juri Linkov <juri@jurta.org>
> Cc: cyd@stupidchicken.com,  5475@debbugs.gnu.org
> Date: Mon, 01 Feb 2010 12:34:47 +0200
> 
> > Thanks.  I'm not sure we need to support 7z, I just tried it to see if
> > other unzip programs expand wildcards by default like "unzip" does.
> 
> Do you mean we don't need to support 7z in 23.2 or at all?

At all, for .zip files.

> Are there some problems with 7z that makes undesirable to support it
> (maybe, it is not free software, or has an unsuitable license?)

Its support for zip archives is sporadic at best.  On one GNU/Linux
system I tried it, it insisted that a .zip file format was
unsupported, although its Windows version that was older unzipped it
with no trouble at all.  Go figure.  And the fact that it doesn't have
a switch to make it silent, and you need to throw away its stderr
(which means you cannot display error messages) is yet another
nuisance.

> Even though it's quite rarely used format, sometimes when I try to visit
> a 7z archive in Emacs, I see only binary data.  At least, nowadays the
> need to visit a 7z archive arises more often than for obsolete formats
> like arc/lzh/zoo still supported by arc-mode.el.

I have nothing against adding support for 7z archives, although that
would be a new feature.






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-01 19:49                           ` Eli Zaretskii
@ 2010-02-01 21:21                             ` Drew Adams
  2010-02-01 21:52                               ` Eli Zaretskii
  2010-02-01 22:39                             ` Juri Linkov
  2010-02-01 22:41                             ` Lennart Borgman
  2 siblings, 1 reply; 36+ messages in thread
From: Drew Adams @ 2010-02-01 21:21 UTC (permalink / raw)
  To: 'Eli Zaretskii', 'Juri Linkov'; +Cc: 5475, cyd

> > Do you mean we don't need to support 7z in 23.2 or at all?
> 
> At all, for .zip files.
...
> > Even though it's quite rarely used format...  At least, 
> > nowadays the need to visit a 7z archive arises more often
> > than for obsolete formats...still supported by arc-mode.el.
> 
> I have nothing against adding support for 7z archives, although that
> would be a new feature.

I have no opinion about this or more generally about this bug.

I just want to mention that my company, which is a large software company, asked
_everyone_ a few months back to install 7zip and get rid of Winzip from our work
computers. I believe the reason was to save money somehow.

Just thought I'd mention it, in case it's relevant. If this experience is at all
typical or becomes so, then more people could be using 7zip. (I have no idea how
widespread its use is now or might become.)








^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-01 21:21                             ` Drew Adams
@ 2010-02-01 21:52                               ` Eli Zaretskii
  2010-02-01 22:04                                 ` Drew Adams
  0 siblings, 1 reply; 36+ messages in thread
From: Eli Zaretskii @ 2010-02-01 21:52 UTC (permalink / raw)
  To: Drew Adams; +Cc: 5475, cyd

> From: "Drew Adams" <drew.adams@oracle.com>
> Cc: <5475@debbugs.gnu.org>, <cyd@stupidchicken.com>
> Date: Mon, 1 Feb 2010 13:21:42 -0800
> 
> I just want to mention that my company, which is a large software company, asked
> _everyone_ a few months back to install 7zip and get rid of Winzip from our work
> computers. I believe the reason was to save money somehow.

We support "unzip", not WinZip.






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-01 15:43                           ` Stefan Monnier
@ 2010-02-01 21:55                             ` Juri Linkov
  2010-02-02  0:11                               ` Lennart Borgman
                                                 ` (2 more replies)
  0 siblings, 3 replies; 36+ messages in thread
From: Juri Linkov @ 2010-02-01 21:55 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: 5475

> AFAIK 7zip is Free Software, but adding 7z support would be a new
> feature, so we would probably be better off insalling it into the
> `pending' branch.

Below is minimal support for the 7z format for the `pending' branch.

Fortunately, 7z provides so-called "technical" mode for the list
command (-slt) that outputs file information in a simple fixed format,
so we could rely on it.  In `archive-7z-extract' stderr is thrown away
because 7z doesn't have a switch to make it silent.

=== modified file 'lisp/arc-mode.el'
--- lisp/arc-mode.el	2010-01-28 20:06:36 +0000
+++ lisp/arc-mode.el	2010-02-01 21:48:09 +0000
@@ -52,17 +52,17 @@
 ;; ARCHIVE TYPES: Currently only the archives below are handled, but the
 ;; structure for handling just about anything is in place.
 ;;
-;;			Arc	Lzh	Zip	Zoo	 Rar
-;;			----------------------------------------
-;; View listing		Intern	Intern	Intern	Intern   Y
-;; Extract member	Y	Y	Y	Y        Y
-;; Save changed member	Y	Y	Y	Y        N
-;; Add new member	N	N	N	N        N
-;; Delete member	Y	Y	Y	Y        N
-;; Rename member	Y	Y	N	N        N
-;; Chmod		-	Y	Y	-        N
-;; Chown		-	Y	-	-        N
-;; Chgrp		-	Y	-	-        N
+;;			Arc	Lzh	Zip	Zoo	Rar	7z
+;;			--------------------------------------------
+;; View listing		Intern	Intern	Intern	Intern	Y	Y
+;; Extract member	Y	Y	Y	Y	Y	Y
+;; Save changed member	Y	Y	Y	Y	N	N
+;; Add new member	N	N	N	N	N	N
+;; Delete member	Y	Y	Y	Y	N	N
+;; Rename member	Y	Y	N	N	N	N
+;; Chmod		-	Y	Y	-	N	N
+;; Chown		-	Y	-	-	N	N
+;; Chgrp		-	Y	-	-	N	N
 ;;
 ;; Special thanks to Bill Brodie <wbrodie@panix.com> for very useful tips
 ;; on the first released version of this package.
@@ -315,6 +315,20 @@ (defcustom archive-zoo-write-file-member
 			:inline t
 			(string :format "%v")))
   :group 'archive-zoo)
+;; ------------------------------
+;; 7z archive configuration
+
+(defcustom archive-7z-extract
+  '("7z" "x" "-so")
+  "Program and its options to run in order to extract a 7z file member.
+Extraction should happen to standard output.  Archive and member name will
+be added."
+  :type '(list (string :tag "Program")
+		(repeat :tag "Options"
+			:inline t
+			(string :format "%v")))
+  :group 'archive-7z)
+
 ;; -------------------------------------------------------------------------
 ;;; Section: Variables
 
@@ -732,6 +746,7 @@ (defun archive-find-type ()
           ((and (looking-at "MZ")
                 (re-search-forward "Rar!" (+ (point) 100000) t))
            'rar-exe)
+	  ((looking-at "7z\274\257\047\034") '7z)
 	  (t (error "Buffer format not recognized")))))
 ;; -------------------------------------------------------------------------
 
@@ -1084,6 +1099,14 @@ (defun archive-extract-by-stdout (archiv
 	 nil
 	 (append (cdr command) (list archive name))))
 
+(defun archive-extract-by-stdout-without-stderr (archive name command)
+  (apply 'call-process
+	 (car command)
+	 nil
+	 '(t nil)
+	 nil
+	 (append (cdr command) (list archive name))))
+
 (defun archive-extract-other-window ()
   "In archive mode, find this member in another window."
   (interactive)
@@ -1995,7 +2023,57 @@ (defun archive-rar-exe-extract (archive 
       (if tmpbuf (kill-buffer tmpbuf))
       (delete-file tmpfile))))
 
+;; -------------------------------------------------------------------------
+;;; Section: 7z Archives
+
+(defun archive-7z-summarize ()
+  (let ((maxname 10)
+	(maxsize 5)
+	(file buffer-file-name)
+	(files ()))
+    (with-temp-buffer
+      (call-process "7z" nil t nil "l" "-slt" file)
+      (goto-char (point-min))
+      (re-search-forward "^-+\n")
+      (while (re-search-forward "^Path = \\(.*\\)\n" nil t)
+        (goto-char (match-end 0))
+        (let ((name (match-string 1))
+              (size (save-excursion
+		      (and (re-search-forward "^Size = \\(.*\\)\n")
+			   (match-string 1))))
+	      (time (save-excursion
+		      (and (re-search-forward "^Modified = \\(.*\\)\n")
+			   (match-string 1)))))
+          (if (> (length name) maxname) (setq maxname (length name)))
+          (if (> (length size) maxsize) (setq maxsize (length size)))
+          (push (vector name name nil nil time nil nil size)
+                files))))
+    (setq files (nreverse files))
+    (goto-char (point-min))
+    (let* ((format (format " %%%ds %%s %%s" maxsize))
+           (sep (format format (make-string maxsize ?-) "-------------------" ""))
+           (column (length sep)))
+      (insert (format format "Size " "Date       Time    " " Filename") "\n")
+      (insert sep (make-string maxname ?-) "\n")
+      (archive-summarize-files (mapcar (lambda (desc)
+                                         (let ((text
+                                                (format format
+							(aref desc 7)
+							(aref desc 4)
+							(aref desc 1))))
+                                           (vector text
+                                                   column
+                                                   (length text))))
+                                       files))
+      (insert sep (make-string maxname ?-) "\n")
+      (apply 'vector files))))
+
+(defun archive-7z-extract (archive name)
+  ;; Throw away stderr because 7z doesn't have a switch to make it silent.
+  (archive-extract-by-stdout-without-stderr
+   archive name archive-7z-extract))
 
+;; -------------------------------------------------------------------------
 ;;; Section `ar' archives.
 
 ;; TODO: we currently only handle the basic format of ar archives,

=== modified file 'lisp/files.el'
--- lisp/files.el	2010-01-27 03:36:36 +0000
+++ lisp/files.el	2010-02-01 21:45:39 +0000
@@ -2252,8 +2252,8 @@ (defvar auto-mode-alist
      ;; The list of archive file extensions should be in sync with
      ;; `auto-coding-alist' with `no-conversion' coding system.
      ("\\.\\(\
-arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|rar\\|\
-ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\)\\'" . archive-mode)
+arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|rar\\|7z\\|\
+ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|7Z\\)\\'" . archive-mode)
      ("\\.\\(sx[dmicw]\\|od[fgpst]\\|oxt\\)\\'" . archive-mode) ;OpenOffice.org
      ("\\.\\(deb\\|[oi]pk\\)\\'" . archive-mode) ; Debian/Opkg packages.
      ;; Mailer puts message to be edited in

=== modified file 'lisp/international/mule.el'
--- lisp/international/mule.el	2010-01-13 08:35:10 +0000
+++ lisp/international/mule.el	2010-02-01 21:43:42 +0000
@@ -1626,8 +1626,8 @@ (defcustom auto-coding-alist
   ;; .exe and .EXE are added to support archive-mode looking at DOS
   ;; self-extracting exe archives.
   (purecopy '(("\\.\\(\
-arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|rar\\|\
-ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\)\\'"
+arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|rar\\|7z\\|\
+ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|7z\\)\\'"
      . no-conversion-multibyte)
     ("\\.\\(exe\\|EXE\\)\\'" . no-conversion)
     ("\\.\\(sx[dmicw]\\|odt\\|tar\\|tgz\\)\\'" . no-conversion)

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






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-01 21:52                               ` Eli Zaretskii
@ 2010-02-01 22:04                                 ` Drew Adams
  0 siblings, 0 replies; 36+ messages in thread
From: Drew Adams @ 2010-02-01 22:04 UTC (permalink / raw)
  To: 'Eli Zaretskii'; +Cc: 5475, cyd

> > I just want to mention that my company, which is a large 
> > software company, asked _everyone_ a few months back to 
> > install 7zip and get rid of Winzip from our work
> > computers. I believe the reason was to save money somehow.
> 
> We support "unzip", not WinZip.

My point was not about WinZip; it was about 7zip: it might be that more people
will use 7zip than has been true in the past.

That's all. HTH.







^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-01 19:49                           ` Eli Zaretskii
  2010-02-01 21:21                             ` Drew Adams
@ 2010-02-01 22:39                             ` Juri Linkov
  2010-02-01 22:41                             ` Lennart Borgman
  2 siblings, 0 replies; 36+ messages in thread
From: Juri Linkov @ 2010-02-01 22:39 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 5475, cyd

>> Do you mean we don't need to support 7z in 23.2 or at all?
>
> At all, for .zip files.

Ah, I see.  So I installed only a fix for pkzip/pkunzip
without mentioning 7z.

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






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-01 19:49                           ` Eli Zaretskii
  2010-02-01 21:21                             ` Drew Adams
  2010-02-01 22:39                             ` Juri Linkov
@ 2010-02-01 22:41                             ` Lennart Borgman
  2010-02-02  0:10                               ` Lennart Borgman
  2 siblings, 1 reply; 36+ messages in thread
From: Lennart Borgman @ 2010-02-01 22:41 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 5475, cyd

On Mon, Feb 1, 2010 at 8:49 PM, Eli Zaretskii <eliz@gnu.org> wrote:
>
>> Are there some problems with 7z that makes undesirable to support it
>> (maybe, it is not free software, or has an unsuitable license?)
>
> Its support for zip archives is sporadic at best.  On one GNU/Linux
> system I tried it, it insisted that a .zip file format was
> unsupported, although its Windows version that was older unzipped it
> with no trouble at all.


My impression of 7-zip and the author Igor Pavlov is very positive.
Some years ago I followed the discussion in the support forum a bit. I
found good reasoning from the author. And things got fixed.

I would be surprised if the GNU/Linux support will not be very good too.


> Go figure.  And the fact that it doesn't have
> a switch to make it silent, and you need to throw away its stderr
> (which means you cannot display error messages) is yet another
> nuisance.


I think this is a kind of thing you can ask for on the support lists.






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-01 22:41                             ` Lennart Borgman
@ 2010-02-02  0:10                               ` Lennart Borgman
  2010-02-02  0:42                                 ` Juri Linkov
  0 siblings, 1 reply; 36+ messages in thread
From: Lennart Borgman @ 2010-02-02  0:10 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 5475, cyd

On Mon, Feb 1, 2010 at 11:41 PM, Lennart Borgman
<lennart.borgman@gmail.com> wrote:
>
>> And the fact that it doesn't have
>> a switch to make it silent, and you need to throw away its stderr
>> (which means you cannot display error messages) is yet another
>> nuisance.
>
>
> I think this is a kind of thing you can ask for on the support lists.


There is already a feature request for this in the 7-zip tracker at sourceforge.

Eli, if you could specify exactly what would be useful for Emacs then
I could add it to the feature request.






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-01 21:55                             ` Juri Linkov
@ 2010-02-02  0:11                               ` Lennart Borgman
  2010-02-02  0:46                                 ` Juri Linkov
  2010-02-02  4:03                               ` Eli Zaretskii
  2010-04-18 23:14                               ` Juri Linkov
  2 siblings, 1 reply; 36+ messages in thread
From: Lennart Borgman @ 2010-02-02  0:11 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 5475

On Mon, Feb 1, 2010 at 10:55 PM, Juri Linkov <juri@jurta.org> wrote:
>> AFAIK 7zip is Free Software, but adding 7z support would be a new
>> feature, so we would probably be better off insalling it into the
>> `pending' branch.
>
> Below is minimal support for the 7z format for the `pending' branch.


I think it would be very useful (at least on w32) to allow 7-zip to
handle all compressed libraries.






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-02  0:10                               ` Lennart Borgman
@ 2010-02-02  0:42                                 ` Juri Linkov
  2010-02-02  1:30                                   ` Lennart Borgman
  0 siblings, 1 reply; 36+ messages in thread
From: Juri Linkov @ 2010-02-02  0:42 UTC (permalink / raw)
  To: Lennart Borgman; +Cc: 5475, cyd

>>> And the fact that it doesn't have a switch to make it silent, and
>>> you need to throw away its stderr (which means you cannot display
>>> error messages) is yet another nuisance.
>>
>> I think this is a kind of thing you can ask for on the support lists.
>
> There is already a feature request for this in the 7-zip tracker at sourceforge.
>
> Eli, if you could specify exactly what would be useful for Emacs then
> I could add it to the feature request.

I can answer this question.  All major file compressors except 7-zip
have such an option.

man bzip2:

   -q --quiet

          Suppress non-essential warning messages.  Messages pertaining
          to I/O errors and other critical events will not be suppressed.

man gzip:

   -q --quiet
          Suppress all warnings.

man unzip:

   -q perform operations quietly (-qq = even quieter).  Ordinarily unzip
      prints the names of the files it’s extracting or testing, the
      extraction methods, any file or zipfile comments that may be
      stored in the archive, and possibly a summary when finished with
      each archive.  The -q[q] options suppress the printing of some or
      all of these messages.

man unrar:

   -inul  Disable all messages.

(the latter switch name is quite ugly)

There are many ignored requests to add such option to 7-zip:

http://sourceforge.net/projects/sevenzip/forums/forum/45797/topic/3376726?message=7580176
http://sourceforge.net/projects/p7zip/forums/forum/383044/topic/1270756
http://bugs.gentoo.org/show_bug.cgi?id=135134
http://osdir.com/ml/debian-bugs-dist/2009-05/msg03287.html
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6643529

If you want add a new request, please ask for -q --quiet at sourceforge.

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






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-02  0:11                               ` Lennart Borgman
@ 2010-02-02  0:46                                 ` Juri Linkov
  0 siblings, 0 replies; 36+ messages in thread
From: Juri Linkov @ 2010-02-02  0:46 UTC (permalink / raw)
  To: Lennart Borgman; +Cc: 5475

> I think it would be very useful (at least on w32) to allow 7-zip to
> handle all compressed libraries.

To handle all compressed libraries, we need a new option -q --quiet
because we don't need unnecessary messages in stderr, but we can't ignore
stderr because it may contain error messages.

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






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-02  0:42                                 ` Juri Linkov
@ 2010-02-02  1:30                                   ` Lennart Borgman
  2010-02-02 10:03                                     ` Juri Linkov
  0 siblings, 1 reply; 36+ messages in thread
From: Lennart Borgman @ 2010-02-02  1:30 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 5475, cyd

On Tue, Feb 2, 2010 at 1:42 AM, Juri Linkov <juri@jurta.org> wrote:
>>>> And the fact that it doesn't have a switch to make it silent, and
>>>> you need to throw away its stderr (which means you cannot display
>>>> error messages) is yet another nuisance.
>>>
>>> I think this is a kind of thing you can ask for on the support lists.
>>
>> There is already a feature request for this in the 7-zip tracker at sourceforge.
>>
>> Eli, if you could specify exactly what would be useful for Emacs then
>> I could add it to the feature request.
>
> I can answer this question.  All major file compressors except 7-zip
> have such an option.
>
> man bzip2:
>
>   -q --quiet
>
>          Suppress non-essential warning messages.  Messages pertaining
>          to I/O errors and other critical events will not be suppressed.
>
> man gzip:
>
>   -q --quiet
>          Suppress all warnings.
>
> If you want add a new request, please ask for -q --quiet at sourceforge.


Which version, the bzip2 or the gzip?






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-01 21:55                             ` Juri Linkov
  2010-02-02  0:11                               ` Lennart Borgman
@ 2010-02-02  4:03                               ` Eli Zaretskii
  2010-04-18 23:14                               ` Juri Linkov
  2 siblings, 0 replies; 36+ messages in thread
From: Eli Zaretskii @ 2010-02-02  4:03 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 5475

> From: Juri Linkov <juri@jurta.org>
> Date: Mon, 01 Feb 2010 23:55:35 +0200
> Cc: 5475@debbugs.gnu.org
> 
> > AFAIK 7zip is Free Software, but adding 7z support would be a new
> > feature, so we would probably be better off insalling it into the
> > `pending' branch.
> 
> Below is minimal support for the 7z format for the `pending' branch.

Thanks.  Please don't forget a NEWS entry.






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-02  1:30                                   ` Lennart Borgman
@ 2010-02-02 10:03                                     ` Juri Linkov
  2010-02-03  0:17                                       ` Lennart Borgman
  0 siblings, 1 reply; 36+ messages in thread
From: Juri Linkov @ 2010-02-02 10:03 UTC (permalink / raw)
  To: Lennart Borgman; +Cc: 5475

>> man bzip2:
>>
>>   -q --quiet
>>
>>          Suppress non-essential warning messages.  Messages pertaining
>>          to I/O errors and other critical events will not be suppressed.
>>
>> man gzip:
>>
>>   -q --quiet
>>          Suppress all warnings.
>>
>> If you want add a new request, please ask for -q --quiet at sourceforge.
>
> Which version, the bzip2 or the gzip?

Whatever.  The main point is that with -q --quiet it should output only
critical error messages.

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






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-02 10:03                                     ` Juri Linkov
@ 2010-02-03  0:17                                       ` Lennart Borgman
  2010-02-03  0:35                                         ` Juri Linkov
  0 siblings, 1 reply; 36+ messages in thread
From: Lennart Borgman @ 2010-02-03  0:17 UTC (permalink / raw)
  To: Juri Linkov; +Cc: 5475

On Tue, Feb 2, 2010 at 11:03 AM, Juri Linkov <juri@jurta.org> wrote:
>
> Whatever.  The main point is that with -q --quiet it should output only
> critical error messages.


I have added our comments to this feature request for 7-zip:

https://sourceforge.net/tracker/index.php?func=detail&aid=2813266&group_id=14481&atid=364481






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-03  0:17                                       ` Lennart Borgman
@ 2010-02-03  0:35                                         ` Juri Linkov
  2010-02-03 23:54                                           ` Juri Linkov
  0 siblings, 1 reply; 36+ messages in thread
From: Juri Linkov @ 2010-02-03  0:35 UTC (permalink / raw)
  To: Lennart Borgman; +Cc: 5475

>> Whatever.  The main point is that with -q --quiet it should output only
>> critical error messages.
>
> I have added our comments to this feature request for 7-zip:
>
> https://sourceforge.net/tracker/index.php?func=detail&aid=2813266&group_id=14481&atid=364481

Thanks.

Until this option is implemented we should ignore stderr.

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






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-03  0:35                                         ` Juri Linkov
@ 2010-02-03 23:54                                           ` Juri Linkov
  0 siblings, 0 replies; 36+ messages in thread
From: Juri Linkov @ 2010-02-03 23:54 UTC (permalink / raw)
  To: Lennart Borgman; +Cc: 5475

> Until this option is implemented we should ignore stderr.

Hmm, discarding stderr is too bad.  Better would be to redirect stderr
to a temporary file and display it when it contains error messages
(a pending patch):

=== modified file 'lisp/arc-mode.el'
--- lisp/arc-mode.el	2010-02-01 22:35:04 +0000
+++ lisp/arc-mode.el	2010-02-03 23:54:00 +0000
@@ -1076,11 +1099,11 @@ (defun archive-*-extract (archive name c
     (archive-delete-local tmpfile)
     success))
 
-(defun archive-extract-by-stdout (archive name command)
+(defun archive-extract-by-stdout (archive name command &optional stderr-file)
   (apply 'call-process
 	 (car command)
 	 nil
-	 t
+	 (if stderr-file (list t stderr-file) t)
 	 nil
 	 (append (cdr command) (list archive name))))
 
@@ -1999,7 +2022,65 @@ (defun archive-rar-exe-extract (archive 
       (if tmpbuf (kill-buffer tmpbuf))
       (delete-file tmpfile))))
 
+(defun archive-7z-extract (archive name)
+  (let ((tmpfile (make-temp-file "7z-stderr")))
+    ;; 7z doesn't provide a `quiet' option to suppress non-essential
+    ;; stderr messages.  So redirect stderr to a temp file and display it
+    ;; in the echo area when it contains error messages.
+    (prog1 (archive-extract-by-stdout
+	    archive name archive-7z-extract tmpfile)
+      (with-temp-buffer
+	(insert-file-contents tmpfile)
+	(unless (search-forward "Everything is Ok" nil t)
+	  (message (buffer-string)))
+	(delete-file tmpfile)))))

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






^ permalink raw reply	[flat|nested] 36+ messages in thread

* bug#5475: Archives with filenames with square brackets
  2010-02-01 21:55                             ` Juri Linkov
  2010-02-02  0:11                               ` Lennart Borgman
  2010-02-02  4:03                               ` Eli Zaretskii
@ 2010-04-18 23:14                               ` Juri Linkov
  2 siblings, 0 replies; 36+ messages in thread
From: Juri Linkov @ 2010-04-18 23:14 UTC (permalink / raw)
  To: 5475-done

> Below is minimal support for the 7z format

Patch installed to the trunk, bug closed.

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






^ permalink raw reply	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2010-04-18 23:14 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-25 17:48 bug#5475: Archives with filenames with square brackets Juri Linkov
2010-01-26 21:05 ` Chong Yidong
2010-01-26 21:47   ` Eli Zaretskii
2010-01-27 16:57     ` Chong Yidong
2010-01-27 17:35       ` Eli Zaretskii
2010-01-28 20:07         ` Chong Yidong
2010-01-28 21:05           ` Eli Zaretskii
2010-01-28 21:24             ` Lennart Borgman
2010-01-28 22:00               ` Eli Zaretskii
2010-01-30 22:59             ` Juri Linkov
2010-01-31  4:18               ` Eli Zaretskii
2010-01-31 10:56                 ` Juri Linkov
2010-01-31 18:04                   ` Eli Zaretskii
2010-01-31 21:59                     ` Juri Linkov
2010-02-01  4:15                       ` Eli Zaretskii
2010-02-01 10:34                         ` Juri Linkov
2010-02-01 11:48                           ` Lennart Borgman
2010-02-01 15:43                           ` Stefan Monnier
2010-02-01 21:55                             ` Juri Linkov
2010-02-02  0:11                               ` Lennart Borgman
2010-02-02  0:46                                 ` Juri Linkov
2010-02-02  4:03                               ` Eli Zaretskii
2010-04-18 23:14                               ` Juri Linkov
2010-02-01 19:49                           ` Eli Zaretskii
2010-02-01 21:21                             ` Drew Adams
2010-02-01 21:52                               ` Eli Zaretskii
2010-02-01 22:04                                 ` Drew Adams
2010-02-01 22:39                             ` Juri Linkov
2010-02-01 22:41                             ` Lennart Borgman
2010-02-02  0:10                               ` Lennart Borgman
2010-02-02  0:42                                 ` Juri Linkov
2010-02-02  1:30                                   ` Lennart Borgman
2010-02-02 10:03                                     ` Juri Linkov
2010-02-03  0:17                                       ` Lennart Borgman
2010-02-03  0:35                                         ` Juri Linkov
2010-02-03 23:54                                           ` Juri Linkov

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).