X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=scripts%2Fconsole.php;h=44f3934a1fcff1a8f20b8808230a6642595d4205;hb=b53e1439969bfa2c0b551d8cc2fc8fe15652c62a;hp=41dd43f28192166bcd77e99dc2562885d7a35638;hpb=088081675fb7d5250a9b9dfe5015de0822cb5ac2;p=quix0rs-gnu-social.git diff --git a/scripts/console.php b/scripts/console.php index 41dd43f281..44f3934a1f 100755 --- a/scripts/console.php +++ b/scripts/console.php @@ -18,7 +18,7 @@ * along with this program. If not, see . */ -# Abort if called from a web server +// Abort if called from a web server define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); @@ -27,21 +27,17 @@ console.php - provide an interactive PHP interpreter for testing ENDOFHELP; -require_once INSTALLDIR.'/scripts/commandline.inc'; +require_once INSTALLDIR.'/scripts/commandline.inc.php'; -if (function_exists('posix_isatty')) { - define('CONSOLE_INTERACTIVE', posix_isatty(0)); -} else { - // Windows? Assume we're on a terminal. :P - define('CONSOLE_INTERACTIVE', false); -} -if (CONSOLE_INTERACTIVE) { - define('CONSOLE_READLINE', function_exists('readline')); -} +// Assume we're on a terminal if on Windows, otherwise posix_isatty tells us. +define('CONSOLE_INTERACTIVE', !function_exists('posix_isatty') || posix_isatty(0)); +define('CONSOLE_READLINE', CONSOLE_INTERACTIVE && function_exists('readline')); -if (CONSOLE_READLINE && CONSOLE_INTERACTIVE && file_exists(CONSOLE_HISTORY)) { - define(CONSOLE_HISTORY, getenv("HOME") . "/.statusnet_console_history"); - readline_read_history(CONSOLE_HISTORY); +if (CONSOLE_READLINE && CONSOLE_INTERACTIVE) { + define('CONSOLE_HISTORY', getenv("HOME") . "/.statusnet_console_history"); + if (file_exists(CONSOLE_HISTORY)) { + readline_read_history(CONSOLE_HISTORY); + } } function read_input_line($prompt) @@ -49,7 +45,13 @@ function read_input_line($prompt) if (CONSOLE_INTERACTIVE) { if (CONSOLE_READLINE) { $line = readline($prompt); - readline_add_history($line); + if (trim($line) != '') { + readline_add_history($line); + if (defined('CONSOLE_HISTORY')) { + // Save often; it's easy to hit fatal errors. + readline_write_history(CONSOLE_HISTORY); + } + } return $line; } else { return readline_emulation($prompt); @@ -73,7 +75,7 @@ function read_input_line($prompt) */ function readline_emulation($prompt) { - if(file_exists(trim(shell_exec('which bash')))) { + if(CONSOLE_INTERACTIVE && file_exists(trim(shell_exec('which bash')))) { $encPrompt = escapeshellarg($prompt); $command = "read -er -p $encPrompt && echo \"\$REPLY\""; $encCommand = escapeshellarg($command); @@ -103,7 +105,9 @@ function readline_emulation($prompt) if (feof(STDIN)) { return false; } - print $prompt; + if (CONSOLE_INTERACTIVE) { + print $prompt; + } return fgets(STDIN); } @@ -123,13 +127,18 @@ function console_help() print "Type ctrl+D or enter 'exit' to exit.\n"; } - -print "StatusNet interactive PHP console... type ctrl+D or enter 'exit' to exit.\n"; -$prompt = common_config('site', 'name') . '> '; +if (CONSOLE_INTERACTIVE) { + print "StatusNet interactive PHP console... type ctrl+D or enter 'exit' to exit.\n"; + $prompt = common_config('site', 'name') . '> '; +} else { + $prompt = ''; +} while (!feof(STDIN)) { $line = read_input_line($prompt); if ($line === false) { - print "\n"; + if (CONSOLE_INTERACTIVE) { + print "\n"; + } break; } elseif ($line !== '') { try { @@ -154,9 +163,7 @@ while (!feof(STDIN)) { print get_class($e) . ": " . $e->getMessage() . "\n"; } } - print "\n"; -} - -if (CONSOLE_READLINE && CONSOLE_INTERACTIVE) { - @readline_write_history(CONSOLE_HISTORY); + if (CONSOLE_INTERACTIVE) { + print "\n"; + } }