Subject: 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: Fri, 28 Oct 2016 09:06:32 +0200

On Fri, 28 Oct 2016 01:14:49 +0200,
[email-masked] wrote:
> 
> 
> That looks pretty good.  I think it would be even nicer to use the
> `format-spec' function instead of calling `replace-regexp-in-string'
> twice.
> 
> 
Here are the changes:

--- dired-aux.orig.el	2016-10-27 15:50:50.428634418 +0200
+++ dired-aux.el	2016-10-28 09:01:08.413024427 +0200
@@ -1012,11 +1012,15 @@
           (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)
+                    (list (cons ?o (shell-quote-argument out-file))
+                          (cons ?i
+                                (mapconcat
+                                 (lambda (filename)
+                                   (shell-quote-argument
+                                    (file-name-nondirectory filename)))
+                                 in-files " "))))))
              (message "Compressed %d file(s) to %s"
                       (length in-files)
                       (file-name-nondirectory out-file)))))))

Diff finished.  Fri Oct 28 09:01:25 2016