summaryrefslogtreecommitdiff
path: root/Lib/platform.py
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2013-12-09 00:01:27 +0100
committerVictor Stinner <victor.stinner@gmail.com>2013-12-09 00:01:27 +0100
commit620c48b7ea7a1ad3af23725afdac1e6a2b3e6cef (patch)
tree4fbac6f2150c5a62345aca7a52c4c121914935c3 /Lib/platform.py
parent589ecda56eb23937ba871734598cda8f11395389 (diff)
downloadcpython-git-620c48b7ea7a1ad3af23725afdac1e6a2b3e6cef.tar.gz
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-xLib/platform.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/Lib/platform.py b/Lib/platform.py
index ec5df85d6f..030ef2a3a4 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 os.error:
# 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)