Comments
Patch
@@ -148,10 +148,20 @@ def samestat(s1, s2):
# backslash before every double quote (being careful with the double
# quote we've appended to the end)
_quotere = None
+_needsshellquote = None
def shellquote(s):
global _quotere
if _quotere is None:
_quotere = re.compile(r'(\\*)("|\\$)')
+ global _needsshellquote
+ if _needsshellquote is None:
+ # ":" and "\\" are also treated as "safe character", because
+ # they are used as a part of path name (and the latter doesn't
+ # work as "escape character", like one on posix) on Windows
+ _needsshellquote = re.compile(r'[^a-zA-Z0-9._:/\\-]').search
+ if not _needsshellquote(s) and not _quotere.search(s):
+ # "s" shouldn't have to be quoted
+ return s
return '"%s"' % _quotere.sub(r'\1\1\\\2', s)
def quotecommand(cmd):
@@ -107,11 +107,11 @@ issue4463: usage of command line configu
$ echo a >> a
#if windows
$ hg --debug 4463a | grep '^running'
- running '"echo" a-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob)
+ running 'echo a-naked \'single quoted\' "double quoted" *\\a *\\a' in */extdiff.* (glob)
$ hg --debug 4463b | grep '^running'
- running 'echo b-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob)
+ running 'echo b-naked \'single quoted\' "double quoted" *\\a *\\a' in */extdiff.* (glob)
$ hg --debug echo | grep '^running'
- running '"*echo*" "*\\a" "*\\a"' in */extdiff.* (glob)
+ running '*echo* *\\a *\\a' in */extdiff.* (glob)
#else
$ hg --debug 4463a | grep '^running'
running '\'echo\' a-naked \'single quoted\' "double quoted" \'*/a\' \'$TESTTMP/a/a\'' in */extdiff.* (glob)
@@ -138,15 +138,15 @@ issue4463: usage of command line configu
> EOF
#if windows
$ hg --debug 4463b2 | grep '^running'
- running 'echo b2-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob)
+ running 'echo b2-naked \'single quoted\' "double quoted" *\\a *\\a' in */extdiff.* (glob)
$ hg --debug 4463b3 | grep '^running'
- running 'echo b3-naked \'single quoted\' "double quoted" "*\\a" "*\\a"' in */extdiff.* (glob)
+ running 'echo b3-naked \'single quoted\' "double quoted" *\\a *\\a' in */extdiff.* (glob)
$ hg --debug 4463b4 | grep '^running'
- running 'echo "*\\a" "*\\a"' in */extdiff.* (glob)
- $ hg --debug 4463b4 --option 'being quoted' | grep '^running'
- running 'echo "being quoted" "*\\a" "*\\a"' in */extdiff.* (glob)
- $ hg --debug extdiff -p echo --option 'being quoted' | grep '^running'
- running '"echo" "being quoted" "*\\a" "*\\a"' in */extdiff.* (glob)
+ running 'echo *\\a *\\a' in */extdiff.* (glob)
+ $ hg --debug 4463b4 --option b4-naked --option 'being quoted' | grep '^running'
+ running 'echo b4-naked "being quoted" *\\a *\\a' in */extdiff.* (glob)
+ $ hg --debug extdiff -p echo --option echo-naked --option 'being quoted' | grep '^running'
+ running 'echo echo-naked "being quoted" *\\a *\\a' in */extdiff.* (glob)
#else
$ hg --debug 4463b2 | grep '^running'
running 'echo b2-naked \'single quoted\' "double quoted" \'*/a\' \'$TESTTMP/a/a\'' in */extdiff.* (glob)