$descriptors = array(␊ |
0 => array("pipe", "r"),␊ |
1 => array("pipe", "w"),␊ |
2 => array("pipe", "w"),␊ |
);␊ |
␊ |
$this->proc = proc_open($cmd, $descriptors, $this->pipes);␊ |
|
␊ |
fclose($this->pipes[0]);␊ |
fclose($this->pipes[1]);␊ |
fclose($this->pipes[2]);␊ |
␊ |
proc_close($this->proc);␊ |
$this->proc = null;␊ |
|
if (!is_resource($this->pipes[1]))␊ |
return false;␊ |
␊ |
$read = array($this->pipes[1]);␊ |
$write = null;␊ |
$except = null;␊ |
␊ |
$read = array($this->pipes[1], $this->pipes[2]);␊ |
$streamsChanged = stream_select(␊ |
$read, $write, $except, 0, 20000␊ |
$read, $write = null, $except = null, 0, 20000␊ |
);␊ |
␊ |
if ($streamsChanged === false)␊ |
|
$this->_waitForReadyRead();␊ |
␊ |
$version = fgets($this->pipes[1]);␊ |
if ($version === false)␊ |
{␊ |
$err = fgets($this->pipes[2]);␊ |
throw new IDF_Scm_Exception(␊ |
"Could not determine stdio version: $err"␊ |
);␊ |
}␊ |
␊ |
if (!preg_match('/^format-version: (\d+)$/', $version, $m) ||␊ |
$m[1] != self::$SUPPORTED_STDIO_VERSION)␊ |
{␊ |
|
while (true)␊ |
{␊ |
$c = fgetc($this->pipes[1]);␊ |
if ($c === false)␊ |
{␊ |
$err = fgets($this->pipes[2]);␊ |
throw new IDF_Scm_Exception(␊ |
"Could not read stdio: $err"␊ |
);␊ |
}␊ |
␊ |
if ($c == ':')␊ |
{␊ |
if ($idx == 2)␊ |