]> code.delx.au - gnu-emacs/commitdiff
(shell-quote-argument): New function.
authorRichard M. Stallman <rms@gnu.org>
Fri, 31 Dec 1993 09:25:12 +0000 (09:25 +0000)
committerRichard M. Stallman <rms@gnu.org>
Fri, 31 Dec 1993 09:25:12 +0000 (09:25 +0000)
lisp/subr.el

index 9d6e4ac32280aaa1c8af00e21d0bcd5fb560f5e1..fce4a56e79bfee3ea030c8fdb072338a980de427 100644 (file)
@@ -643,6 +643,18 @@ Wildcards and redirection are handle as usual in the shell."
            (cons 'progn body)
            (list 'store-match-data original)))))
 
+(defun shell-quote-argument (argument)
+  "Quote an argument for passing as argument to an inferior shell."
+  ;; Quote everything except POSIX filename characters.
+  ;; This should be safe enough even for really weird shells.
+  (let ((result "") (start 0) end)
+    (while (string-match "[^---0-9a-zA-Z_./]" argument start)
+      (setq end (match-beginning 0)
+           result (concat result (substring argument start end)
+                          "\\" (substring argument end (1+ end)))
+           start (1+ end)))
+    (concat result (substring argument start))))
+
 ;; now in fns.c
 ;(defun nth (n list)
 ;  "Returns the Nth element of LIST.