Skip to content
  • rwbarton's avatar
    When iconv is unavailable, use an ASCII encoding to encode ASCII · dbe6dac9
    rwbarton authored and Ben Gamari's avatar Ben Gamari committed
    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
    dbe6dac9