Subject: Re: bug#24620: 26.0.50; In dired: 'dired-do-compress-to' fails when filenames cotains space characters

From: José L. Doménech<[email-masked]>
Date: Sat, 29 Oct 2016 11:17:17 +0200

On Sat, 29 Oct 2016 04:06:55 +0200,
[email-masked] wrote:
> 
> tags 24620 patch
> quit
> 
> 
> Looks good.  Would you like to try writing a commit message too? (see
> "Commit messages" in CONTRIBUTE).
>
Something like this?

Fix Bug#24620

* lisp/dired-aux.el (dired-do-compress-to): Change the string used as
  shell command for compression by quoting the filenames used for input
  and output

> Just a minor style suggestion: In cases like these, I like to use the
> backquote syntax instead of explicit (list (cons ...))  because it saves
> a bit of indentation.
>
I changed it:

modified   lisp/dired-aux.el
@@ -1012,11 +1012,13 @@ dired-do-compress-to
           (t
            (when (zerop
                   (dired-shell-command
-                   (replace-regexp-in-string
-                    "%o" out-file
-                    (replace-regexp-in-string
-                     "%i" (mapconcat #'file-name-nondirectory in-files " ")
-                     (cdr rule)))))
+                   (format-spec (cdr rule)
+                                `((?\o . ,(shell-quote-argument out-file))
+                                  (?\i . ,(mapconcat
+                                           (lambda (file-desc)
+                                             (shell-quote-argument (file-name-nondirectory
+                                                                    file-desc)))
+                                           in-files " "))))))
              (message "Compressed %d file(s) to %s"
                       (length in-files)
                       (file-name-nondirectory out-file)))))))

> Have you signed copyrigh assignment for Emacs?  This patch is small
> enough to merge anyway, but if you'll be writing more patches in the
> future, consider filling out the form at
> git.savannah.gnu.org/cgit/gnulib.git/tree/doc/Copyright/request-assign.program
> to get the process started.

Yes. I just started the process by sending a e-mail with the required data.