diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2013-12-08 23:04:09 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2013-12-08 23:04:09 (GMT) |
commit | 0aba1a2663799a7e6a5582a0d8052df840889016 (patch) | |
tree | d1bbfa1ff05057a5394fcf7b29a78c2e908de4db /Lib/platform.py | |
parent | 7b83b186794cec6e5d12f43f9c1a6f20bfa4e932 (diff) | |
parent | 620c48b7ea7a1ad3af23725afdac1e6a2b3e6cef (diff) | |
download | cpython-0aba1a2663799a7e6a5582a0d8052df840889016.zip cpython-0aba1a2663799a7e6a5582a0d8052df840889016.tar.gz cpython-0aba1a2663799a7e6a5582a0d8052df840889016.tar.bz2 |
(Merge 3.3) Issue #17429: platform.linux_distribution() now decodes files from
the UTF-8 encoding with the surrogateescape error handler, instead of decoding
from the locale encoding in strict mode. It fixes the function on Fedora 19
which is probably the first major distribution release with a non-ASCII name.
Patch written by Toshio Kuratomi.
Diffstat (limited to 'Lib/platform.py')
-rwxr-xr-x | Lib/platform.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/Lib/platform.py b/Lib/platform.py index c3c4b32..ddddff4 100755 --- a/Lib/platform.py +++ b/Lib/platform.py @@ -129,6 +129,10 @@ except AttributeError: # Standard Unix uses /dev/null DEV_NULL = '/dev/null' +# Directory to search for configuration information on Unix. +# Constant used by test_platform to test linux_distribution(). +_UNIXCONFDIR = '/etc' + ### Platform specific APIs _libc_search = re.compile(b'(__libc_init)' @@ -315,7 +319,7 @@ def linux_distribution(distname='', version='', id='', """ try: - etc = os.listdir('/etc') + etc = os.listdir(_UNIXCONFDIR) except OSError: # Probably not a Unix system return distname,version,id @@ -331,7 +335,8 @@ def linux_distribution(distname='', version='', id='', return _dist_try_harder(distname,version,id) # Read the first line - with open('/etc/'+file, 'r') as f: + with open(os.path.join(_UNIXCONFDIR, file), 'r', + encoding='utf-8', errors='surrogateescape') as f: firstline = f.readline() _distname, _version, _id = _parse_release_file(firstline) |