Mercurial > public > mercurial-scm > hg
comparison mercurial/util.py @ 20012:a1d88278beff
merge with stable
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sat, 16 Nov 2013 12:44:28 -0500 |
parents | c38c3fdc8b93 0849d280663e |
children | 1e5b38a919dd |
comparison
equal
deleted
inserted
replaced
20010:34d720b3b33e | 20012:a1d88278beff |
---|---|
561 _winreservednames = '''con prn aux nul | 561 _winreservednames = '''con prn aux nul |
562 com1 com2 com3 com4 com5 com6 com7 com8 com9 | 562 com1 com2 com3 com4 com5 com6 com7 com8 com9 |
563 lpt1 lpt2 lpt3 lpt4 lpt5 lpt6 lpt7 lpt8 lpt9'''.split() | 563 lpt1 lpt2 lpt3 lpt4 lpt5 lpt6 lpt7 lpt8 lpt9'''.split() |
564 _winreservedchars = ':*?"<>|' | 564 _winreservedchars = ':*?"<>|' |
565 def checkwinfilename(path): | 565 def checkwinfilename(path): |
566 '''Check that the base-relative path is a valid filename on Windows. | 566 r'''Check that the base-relative path is a valid filename on Windows. |
567 Returns None if the path is ok, or a UI string describing the problem. | 567 Returns None if the path is ok, or a UI string describing the problem. |
568 | 568 |
569 >>> checkwinfilename("just/a/normal/path") | 569 >>> checkwinfilename("just/a/normal/path") |
570 >>> checkwinfilename("foo/bar/con.xml") | 570 >>> checkwinfilename("foo/bar/con.xml") |
571 "filename contains 'con', which is reserved on Windows" | 571 "filename contains 'con', which is reserved on Windows" |
575 >>> checkwinfilename("foo/bar/AUX/bla.txt") | 575 >>> checkwinfilename("foo/bar/AUX/bla.txt") |
576 "filename contains 'AUX', which is reserved on Windows" | 576 "filename contains 'AUX', which is reserved on Windows" |
577 >>> checkwinfilename("foo/bar/bla:.txt") | 577 >>> checkwinfilename("foo/bar/bla:.txt") |
578 "filename contains ':', which is reserved on Windows" | 578 "filename contains ':', which is reserved on Windows" |
579 >>> checkwinfilename("foo/bar/b\07la.txt") | 579 >>> checkwinfilename("foo/bar/b\07la.txt") |
580 "filename contains '\\\\x07', which is invalid on Windows" | 580 "filename contains '\\x07', which is invalid on Windows" |
581 >>> checkwinfilename("foo/bar/bla ") | 581 >>> checkwinfilename("foo/bar/bla ") |
582 "filename ends with ' ', which is not allowed on Windows" | 582 "filename ends with ' ', which is not allowed on Windows" |
583 >>> checkwinfilename("../bar") | 583 >>> checkwinfilename("../bar") |
584 >>> checkwinfilename("foo\\") | |
585 "filename ends with '\\', which is invalid on Windows" | |
586 >>> checkwinfilename("foo\\/bar") | |
587 "directory name ends with '\\', which is invalid on Windows" | |
584 ''' | 588 ''' |
589 if path.endswith('\\'): | |
590 return _("filename ends with '\\', which is invalid on Windows") | |
591 if '\\/' in path: | |
592 return _("directory name ends with '\\', which is invalid on Windows") | |
585 for n in path.replace('\\', '/').split('/'): | 593 for n in path.replace('\\', '/').split('/'): |
586 if not n: | 594 if not n: |
587 continue | 595 continue |
588 for c in n: | 596 for c in n: |
589 if c in _winreservedchars: | 597 if c in _winreservedchars: |