[Console] Use 'mode' command to detect terminal size on Windows
This commit is contained in:
parent
f881d28240
commit
bb87a71226
@ -834,10 +834,17 @@ class Application
|
|||||||
*/
|
*/
|
||||||
protected function getTerminalWidth()
|
protected function getTerminalWidth()
|
||||||
{
|
{
|
||||||
if (defined('PHP_WINDOWS_VERSION_BUILD') && $ansicon = getenv('ANSICON')) {
|
if (defined('PHP_WINDOWS_VERSION_BUILD')) {
|
||||||
|
if ($ansicon = getenv('ANSICON')) {
|
||||||
return preg_replace('{^(\d+)x.*$}', '$1', $ansicon);
|
return preg_replace('{^(\d+)x.*$}', '$1', $ansicon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exec('mode CON', $execData);
|
||||||
|
if (preg_match('{columns:\s*(\d+)}i', $execData[4], $matches)) {
|
||||||
|
return $matches[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (preg_match("{rows.(\d+);.columns.(\d+);}i", $this->getSttyColumns(), $match)) {
|
if (preg_match("{rows.(\d+);.columns.(\d+);}i", $this->getSttyColumns(), $match)) {
|
||||||
return $match[2];
|
return $match[2];
|
||||||
}
|
}
|
||||||
@ -850,10 +857,17 @@ class Application
|
|||||||
*/
|
*/
|
||||||
protected function getTerminalHeight()
|
protected function getTerminalHeight()
|
||||||
{
|
{
|
||||||
if (defined('PHP_WINDOWS_VERSION_BUILD') && $ansicon = getenv('ANSICON')) {
|
if (defined('PHP_WINDOWS_VERSION_BUILD')) {
|
||||||
|
if ($ansicon = getenv('ANSICON')) {
|
||||||
return preg_replace('{^\d+x\d+ \(\d+x(\d+)\)$}', '$1', trim($ansicon));
|
return preg_replace('{^\d+x\d+ \(\d+x(\d+)\)$}', '$1', trim($ansicon));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exec('mode CON', $execData);
|
||||||
|
if (preg_match('{lines:\s*(\d+)}i', $execData[3], $matches)) {
|
||||||
|
return $matches[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (preg_match("{rows.(\d+);.columns.(\d+);}i", $this->getSttyColumns(), $match)) {
|
if (preg_match("{rows.(\d+);.columns.(\d+);}i", $this->getSttyColumns(), $match)) {
|
||||||
return $match[1];
|
return $match[1];
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user