Mercurial > public > mercurial-scm > hg
comparison mercurial/util.py @ 4087:587c6c652f82
Fix util.shellquote on windows.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Thu, 15 Feb 2007 05:38:00 -0200 |
parents | cc8a52229620 |
children | 49237d6ae97d e817c68edfed |
comparison
equal
deleted
inserted
replaced
4086:cc8a52229620 | 4087:587c6c652f82 |
---|---|
796 readlock = _readlock_file | 796 readlock = _readlock_file |
797 | 797 |
798 def samestat(s1, s2): | 798 def samestat(s1, s2): |
799 return False | 799 return False |
800 | 800 |
801 # A sequence of backslashes is special iff it precedes a double quote: | |
802 # - if there's an even number of backslashes, the double quote is not | |
803 # quoted (i.e. it ends the quoted region) | |
804 # - if there's an odd number of backslashes, the double quote is quoted | |
805 # - in both cases, every pair of backslashes is unquoted into a single | |
806 # backslash | |
807 # (See http://msdn2.microsoft.com/en-us/library/a1y7w461.aspx ) | |
808 # So, to quote a string, we must surround it in double quotes, double | |
809 # the number of backslashes that preceed double quotes and add another | |
810 # backslash before every double quote (being careful with the double | |
811 # quote we've appended to the end) | |
812 _quotere = None | |
801 def shellquote(s): | 813 def shellquote(s): |
802 return '"%s"' % s.replace('"', '\\"') | 814 global _quotere |
815 if _quotere is None: | |
816 _quotere = re.compile(r'(\\*)("|\\$)') | |
817 return '"%s"' % _quotere.sub(r'\1\1\\\2', s) | |
803 | 818 |
804 def explain_exit(code): | 819 def explain_exit(code): |
805 return _("exited with status %d") % code, code | 820 return _("exited with status %d") % code, code |
806 | 821 |
807 # if you change this stub into a real check, please try to implement the | 822 # if you change this stub into a real check, please try to implement the |