[commit: ghc] master: When iconv is unavailable, use an ASCII encoding to encode ASCII (dbe6dac)
git at git.haskell.org
git at git.haskell.org
Tue Jul 21 19:42:17 UTC 2015
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/dbe6dac96543f426297a59d8d16c3f5afacf42d4/ghc
>---------------------------------------------------------------
commit dbe6dac96543f426297a59d8d16c3f5afacf42d4
Author: Reid Barton <rwbarton at gmail.com>
Date: Tue Jul 21 19:13:20 2015 +0200
When iconv is unavailable, use an ASCII encoding to encode ASCII
D898 and D1059 implemented a fallback behavior to handle the case
that the end user's iconv installation is broken (typically due to
running inside a chroot in which the necessary locale files and/or
gconv modules have not been installed). In this case, if the
program requests an ASCII locale, GHC's char8 encoding is used
rather than the program failing.
However, silently mangling data like char8 does when the programmer
did not ask for it is poor behavior, for reasons described in D1059.
This commit implements an ASCII encoding and uses it in the fallback
case when iconv is unavailable and the user has requested ASCII.
Test Plan:
Added tests for the encodings defined in Latin1.
Also, manually ran a statically-linked executable of that test
in a chroot and the tests passed (up to the ones that call
mkTextEncoding "LATIN1", since there is no fallback from iconv
for that case yet).
Reviewers: austin, hvr, hsyl20, bgamari
Reviewed By: hsyl20, bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D1085
GHC Trac Issues: #7695, #10623
>---------------------------------------------------------------
dbe6dac96543f426297a59d8d16c3f5afacf42d4
libraries/base/GHC/IO/Encoding.hs | 4 +-
libraries/base/GHC/IO/Encoding/Latin1.hs | 83 ++++++++++++++++++++-
libraries/base/tests/.gitignore | 1 +
libraries/base/tests/IO/all.T | 1 +
libraries/base/tests/IO/encoding005.hs | 115 +++++++++++++++++++++++++++++
libraries/base/tests/IO/encoding005.stdout | 5 ++
6 files changed, 203 insertions(+), 6 deletions(-)
Diff suppressed because of size. To see it, use:
git diff-tree --root --patch-with-stat --no-color --find-copies-harder --ignore-space-at-eol --cc dbe6dac96543f426297a59d8d16c3f5afacf42d4
More information about the ghc-commits
mailing list