[Python-bugs-list] [ python-Bugs-506100 ] commands.getstatusoutput(): DOS support

noreply@sourceforge.net noreply@sourceforge.net
Sun, 20 Jan 2002 10:13:12 -0800


Bugs item #506100, was opened at 2002-01-20 10:13
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=506100&group_id=5470

Category: Python Library
Group: Platform-specific
Status: Open
Resolution: None
Priority: 5
Submitted By: Pierre Rouleau (pierre_rouleau)
Assigned to: Nobody/Anonymous (nobody)
Summary: commands.getstatusoutput(): DOS support

Initial Comment:
##commands.getstatusoutput(): Does not support for DOS-type shells
# -------------------------------------------------------------
# 
# Inside commands.py, the getstatusoutput() function is not capable of running a 
# DOS-type shell command.  The current code assumes that the operating system 
# is running a Unix-type shell.
# 
# The old code is:

def getstatusoutput(cmd):
    """Return (status, output) of executing cmd in a shell."""
    import os
    pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
    text = pipe.read()
    sts = pipe.close()
    if sts is None: sts = 0
    if text[-1:] == '\n': text = text[:-1]
    return sts, text


# I propose that we update that code to check the operating system and support 
# DOS-style shells (for DOS, NT, OS/2) with the following modified code:

def getstatusoutput(cmd):
    """Return (status, output) of executing cmd in a shell."""
    import os
    if os.name in ['nt', 'dos', 'os2'] :
       # use Dos style command shell for NT, DOS and OS/2
       pipe = os.popen(cmd + ' 2>&1', 'r')               
    else :
       # use Unix style for all others
       pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
    text = pipe.read()
    sts = pipe.close()
    if sts is None: sts = 0
    if text[-1:] == '\n': text = text[:-1]
    return sts, text



----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=506100&group_id=5470