output = array(); } function GetOutput() { return $this->output; } function AppendOutput($text) { $this->output = array_merge($this->output, split("\n", $text)); } function GetTags() { return $this->tags; } function OutputError($error) { $this->AppendOutput("$error\n"); } function HandleError($msg, $severity) { $this->OutputError($msg); } function Message($msg, $severity) { $this->OutputInfo(0, $msg); } function InputData() { return fgets(STDIN); } function OutputInfo($level, $data) { $this->AppendOutput($data); } function OutputBinary($data) { $this->AppendOutput($data); } function OutputText($data) { $this->AppendOutput($data); } function OutputStat($tags) { $this->tags = array_merge($this->tags, $tags); } function Prompt($msg) { echo $msg; return fgets(STDIN); } function ErrorPause($buf) { $this->OutputError($buf); fgetc(STDIN); } function Edit($file) { if (!empty($_ENV['P4EDITOR'])) { $editor = $_ENV['P4EDITOR']; } else if (!empty($_ENV['EDITOR'])) { $editor = $_ENV['EDITOR']; } else { $editor = 'vi'; } system("$editor $file"); } function Diff($file1, $file2, $doPage, $flags) { if (!empty($_ENV['P4DIFF'])) { $diff = $_ENV['P4DIFF']; } else if (!empty($_ENV['DIFF'])) { $diff = $_ENV['DIFF']; } else { $this->OutputError( 'No diff program specified with $P4DIFF or $DIFF.'); } $pager = false; if ($doPage) { if (!empty($_ENV['P4PAGER'])) { $pager = $_ENV['P4PAGER']; } else if (!empty($_ENV['PAGER'])) { $pager = $_ENV['PAGER']; } else { $pager = false; } } if ($pager) { system("$diff $flags $file1 $file2 | $pager"); } else { system("$diff $flags $file1 $file2"); } } function Merge($base, $leg1, $leg2, $result) { if (!empty($_ENV['P4MERGE'])) { $merge = $_ENV['P4MERGE']; } else if (!empty($_ENV['MERGE'])) { $merge = $_ENV['MERGE']; } else { $this->OutputError( 'No merge program specified with $P4MERGE or $MERGE.'); } system("$merge $base $leg1 $leg2 $result"); } function Help($help) { $this->Message(implode("\n", $help)); } }