Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/util.py @ 4096:49237d6ae97d
merge with crew-stable
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Fri, 16 Feb 2007 05:27:37 -0200 |
parents | 33c369afec94 587c6c652f82 |
children | 403c4ddd74bb |
comparison
equal
deleted
inserted
replaced
4085:719488a98ebe | 4096:49237d6ae97d |
---|---|
372 try: | 372 try: |
373 name_st = os.stat(name) | 373 name_st = os.stat(name) |
374 except OSError: | 374 except OSError: |
375 break | 375 break |
376 if samestat(name_st, root_st): | 376 if samestat(name_st, root_st): |
377 if not rel: | |
378 # name was actually the same as root (maybe a symlink) | |
379 return '' | |
377 rel.reverse() | 380 rel.reverse() |
378 name = os.path.join(*rel) | 381 name = os.path.join(*rel) |
379 audit_path(name) | 382 audit_path(name) |
380 return pconvert(name) | 383 return pconvert(name) |
381 dirname, basename = os.path.split(name) | 384 dirname, basename = os.path.split(name) |
844 readlock = _readlock_file | 847 readlock = _readlock_file |
845 | 848 |
846 def samestat(s1, s2): | 849 def samestat(s1, s2): |
847 return False | 850 return False |
848 | 851 |
852 # A sequence of backslashes is special iff it precedes a double quote: | |
853 # - if there's an even number of backslashes, the double quote is not | |
854 # quoted (i.e. it ends the quoted region) | |
855 # - if there's an odd number of backslashes, the double quote is quoted | |
856 # - in both cases, every pair of backslashes is unquoted into a single | |
857 # backslash | |
858 # (See http://msdn2.microsoft.com/en-us/library/a1y7w461.aspx ) | |
859 # So, to quote a string, we must surround it in double quotes, double | |
860 # the number of backslashes that preceed double quotes and add another | |
861 # backslash before every double quote (being careful with the double | |
862 # quote we've appended to the end) | |
863 _quotere = None | |
849 def shellquote(s): | 864 def shellquote(s): |
850 return '"%s"' % s.replace('"', '\\"') | 865 global _quotere |
866 if _quotere is None: | |
867 _quotere = re.compile(r'(\\*)("|\\$)') | |
868 return '"%s"' % _quotere.sub(r'\1\1\\\2', s) | |
851 | 869 |
852 def explain_exit(code): | 870 def explain_exit(code): |
853 return _("exited with status %d") % code, code | 871 return _("exited with status %d") % code, code |
854 | 872 |
855 # if you change this stub into a real check, please try to implement the | 873 # if you change this stub into a real check, please try to implement the |