MediaWiki
REL1_34
SevenZipStream.php
Go to the documentation of this file.
1
<?php
27
use
MediaWiki\Shell\Shell
;
28
36
class
SevenZipStream
{
37
protected
$stream
;
38
39
private
function
stripPath
(
$path
) {
40
$prefix =
'mediawiki.compress.7z://'
;
41
42
return
substr(
$path
, strlen( $prefix ) );
43
}
44
45
function
stream_open
(
$path
, $mode, $options, &$opened_path ) {
46
if
( $mode[0] ==
'r'
) {
47
$options =
'e -bd -so'
;
48
} elseif ( $mode[0] ==
'w'
) {
49
$options =
'a -bd -si'
;
50
}
else
{
51
return
false
;
52
}
53
$arg = Shell::escape( $this->
stripPath
(
$path
) );
54
$command
=
"7za $options $arg"
;
55
if
( !
wfIsWindows
() ) {
56
// Suppress the stupid messages on stderr
57
$command
.=
' 2>/dev/null'
;
58
}
59
$this->stream = popen(
$command
, $mode[0] );
// popen() doesn't like two-letter modes
60
return
( $this->stream !==
false
);
61
}
62
63
function
url_stat
(
$path
, $flags ) {
64
return
stat( $this->
stripPath
(
$path
) );
65
}
66
67
// This is all so lame; there should be a default class we can extend
68
69
function
stream_close
() {
70
return
fclose( $this->stream );
71
}
72
73
function
stream_flush
() {
74
return
fflush( $this->stream );
75
}
76
77
function
stream_read
( $count ) {
78
return
fread( $this->stream, $count );
79
}
80
81
function
stream_write
( $data ) {
82
return
fwrite( $this->stream, $data );
83
}
84
85
function
stream_tell
() {
86
return
ftell( $this->stream );
87
}
88
89
function
stream_eof
() {
90
return
feof( $this->stream );
91
}
92
93
function
stream_seek
( $offset, $whence ) {
94
return
fseek( $this->stream, $offset, $whence );
95
}
96
}
97
98
stream_wrapper_register(
'mediawiki.compress.7z'
, SevenZipStream::class );
wfIsWindows
wfIsWindows()
Check if the operating system is Windows.
Definition
GlobalFunctions.php:1887
$path
$path
Definition
NoLocalSettings.php:25
$command
$command
Definition
cdb.php:65
MediaWiki\Shell\Shell
Executes shell commands.
Definition
Shell.php:44
SevenZipStream
Stream wrapper around 7za filter program.
Definition
SevenZipStream.php:36
SevenZipStream\stream_write
stream_write( $data)
Definition
SevenZipStream.php:81
SevenZipStream\stripPath
stripPath( $path)
Definition
SevenZipStream.php:39
SevenZipStream\stream_eof
stream_eof()
Definition
SevenZipStream.php:89
SevenZipStream\stream_open
stream_open( $path, $mode, $options, &$opened_path)
Definition
SevenZipStream.php:45
SevenZipStream\stream_tell
stream_tell()
Definition
SevenZipStream.php:85
SevenZipStream\stream_flush
stream_flush()
Definition
SevenZipStream.php:73
SevenZipStream\$stream
$stream
Definition
SevenZipStream.php:37
SevenZipStream\stream_read
stream_read( $count)
Definition
SevenZipStream.php:77
SevenZipStream\stream_close
stream_close()
Definition
SevenZipStream.php:69
SevenZipStream\url_stat
url_stat( $path, $flags)
Definition
SevenZipStream.php:63
SevenZipStream\stream_seek
stream_seek( $offset, $whence)
Definition
SevenZipStream.php:93
maintenance
includes
SevenZipStream.php
Generated on Mon Nov 25 2024 16:06:25 for MediaWiki by
1.10.0