unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#29094: dired-do-compress creates empty archives
@ 2017-10-31 23:33 Max
  2017-12-05  1:46 ` Noam Postavsky
  0 siblings, 1 reply; 6+ messages in thread
From: Max @ 2017-10-31 23:33 UTC (permalink / raw)
  To: 29094

Hi,

When Z is pressed on a directory, dired (according to
dired-compress-file-suffixes variable) runs the following command:

tar -c directory | gzip -c9 > directory.tar.gz

On my system running this command results in an error:

tar: Failed open to write on /dev/rst0: Permission denied

as tar(1) defaults -f to /dev/rst0.

Argument '-f-' should be used to write to stdout.

Also '-v' is probably not needed here, since the output is not used
anywhere.

Here is a patch to correct this behaviour:

diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index 94938cf679..14f4be07be 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -974,8 +974,8 @@ command with a prefix argument (the value does not matter)."
     ;; "tar -zxf" isn't used because it's not available on the
     ;; Solaris10 version of tar. Solaris10 becomes obsolete in 2021.
     ;; Same thing on AIX 7.1.
-    ("\\.tar\\.gz\\'" "" "gzip -dc %i | tar -xv")
-    ("\\.tgz\\'" "" "gzip -dc %i | tar -xv")
+    ("\\.tar\\.gz\\'" "" "gzip -dc %i | tar -xf -")
+    ("\\.tgz\\'" "" "gzip -dc %i | tar -xf -")
     ("\\.gz\\'" "" "gunzip")
     ("\\.Z\\'" "" "uncompress")
     ;; For .z, try gunzip.  It might be an old gzip file,
@@ -990,7 +990,7 @@ command with a prefix argument (the value does not matter)."
     ;; This item controls naming for compression.
     ("\\.tar\\'" ".tgz" nil)
     ;; This item controls the compression of directories
-    (":" ".tar.gz" "tar -c %i | gzip -c9 > %o"))
+    (":" ".tar.gz" "tar -cf - %i | gzip -c9 > %o"))
   "Control changes in file name suffixes for compression and uncompression.
 Each element specifies one transformation rule, and has the form:
   (REGEXP NEW-SUFFIX PROGRAM)
@@ -1007,9 +1007,9 @@ Otherwise, the rule is a compression rule, and compression is done with gzip.
 ARGS are command switches passed to PROGRAM.")
 
 (defvar dired-compress-files-alist
-  '(("\\.tar\\.gz\\'" . "tar -c %i | gzip -c9 > %o")
-    ("\\.tar\\.bz2\\'" . "tar -c %i | bzip2 -c9 > %o")
-    ("\\.tar\\.xz\\'" . "tar -c %i | xz -c9 > %o")
+  '(("\\.tar\\.gz\\'" . "tar -cf - %i | gzip -c9 > %o")
+    ("\\.tar\\.bz2\\'" . "tar -cf - %i | bzip2 -c9 > %o")
+    ("\\.tar\\.xz\\'" . "tar -cf - %i | xz -c9 > %o")
     ("\\.zip\\'" . "zip %o -r --filesync %i"))
   "Control the compression shell command for `dired-do-compress-to'.
 






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

* bug#29094: dired-do-compress creates empty archives
  2017-10-31 23:33 bug#29094: dired-do-compress creates empty archives Max
@ 2017-12-05  1:46 ` Noam Postavsky
  2017-12-07  3:25   ` Max
  2017-12-08  9:51   ` Eli Zaretskii
  0 siblings, 2 replies; 6+ messages in thread
From: Noam Postavsky @ 2017-12-05  1:46 UTC (permalink / raw)
  To: Max; +Cc: 29094

tags 29094 + patch
quit

Max <mu@magi.net.ru> writes:

> When Z is pressed on a directory, dired (according to
> dired-compress-file-suffixes variable) runs the following command:
>
> tar -c directory | gzip -c9 > directory.tar.gz
>
> On my system running this command results in an error:
>
> tar: Failed open to write on /dev/rst0: Permission denied
>
> as tar(1) defaults -f to /dev/rst0.
>
> Argument '-f-' should be used to write to stdout.

Right, the GNU tar manual says [1]

    By default, tar uses an archive file name that was compiled when it was
    built on the system; usually this name refers to some physical tape
    drive on the machine. However, the person who installed tar on the
    system may not have set the default to a meaningful value as far as most
    users are concerned.

So it's actually a bit surprising that the current values apparently
work for most people.  I guess most GNU/Linux distros set the default to
stdin?

As far as I can tell, dropping the 'f' option was just an oversight (see
[2] and other messages in that thread).

> Also '-v' is probably not needed here, since the output is not used
> anywhere.

Makes sense.

> Here is a patch to correct this behaviour:

I think it's good for emacs-26.  I assume you haven't assigned copyright
to Emacs (so it should be marked as a tiny change)?

[1]: https://www.gnu.org/software/tar/manual/html_node/file.html
[2]: https://lists.gnu.org/archive/html/emacs-devel/2015-10/msg01282.html 





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

* bug#29094: dired-do-compress creates empty archives
  2017-12-05  1:46 ` Noam Postavsky
