Mercurial > emacs
changeset 73125:c637565b16e8
(shell-quote-argument): Use DOS logic for Windows shells with DOS semantics.
author | Jason Rumney <jasonr@gnu.org> |
---|---|
date | Mon, 25 Sep 2006 23:03:39 +0000 |
parents | 841bd8b7ec31 |
children | 5cb689e83be2 |
files | lisp/subr.el |
diffstat | 1 files changed, 13 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/subr.el Mon Sep 25 23:02:33 2006 +0000 +++ b/lisp/subr.el Mon Sep 25 23:03:39 2006 +0000 @@ -2053,7 +2053,8 @@ (defun shell-quote-argument (argument) "Quote an argument for passing as argument to an inferior shell." - (if (eq system-type 'ms-dos) + (if (or (eq system-type 'ms-dos) + (and (eq system-type 'windows-nt) (w32-shell-dos-semantics))) ;; Quote using double quotes, but escape any existing quotes in ;; the argument with backslashes. (let ((result "") @@ -2067,19 +2068,17 @@ "\\" (substring argument end (1+ end))) start (1+ end)))) (concat "\"" result (substring argument start) "\"")) - (if (eq system-type 'windows-nt) - (concat "\"" argument "\"") - (if (equal argument "") - "''" - ;; 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))))))) + (if (equal argument "") + "''" + ;; 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)))))) (defun string-or-null-p (object) "Return t if OBJECT is a string or nil.