]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Now uses pipes.
authorGuido van Rossum <guido@python.org>
Fri, 16 Aug 1991 13:23:29 +0000 (13:23 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 16 Aug 1991 13:23:29 +0000 (13:23 +0000)
Lib/commands.py

index dc467408310c1787c7e41cbde1f24fa2daf842d8..4d16eefaa4bc55d9c06bc153a4ce0e094bac0d60 100644 (file)
@@ -2,11 +2,6 @@
 #
 # Various tools for executing commands and looking at their output and status.
 
-import rand
-import posix
-import stat
-import path
-
 
 # Get 'ls -l' status for an object into a string
 #
@@ -16,8 +11,7 @@ def getstatus(file):
 
 # Get the output from a shell command into a string.
 # The exit status is ignored; a trailing newline is stripped.
-# Assume the command will work with ' >tempfile 2>&1' appended.
-# XXX This should use posix.popen() instead, should it exist.
+# Assume the command will work with '{ ... ; } 2>&1' around it..
 #
 def getoutput(cmd):
        return getstatusoutput(cmd)[1]
@@ -27,42 +21,25 @@ def getoutput(cmd):
 # Returns a pair (sts, output)
 #
 def getstatusoutput(cmd):
-       tmp = '/usr/tmp/wdiff' + `rand.rand()`
-       sts = -1
-       try:
-               sts = posix.system(cmd + ' >' + tmp + ' 2>&1')
-               text = readfile(tmp)
-       finally:
-               altsts = posix.system('rm -f ' + tmp)
+       import posix
+       pipe = posix.popen('{ ' + cmd + '; } 2>&1', 'r')
+       text = pipe.read()
+       sts = pipe.close()
+       if sts = None: sts = 0
        if text[-1:] = '\n': text = text[:-1]
        return sts, text
 
 
-# Return a string containing a file's contents.
-#
-def readfile(fn):
-       st = posix.stat(fn)
-       size = st[stat.ST_SIZE]
-       if not size: return ''
-       try:
-               fp = open(fn, 'r')
-       except:
-               raise posix.error, 'readfile(' + fn + '): open failed'
-       try:
-               return fp.read(size)
-       except:
-               raise posix.error, 'readfile(' + fn + '): read failed'
-
-
 # Make command argument from directory and pathname (prefix space, add quotes).
 #
 def mk2arg(head, x):
-       return mkarg(path.cat(head, x))
+       import path
+       return mkarg(path.join(head, x))
 
 
 # Make a shell command argument from a string.
 # Two strategies: enclose in single quotes if it contains none;
-# otherwis, enclose in double quotes and prefix quotable characters
+# otherwise, enclose in double quotes and prefix quotable characters
 # with backslash.
 #
 def mkarg(x):