encoding: improve handling of buggy getpreferredencoding() on Mac OS X
Prior to version 2.7, calling locale.getpreferredencoding() would
always return 'mac-roman' on Mac OS X. Previously, this was handled by
a call to locale.setlocale(). Unfortunately, Python 2.6.5 and older
have a bug where isspace() would incorrectly report True for 0x85 and
0xa0 after such a call.
In order to fix this, we replace the previous _encodingfixup mapping
to an _encodingfixers mapping. Rather than mapping encodings to their
replacement, it maps them to a function returning the
replacement. This allows us to provide an simplified implementation of
getpreferredencoding() which extracts the expected encoding and
restores the locale.
This fix is based on a patch originally submitted by Martijn Pieters
as well as feedback from Brodie Rao.
adding bar
adding foo
adding quux1
adding quux2
created new head
merging bar
merging bar failed!
merging foo and baz to baz
1 files updated, 1 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C' to abandon
U bar
R baz
3 files updated, 0 files merged, 1 files removed, 0 files unresolved
merging bar
merging bar failed!
merging baz and foo to baz
1 files updated, 1 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C' to abandon
% show unresolved
U bar
R baz
% unmark baz
% show
U bar
U baz
M bar
M baz
M quux2
? bar.orig
% re-resolve baz
merging baz and foo to baz
% after
U bar
R baz
% resolve all warning
abort: no files or directories specified; use --all to remerge all files
% resolve all
merging bar
warning: conflicts during merge.
merging bar failed!
% after
U bar
R baz