| }␊ |
| ␊ |
| /**␊ |
| * Run exec and log some information.␊ |
| * Runs the given command and log some information.␊ |
| *␊ |
| * A previous version used plain exec(), but this should not be used␊ |
| * for various reasons, one being that this command does not preserve␊ |
| * trailing whitespace, which is essential for proper diff parsing.␊ |
| *␊ |
| * @param $caller Calling method␊ |
| * @param $cmd Command to run␊ |
| * @param &$out Array of output␊ |
| * @param &$return Return value␊ |
| * @return string Last line of the command␊ |
| */␊ |
| public static function exec($caller, $cmd, &$out=null, &$return=null)␊ |
| {␊ |
| $return = 1;␊ |
| Pluf_Log::stime('timer');␊ |
| $ret = exec($cmd, $out, $return);␊ |
| $fp = popen($cmd, 'r');␊ |
| $buf = '';␊ |
| if ($fp !== false) {␊ |
| $return = 0;␊ |
| while (!feof($fp)) {␊ |
| $buf .= fread($fp, 1024);␊ |
| }␊ |
| pclose($fp);␊ |
| }␊ |
| $out = preg_split('/\r\n|\r|\n/', $buf);␊ |
| $elem = count($out);␊ |
| if ($elem > 0 && $out[$elem-1] === '')␊ |
| unset($out[$elem-1]);␊ |
| Pluf_Log::perf(array($caller, $cmd, Pluf_Log::etime('timer', 'total_exec')));␊ |
| Pluf_Log::debug(array($caller, $cmd, $out));␊ |
| Pluf_Log::inc('exec_calls');␊ |
| return $ret;␊ |
| }␊ |
| ␊ |
| /**␊ |