Exemplo n.º 1
0
def filterOutput(cmd):
    """Run a shell cmd, reformatting output as HTML."""
    theFilter = SConsGCCFilter(findSConstructDir())
    
    childIn, childOut, childErr = os.popen3(cmd, 0)
    infd = childIn.fileno()
    outfd = childOut.fileno()
    errfd = childErr.fileno()
    inSet = [outfd, errfd]
    errSet = [infd, outfd, errfd]
    
    while True:
        ins, outs, errs = select.select(inSet, [], errSet)
        if errs:
            print "<b>Error descriptors: <i>%s</i><b>" % repr(errs)
            for item in errs:
                errSet.remove(item)
            if not errSet:
                break
        for fd in ins:
            content = os.read(fd, 65536)
            if not content:
                inSet.remove(fd)
            else:
                theFilter.feed(content)
        if ins:
            write(theFilter.filter())
        if not inSet:
            childIn.close()
            childOut.close()
            childErr.close()
            write(theFilter.filter(consumeAll=True))
            break
def filterOutput(args):
    """Run a shell cmd, reformatting output as HTML."""
    theFilter = SConsGCCFilter(findSConstructDir())
    
    p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    outfd = p.stdout.fileno()
    errfd = p.stderr.fileno()
    inSet = [outfd, errfd]
    errSet = [outfd, errfd]
    
    while True:
        ins, outs, errs = select.select(inSet, [], errSet)
        if errs:
            print("<b>Error descriptors: <i>%s</i><b>" % repr(errs))
            for item in errs:
                errSet.remove(item)
            if not errSet:
                break
        for fd in ins:
            content = os.read(fd, 65536)
            if not content:
                inSet.remove(fd)
            else:
                theFilter.feed(content)
        if ins:
            write(theFilter.filter())
        if not inSet:
            p.stdout.close()
            p.stderr.close()
            write(theFilter.filter(consumeAll=True))
            break
def filterOutput(args):
    """Run a shell cmd, reformatting output as HTML."""
    theFilter = SConsGCCFilter(findSConstructDir())

    p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    outfd = p.stdout.fileno()
    errfd = p.stderr.fileno()
    inSet = [outfd, errfd]
    errSet = [outfd, errfd]

    while True:
        ins, outs, errs = select.select(inSet, [], errSet)
        if errs:
            print("<b>Error descriptors: <i>%s</i><b>" % repr(errs))
            for item in errs:
                errSet.remove(item)
            if not errSet:
                break
        for fd in ins:
            content = os.read(fd, 65536)
            if not content:
                inSet.remove(fd)
            else:
                theFilter.feed(content)
        if ins:
            write(theFilter.filter())
        if not inSet:
            p.stdout.close()
            p.stderr.close()
            write(theFilter.filter(consumeAll=True))
            break