~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

  • Committer: John Arbash Meinel
  • Date: 2006-04-25 15:05:42 UTC
  • mfrom: (1185.85.85 bzr-encoding)
  • mto: This revision was merged to the branch mainline in revision 1752.
  • Revision ID: john@arbash-meinel.com-20060425150542-c7b518dca9928691
[merge] the old bzr-encoding changes, reparenting them on bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
import time
30
30
import types
31
31
import tempfile
 
32
import unicodedata
32
33
 
33
34
import bzrlib
34
35
from bzrlib.errors import (BzrError,
644
645
        raise BzrBadParameterNotUnicode(unicode_or_utf8_string)
645
646
 
646
647
 
 
648
_platform_normalizes_filenames = False
 
649
if sys.platform == 'darwin':
 
650
    _platform_normalizes_filenames = True
 
651
 
 
652
 
 
653
def normalizes_filenames():
 
654
    """Return True if this platform normalizes unicode filenames.
 
655
 
 
656
    Mac OSX does, Windows/Linux do not.
 
657
    """
 
658
    return _platform_normalizes_filenames
 
659
 
 
660
 
 
661
if _platform_normalizes_filenames:
 
662
    def unicode_filename(path):
 
663
        """Make sure 'path' is a properly normalized filename.
 
664
 
 
665
        On platforms where the system normalizes filenames (Mac OSX),
 
666
        you can access a file by any path which will normalize
 
667
        correctly.
 
668
        Internally, bzr only supports NFC/NFKC normalization, since
 
669
        that is the standard for XML documents.
 
670
        So we return an normalized path, and indicate this has been
 
671
        properly normalized.
 
672
 
 
673
        :return: (path, is_normalized) Return a path which can
 
674
                access the file, and whether or not this path is
 
675
                normalized.
 
676
        """
 
677
        return unicodedata.normalize('NFKC', path), True
 
678
else:
 
679
    def unicode_filename(path):
 
680
        """Make sure 'path' is a properly normalized filename.
 
681
 
 
682
        On platforms where the system does not normalize filenames 
 
683
        (Windows, Linux), you have to access a file by its exact path.
 
684
        Internally, bzr only supports NFC/NFKC normalization, since
 
685
        that is the standard for XML documents.
 
686
        So we return the original path, and indicate if this is
 
687
        properly normalized.
 
688
 
 
689
        :return: (path, is_normalized) Return a path which can
 
690
                access the file, and whether or not this path is
 
691
                normalized.
 
692
        """
 
693
        return path, unicodedata.normalize('NFKC', path) == path
 
694
 
 
695
 
647
696
def terminal_width():
648
697
    """Return estimated terminal width."""
649
698