~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

  • Committer: Vincent Ladeuil
  • Date: 2010-06-29 16:21:13 UTC
  • mfrom: (5325 +trunk)
  • mto: (5247.1.12 first-try)
  • mto: This revision was merged to the branch mainline in revision 5326.
  • Revision ID: v.ladeuil+lp@free.fr-20100629162113-xa6y33u17mfi024v
Merge bzr.dev into cleanup resolving conflicts

Show diffs side-by-side

added added

removed removed

Lines of Context:
428
428
    getcwd = _mac_getcwd
429
429
 
430
430
 
431
 
def get_terminal_encoding():
 
431
def get_terminal_encoding(trace=False):
432
432
    """Find the best encoding for printing to the screen.
433
433
 
434
434
    This attempts to check both sys.stdout and sys.stdin to see
440
440
 
441
441
    On my standard US Windows XP, the preferred encoding is
442
442
    cp1252, but the console is cp437
 
443
 
 
444
    :param trace: If True trace the selected encoding via mutter().
443
445
    """
444
446
    from bzrlib.trace import mutter
445
447
    output_encoding = getattr(sys.stdout, 'encoding', None)
447
449
        input_encoding = getattr(sys.stdin, 'encoding', None)
448
450
        if not input_encoding:
449
451
            output_encoding = get_user_encoding()
450
 
            mutter('encoding stdout as osutils.get_user_encoding() %r',
 
452
            if trace:
 
453
                mutter('encoding stdout as osutils.get_user_encoding() %r',
451
454
                   output_encoding)
452
455
        else:
453
456
            output_encoding = input_encoding
454
 
            mutter('encoding stdout as sys.stdin encoding %r', output_encoding)
 
457
            if trace:
 
458
                mutter('encoding stdout as sys.stdin encoding %r',
 
459
                    output_encoding)
455
460
    else:
456
 
        mutter('encoding stdout as sys.stdout encoding %r', output_encoding)
 
461
        if trace:
 
462
            mutter('encoding stdout as sys.stdout encoding %r', output_encoding)
457
463
    if output_encoding == 'cp0':
458
464
        # invalid encoding (cp0 means 'no codepage' on Windows)
459
465
        output_encoding = get_user_encoding()
460
 
        mutter('cp0 is invalid encoding.'
 
466
        if trace:
 
467
            mutter('cp0 is invalid encoding.'
461
468
               ' encoding stdout as osutils.get_user_encoding() %r',
462
469
               output_encoding)
463
470
    # check encoding