@ 2017-12-07  3:25   ` Max
  2017-12-08  9:53     ` Eli Zaretskii
  2017-12-08  9:51   ` Eli Zaretskii
  1 sibling, 1 reply; 6+ messages in thread
From: Max @ 2017-12-07  3:25 UTC (permalink / raw)
  To: Noam Postavsky; +Cc: 29094

Noam Postavsky writes:

> So it's actually a bit surprising that the current values apparently
> work for most people.  I guess most GNU/Linux distros set the default
> to stdin?

I've investigated this a bit further. There is a DEFAULT_ARCHIVE
variable in GNU tar which is set at configuration time. The default
is '-'. Most distributions probably use the defaults.

In OpenBSD [1] and FreeBSD [2] makefiles for GNU tar DEFAULT_ARCHIVE
set to point to a tape drive. Probably to be consistent with tar(1)
provided in the base system which is also points to a tape drive.

> I assume you haven't assigned copyright to Emacs (so it should be
> marked as a tiny change)?

I haven't yet. As far as I know, these kind of small patches are
accepted without assigning a copyright. If not, please, let me know.

[1]: https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/archivers/gtar/Makefile?rev=1.78
[2]: https://svnweb.freebsd.org/ports/head/archivers/gtar/Makefile?revision=421635





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

* bug#29094: dired-do-compress creates empty archives
  2017-12-05  1:46 ` Noam Postavsky
  2017-12-07  3:25   ` Max
@ 2017-12-08  9:51   ` Eli Zaretskii
  2017-12-11 23:48     ` Noam Postavsky
  1 sibling, 1 reply; 6+ messages in thread
From: Eli Zaretskii @ 2017-12-08  9:51 UTC (permalink / raw)
  To: Noam Postavsky; +Cc: 29094, mu

> From: Noam Postavsky <npostavs@users.sourceforge.net>
> Date: Mon, 04 Dec 2017 20:46:07 -0500
> Cc: 29094@debbugs.gnu.org
> 
> So it's actually a bit surprising that the current values apparently
> work for most people.  I guess most GNU/Linux distros set the default to
> stdin?

It's that, and also these commands are probably rarely used.

> I think it's good for emacs-26.

Yes.





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

* bug#29094: dired-do-compress creates empty archives
  2017-12-07  3:25   ` Max
@ 2017-12-08  9:53     ` Eli Zaretskii
  0 siblings, 0 replies; 6+ messages in thread
From: Eli Zaretskii @ 2017-12-08  9:53 UTC (permalink / raw)
  To: Max; +Cc: 29094, npostavs

> Date: Thu, 7 Dec 2017 06:25:23 +0300
> From: Max <mu@magi.net.ru>
> Cc: 29094@debbugs.gnu.org
> 
> > I assume you haven't assigned copyright to Emacs (so it should be
> > marked as a tiny change)?
> 
> I haven't yet. As far as I know, these kind of small patches are
> accepted without assigning a copyright.

True.  (But what matters is the sum total of your contributions, so
enough such small patches will still exhaust your grace amount.)

Thanks.






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

* bug#29094: dired-do-compress creates empty archives
  2017-12-08  9:51   ` Eli Zaretskii
@ 2017-12-11 23:48     ` Noam Postavsky
  0 siblings, 0 replies; 6+ messages in thread
From: Noam Postavsky @ 2017-12-11 23:48 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 29094, mu

tags 29094 fixed
close 29094 26.1
quit

Eli Zaretskii <eliz@gnu.org> writes:

>> I think it's good for emacs-26.
>
> Yes.

Pushed to emacs-26.

[1: cd53b6399b]: 2017-12-11 17:38:28 -0500
  Fix dired-do-compress when tar doesn't default to stdin (Bug#29094)
  https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=cd53b6399b187f5a6719dd58a489f4c55fd094aa





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

end of thread, other threads:[~2017-12-11 23:48 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-31 23:33 bug#29094: dired-do-compress creates empty archives Max
2017-12-05  1:46 ` Noam Postavsky
2017-12-07  3:25   ` Max
2017-12-08  9:53     ` Eli Zaretskii
2017-12-08  9:51   ` Eli Zaretskii
2017-12-11 23:48     ` Noam Postavsky

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).