popen() doesn't like two-letter modes but the approach checked for it at
too high level, used as mode the letter t, not r, which was an invalid
option for SevenZipStream, and is still an invalid argument for popen.
// Suppress the stupid messages on stderr
$command .= ' 2>/dev/null';
}
- $this->stream = popen( $command, $mode );
+ $this->stream = popen( $command, $mode[0] ); // popen() doesn't like two-letter modes
return ( $this->stream !== false );
}
return fseek( $this->stream, $offset, $whence );
}
}
-stream_wrapper_register( 'mediawiki.compress.7z', 'SevenZipStream' );
\ No newline at end of file
+stream_wrapper_register( 'mediawiki.compress.7z', 'SevenZipStream' );
}
function importFromFile( $filename ) {
- $t = true;
if ( preg_match( '/\.gz$/', $filename ) ) {
$filename = 'compress.zlib://' . $filename;
}
}
elseif ( preg_match( '/\.7z$/', $filename ) ) {
$filename = 'mediawiki.compress.7z://' . $filename;
- $t = false;
}
- $file = fopen( $filename, $t ? 'rt' : 't' ); // our 7zip wrapper uses popen, which seems not to like two-letter modes
+ $file = fopen( $filename, 'rt' );
return $this->importFromHandle( $file );
}