]> git.eshelyaron.com Git - emacs.git/commitdiff
(insert-directory): Quote special shell chars,
authorRichard M. Stallman <rms@gnu.org>
Mon, 21 Mar 1994 18:17:27 +0000 (18:17 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 21 Mar 1994 18:17:27 +0000 (18:17 +0000)
aside from wildcards and quoting characters.

lisp/files.el

index 8088ad3d4fa550e368ead2c5c46d98e3ae735d70..c4eb7f9320712279ddb13499301de191cf3cdc71 100644 (file)
@@ -1990,11 +1990,24 @@ If WILDCARD, it also runs the shell specified by `shell-file-name'."
            (let ((default-directory
                    (if (file-name-absolute-p file)
                        (file-name-directory file)
-                     (file-name-directory (expand-file-name file)))))
+                     (file-name-directory (expand-file-name file))))
+                 (pattern (file-name-nondirectory file))
+                 (beg 0))
+             ;; Quote some characters that have special meanings in shells;
+             ;; but don't quote the wildcards--we want them to be special.
+             ;; We also currently don't quote the quoting characters
+             ;; in case people want to use them explicitly to quote
+             ;; wildcard characters.
+             (while (string-match "[ \t\n;<>&|{}()#$]" pattern beg)
+               (setq pattern
+                     (concat (substring pattern 0 (match-beginning 0))
+                             "\\"
+                             (substring pattern (match-beginning 0)))
+                     beg (1+ (match-end 0))))
              (call-process shell-file-name nil t nil
                            "-c" (concat insert-directory-program
                                         " -d " switches " "
-                                        (file-name-nondirectory file))))
+                                        pattern)))
          ;; SunOS 4.1.3, SVr4 and others need the "." to list the
          ;; directory if FILE is a symbolic link.
          (call-process insert-directory-program nil t nil switches