[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