Skip to content

Commit

Permalink
[Console] Use proc_open instead of exec to suppress errors when run o…
Browse files Browse the repository at this point in the history
…n windows and stty is not present
  • Loading branch information
Seldaek authored and fabpot committed Jul 20, 2012
1 parent 50eb170 commit 4f93d1a
Showing 1 changed file with 21 additions and 2 deletions.
23 changes: 21 additions & 2 deletions src/Symfony/Component/Console/Application.php
Expand Up @@ -800,7 +800,7 @@ protected function getTerminalWidth()
return preg_replace('{^(\d+)x.*$}', '$1', $ansicon);
}

if (preg_match("{rows.(\d+);.columns.(\d+);}i", exec('stty -a | grep columns'), $match)) {
if (preg_match("{rows.(\d+);.columns.(\d+);}i", $this->getSttyColumns(), $match)) {
return $match[2];
}
}
Expand All @@ -816,7 +816,7 @@ protected function getTerminalHeight()
return preg_replace('{^\d+x\d+ \(\d+x(\d+)\)$}', '$1', trim($ansicon));
}

if (preg_match("{rows.(\d+);.columns.(\d+);}i", exec('stty -a | grep columns'), $match)) {
if (preg_match("{rows.(\d+);.columns.(\d+);}i", $this->getSttyColumns(), $match)) {
return $match[1];
}
}
Expand All @@ -833,6 +833,25 @@ protected function getCommandName(InputInterface $input)
return $input->getFirstArgument('command');
}

/**
* Runs and parses stty -a if it's available, suppressing any error output
*
* @return string
*/
private function getSttyColumns()
{
$descriptorspec = array(1 => array('pipe', 'w'), 2 => array('pipe', 'w'));
$process = proc_open('stty -a | grep columns', $descriptorspec, $pipes, null, null, array('suppress_errors' => true));
if (is_resource($process)) {
$info = stream_get_contents($pipes[1]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);

return $info;
}
}

/**
* Sorts commands in alphabetical order.
*
Expand Down

0 comments on commit 4f93d1a

Please sign in to comment.