# HG changeset patch # User Jason Rumney # Date 1159225419 0 # Node ID c637565b16e8df89388ad07e903409fe2af6c364 # Parent 841bd8b7ec31da818dd01181046b04978709058c (shell-quote-argument): Use DOS logic for Windows shells with DOS semantics. diff -r 841bd8b7ec31 -r c637565b16e8 lisp/subr.el --- 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.