Fix issues after r54561 which avoided use of the 7z wrapper.
authorPlatonides <platonides@users.mediawiki.org>
Mon, 4 Oct 2010 15:04:41 +0000 (15:04 +0000)
committerPlatonides <platonides@users.mediawiki.org>
Mon, 4 Oct 2010 15:04:41 +0000 (15:04 +0000)
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.

maintenance/7zip.inc
maintenance/importDump.php

index 049bbf1..833e76c 100644 (file)
@@ -35,7 +35,7 @@ class SevenZipStream {
                        // 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 );
        }
        
@@ -73,4 +73,4 @@ class SevenZipStream {
                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' );
index 030962b..00b9cce 100644 (file)
@@ -115,7 +115,6 @@ class BackupReader {
        }
 
        function importFromFile( $filename ) {
-               $t = true;
                if ( preg_match( '/\.gz$/', $filename ) ) {
                        $filename = 'compress.zlib://' . $filename;
                }
@@ -124,10 +123,9 @@ class BackupReader {
                }
                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 );
        }