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