summaryrefslogtreecommitdiffstats
path: root/Lib/platform.py
diff options
context:
space:
mode:
authorMarc-André Lemburg <mal@egenix.com>2009-07-13 21:28:33 (GMT)
committerMarc-André Lemburg <mal@egenix.com>2009-07-13 21:28:33 (GMT)
commitcecaa65f65f4d75f78ab361e5d99165478d504ee (patch)
tree1c0d6f84cb724ee77c8432e18470bca3febbd524 /Lib/platform.py
parent19e5b3f9d103d7fd45557b1842d9ea87facf9e15 (diff)
downloadcpython-cecaa65f65f4d75f78ab361e5d99165478d504ee.zip
cpython-cecaa65f65f4d75f78ab361e5d99165478d504ee.tar.gz
cpython-cecaa65f65f4d75f78ab361e5d99165478d504ee.tar.bz2
Use a different VER command output parser to address the localization
issues mentioned in #3410. Prepare for Windows 7 (still commented out).
Diffstat (limited to 'Lib/platform.py')
-rwxr-xr-xLib/platform.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/Lib/platform.py b/Lib/platform.py
index 95a3a74..3e0f904 100755
--- a/Lib/platform.py
+++ b/Lib/platform.py
@@ -464,7 +464,16 @@ def _norm_version(version, build=''):
_ver_output = re.compile(r'(?:([\w ]+) ([\w.]+) '
'.*'
- 'Version ([\d.]+))')
+ '\[.* ([\d.]+)\])')
+
+# Examples of VER command output:
+#
+# Windows 2000: Microsoft Windows 2000 [Version 5.00.2195]
+# Windows XP: Microsoft Windows XP [Version 5.1.2600]
+# Windows Vista: Microsoft Windows [Version 6.0.6002]
+#
+# Note that the "Version" string gets localized on different
+# Windows versions.
def _syscmd_ver(system='', release='', version='',
@@ -596,6 +605,7 @@ def win32_ver(release='',version='',csd='',ptype=''):
version = '%i.%i.%i' % (maj,min,buildno & 0xFFFF)
if csd[:13] == 'Service Pack ':
csd = 'SP' + csd[13:]
+
if plat == VER_PLATFORM_WIN32_WINDOWS:
regkey = 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion'
# Try to guess the release name
@@ -610,6 +620,7 @@ def win32_ver(release='',version='',csd='',ptype=''):
release = 'postMe'
elif maj == 5:
release = '2000'
+
elif plat == VER_PLATFORM_WIN32_NT:
regkey = 'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion'
if maj <= 4:
@@ -638,8 +649,12 @@ def win32_ver(release='',version='',csd='',ptype=''):
release = 'Vista'
else:
release = '2008Server'
+ #elif min == 1:
+ # # Windows 7 release candidate uses version 6.1.7100
+ # release = '7RC'
else:
release = 'post2008Server'
+
else:
if not release:
# E.g. Win3.1 with win32s
@@ -1114,7 +1129,7 @@ def uname():
node = _node()
machine = ''
- use_syscmd_ver = 01
+ use_syscmd_ver = 1
# Try win32_ver() on win32 platforms
if system == 'win32':