Commit 8ee75d03 authored by Eli Zaretskii's avatar Eli Zaretskii
Browse files

(shell-quote-argument): Quote argument with double

quotes for ms-dos.
parent 5684cd6e
...@@ -1148,8 +1148,19 @@ Unless optional argument INPLACE is non-nil, return a new string." ...@@ -1148,8 +1148,19 @@ Unless optional argument INPLACE is non-nil, return a new string."
(defun shell-quote-argument (argument) (defun shell-quote-argument (argument)
"Quote an argument for passing as argument to an inferior shell." "Quote an argument for passing as argument to an inferior shell."
(if (eq system-type 'ms-dos) (if (eq system-type 'ms-dos)
;; MS-DOS shells don't have quoting, so don't do any. ;; Quote using double quotes, but escape any existing quotes in
argument ;; the argument with backslashes.
(let ((result "")
(start 0)
end)
(if (or (null (string-match "[^\"]" argument))
(< (match-end 0) (length argument)))
(while (string-match "[\"]" 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) "\""))
(if (eq system-type 'windows-nt) (if (eq system-type 'windows-nt)
(concat "\"" argument "\"") (concat "\"" argument "\"")
(if (equal argument "") (if (equal argument "")
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment