[Python-checkins] r80189 - python/trunk/Lib/platform.py
M.-A. Lemburg
mal at egenix.com
Mon Apr 19 10:47:22 CEST 2010
victor.stinner wrote:
> 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
Thanks for reverting the patch.
> 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
> _______________________________________________
> Python-checkins mailing list
> Python-checkins at python.org
> http://mail.python.org/mailman/listinfo/python-checkins
--
Marc-Andre Lemburg
eGenix.com
Professional Python Services directly from the Source (#1, Apr 19 2010)
>>> Python/Zope Consulting and Support ... http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
________________________________________________________________________
::: Try our new mxODBC.Connect Python Database Interface for free ! ::::
eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48
D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
Registered at Amtsgericht Duesseldorf: HRB 46611
http://www.egenix.com/company/contact/
More information about the Python-checkins
mailing list