]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix Tramp's directory-files-and-attributes-with-stat (Bug#37228)
authorKoichi Arakawa <arakawa@pp.iij4u.or.jp>
Fri, 30 Aug 2019 11:53:56 +0000 (13:53 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Fri, 30 Aug 2019 11:53:56 +0000 (13:53 +0200)
* lisp/net/tramp-sh.el
(tramp-do-directory-files-and-attributes-with-stat): Handle file
names with spaces.  (Bug#37228)

Copyright-paperwork-exempt: yes

lisp/net/tramp-sh.el

index 217e73a24bc2c851e1fdde1e3d027abe19c183fc..bcfac78ee65041600ac89f369288a624d442a0bc 100644 (file)
@@ -1759,11 +1759,14 @@ of."
        ;; We must care about file names with spaces, or starting with
        ;; "-"; this would confuse xargs.  "ls -aQ" might be a
        ;; solution, but it does not work on all remote systems.
+       ;; Therefore, we use \000 as file separator.
+       ;; `tramp-sh--quoting-style-options' do not work for file names
+       ;; with spaces piped to "xargs".
        ;; Apostrophes in the stat output are masked as
        ;; `tramp-stat-marker', in order to make a proper shell escape
        ;; of them in file names.
-       "cd %s && echo \"(\"; (%s %s -a | "
-       "xargs %s -c "
+       "cd %s && echo \"(\"; (%s %s -a | tr '\\n\\r' '\\000\\000' | "
+       "xargs -0 %s -c "
        "'(%s%%n%s (%s%%N%s) %%h %s %s %%X %%Y %%Z %%s %s%%A%s t %%i -1)' "
        "-- 2>/dev/null | sed -e 's/\"/\\\\\"/g' -e 's/%s/\"/g'); echo \")\""))
     (tramp-shell-quote-argument localname)