[Python-checkins] r80189 - python/trunk/Lib/platform.py
victor.stinner
python-checkins at python.org
Sun Apr 18 20:22:25 CEST 2010
Author: victor.stinner
Date: Sun Apr 18 20:22:25 2010
New Revision: 80189
Log:
Revert r80166 (and r80171), restore Lib/platform.py. subprocess cannot be used in platform.py
Modified:
python/trunk/Lib/platform.py
Modified: python/trunk/Lib/platform.py
==============================================================================
--- python/trunk/Lib/platform.py (original)
+++ python/trunk/Lib/platform.py Sun Apr 18 20:22:25 2010
@@ -113,7 +113,7 @@
__version__ = '1.0.7'
-import sys, string, os, re
+import sys,string,os,re
### Globals & Constants
@@ -966,20 +966,13 @@
if sys.platform in ('dos','win32','win16','os2'):
# XXX Others too ?
return default
- import subprocess
- target = _follow_symlinks(target)
+ target = _follow_symlinks(target).replace('"', '\\"')
try:
- proc = subprocess.Popen(
- ['file', target],
- stdout=subprocess.PIPE,
- stderr=open(DEV_NULL, 'wb'))
+ f = os.popen('file "%s" 2> %s' % (target, DEV_NULL))
except (AttributeError,os.error):
return default
- stdout, stderr = proc.communicate()
- stdout = stdout.rstrip(b'\n\r')
- # get output from "filename: output"
- output = stdout.split(b': ', 1)[-1]
- rc = proc.wait()
+ output = string.strip(f.read())
+ rc = f.close()
if not output or rc:
return default
else:
@@ -995,6 +988,8 @@
'dos': ('','MSDOS'),
}
+_architecture_split = re.compile(r'[\s,]').split
+
def architecture(executable=sys.executable,bits='',linkage=''):
""" Queries the given executable (defaults to the Python interpreter
@@ -1029,11 +1024,11 @@
# Get data from the 'file' system command
if executable:
- fileout = _syscmd_file(executable, '')
+ output = _syscmd_file(executable, '')
else:
- fileout = ''
+ output = ''
- if not fileout and \
+ if not output and \
executable == sys.executable:
# "file" command did not return anything; we'll try to provide
# some sensible defaults then...
@@ -1045,6 +1040,9 @@
linkage = l
return bits, linkage
+ # Split the output into a list of strings omitting the filename
+ fileout = _architecture_split(output)[1:]
+
if 'executable' not in fileout:
# Format not supported
return bits,linkage
More information about the Python-checkins
mailing list