* @file
*/
+use MediaWiki\Shell\Shell;
+
/**
* @ingroup Dump
*/
class Dump7ZipOutput extends DumpPipeOutput {
+ /**
+ * @var int
+ */
+ protected $compressionLevel;
+
/**
* @param string $file
+ * @param int $cmpLevel Compression level passed to 7za command's -mx
*/
- function __construct( $file ) {
+ function __construct( $file, $cmpLevel = 4 ) {
+ $this->compressionLevel = $cmpLevel;
$command = $this->setup7zCommand( $file );
parent::__construct( $command );
$this->filename = $file;
* @return string
*/
function setup7zCommand( $file ) {
- $command = "7za a -bd -si -mx=4 " . wfEscapeShellArg( $file );
+ $command = "7za a -bd -si -mx=";
+ $command .= Shell::escape( $this->compressionLevel ) . ' ';
+ $command .= Shell::escape( $file );
// Suppress annoying useless crap from p7zip
// Unfortunately this could suppress real error messages too
$command .= ' >' . wfGetNull() . ' 2>&1';
}
/**
- * @param string $newname
- * @param bool $open
+ * @inheritDoc
*/
function closeAndRename( $newname, $open = false ) {
$newname = $this->checkRenameArgCount( $newname );