From 07a028a8487fb9fdd4b57db0275ce76bfa879c03 Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Mon, 24 Oct 2005 21:22:15 +0000 Subject: ditto 2005/10/24 04:44:04-05:00 anl.gov!desai make saferun a little more friendly 2005/10/24 04:38:02-05:00 anl.gov!desai add saferun and fix some pylint errors (Logical change 1.343) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@1415 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Client/Toolset.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/lib/Client/Toolset.py b/src/lib/Client/Toolset.py index 804756e2b..e19293f7d 100644 --- a/src/lib/Client/Toolset.py +++ b/src/lib/Client/Toolset.py @@ -8,11 +8,12 @@ from os import chown, chmod, lstat, mkdir, stat, system, unlink, rename, readlin from pwd import getpwuid, getpwnam from stat import S_ISVTX, S_ISGID, S_ISUID, S_IXUSR, S_IWUSR, S_IRUSR, S_IXGRP from stat import S_IWGRP, S_IRGRP, S_IXOTH, S_IWOTH, S_IROTH, ST_MODE, S_ISDIR -from stat import S_IFREG, ST_UID, ST_GID, S_ISREG, S_IFDIR, S_ISLNK, S_ISCHR, S_ISBLK +from stat import S_IFREG, ST_UID, ST_GID, S_ISREG, S_IFDIR, S_ISLNK from sys import exc_info import stat as statmod #from time import asctime, localtime from traceback import extract_tb +from popen2 import Popen4 from elementtree.ElementTree import Element, SubElement, tostring @@ -30,6 +31,16 @@ def calc_perms(initial, perms): tempperms |= perm return tempperms +def saferun(command): + '''Run a command in a pipe dealing with stdout buffer overloads''' + runpipe = Popen4(command, bufsize=16384) + output = runpipe.fromchild.read() + cmdstat = runpipe.poll() + while cmdstat == -1: + output += runpipe.fromchild.read() + cmdstat = runpipe.poll() + return (cmdstat, [line for line in output.split('\n') if line]) + class Toolset(object): '''The toolset class contains underlying command support and all states''' __important__ = [] -- cgit v1.2.3-1-g7c22