23
23
#include "zend_compile.h"
24
24
#include "zend_stream.h"
25
25
26
- #if HAVE_MMAP
27
- # if HAVE_UNISTD_H
28
- # include <unistd.h>
29
- # if defined(_SC_PAGESIZE )
30
- # define REAL_PAGE_SIZE sysconf(_SC_PAGESIZE);
31
- # elif defined(_SC_PAGE_SIZE )
32
- # define REAL_PAGE_SIZE sysconf(_SC_PAGE_SIZE);
33
- # endif
34
- # endif
35
- # if HAVE_SYS_MMAN_H
36
- # include <sys/mman.h>
37
- # endif
38
- # ifndef REAL_PAGE_SIZE
39
- # ifdef PAGE_SIZE
40
- # define REAL_PAGE_SIZE PAGE_SIZE
41
- # else
42
- # define REAL_PAGE_SIZE 4096
43
- # endif
44
- # endif
45
- #endif
46
-
47
26
ZEND_DLIMPORT int isatty (int fd );
48
27
49
28
static size_t zend_stream_stdio_reader (void * handle , char * buf , size_t len ) /* {{{ */
@@ -73,17 +52,10 @@ static size_t zend_stream_stdio_fsizer(void *handle) /* {{{ */
73
52
} /* }}} */
74
53
75
54
static void zend_stream_unmap (zend_stream * stream ) { /* {{{ */
76
- #if HAVE_MMAP
77
- if (stream -> mmap .map ) {
78
- munmap (stream -> mmap .map , stream -> mmap .len + ZEND_MMAP_AHEAD );
79
- } else
80
- #endif
81
55
if (stream -> mmap .buf ) {
82
56
efree (stream -> mmap .buf );
83
57
}
84
58
stream -> mmap .len = 0 ;
85
- stream -> mmap .pos = 0 ;
86
- stream -> mmap .map = 0 ;
87
59
stream -> mmap .buf = 0 ;
88
60
stream -> handle = stream -> mmap .old_handle ;
89
61
} /* }}} */
@@ -197,7 +169,6 @@ ZEND_API int zend_stream_fixup(zend_file_handle *file_handle, char **buf, size_t
197
169
break ;
198
170
199
171
case ZEND_HANDLE_MAPPED :
200
- file_handle -> handle .stream .mmap .pos = 0 ;
201
172
* buf = file_handle -> handle .stream .mmap .buf ;
202
173
* len = file_handle -> handle .stream .mmap .len ;
203
174
return SUCCESS ;
@@ -215,30 +186,6 @@ ZEND_API int zend_stream_fixup(zend_file_handle *file_handle, char **buf, size_t
215
186
file_handle -> type = ZEND_HANDLE_STREAM ; /* we might still be _FP but we need fsize() work */
216
187
217
188
if (old_type == ZEND_HANDLE_FP && !file_handle -> handle .stream .isatty && size ) {
218
- #if HAVE_MMAP
219
- size_t page_size = REAL_PAGE_SIZE ;
220
-
221
- if (file_handle -> handle .fp &&
222
- size != 0 &&
223
- ((size - 1 ) % page_size ) <= page_size - ZEND_MMAP_AHEAD ) {
224
- /* *buf[size] is zeroed automatically by the kernel */
225
- * buf = mmap (0 , size + ZEND_MMAP_AHEAD , PROT_READ , MAP_PRIVATE , fileno (file_handle -> handle .fp ), 0 );
226
- if (* buf != MAP_FAILED ) {
227
- zend_long offset = ftell (file_handle -> handle .fp );
228
- file_handle -> handle .stream .mmap .map = * buf ;
229
-
230
- if (offset != -1 ) {
231
- * buf += offset ;
232
- size -= offset ;
233
- }
234
- file_handle -> handle .stream .mmap .buf = * buf ;
235
- file_handle -> handle .stream .mmap .len = size ;
236
-
237
- goto return_mapped ;
238
- }
239
- }
240
- #endif
241
- file_handle -> handle .stream .mmap .map = 0 ;
242
189
file_handle -> handle .stream .mmap .buf = * buf = safe_emalloc (1 , size , ZEND_MMAP_AHEAD );
243
190
file_handle -> handle .stream .mmap .len = zend_stream_read (file_handle , * buf , size );
244
191
} else {
@@ -255,7 +202,6 @@ ZEND_API int zend_stream_fixup(zend_file_handle *file_handle, char **buf, size_t
255
202
remain = size ;
256
203
}
257
204
}
258
- file_handle -> handle .stream .mmap .map = 0 ;
259
205
file_handle -> handle .stream .mmap .len = size ;
260
206
if (size && remain < ZEND_MMAP_AHEAD ) {
261
207
* buf = safe_erealloc (* buf , size , 1 , ZEND_MMAP_AHEAD );
@@ -271,11 +217,7 @@ ZEND_API int zend_stream_fixup(zend_file_handle *file_handle, char **buf, size_t
271
217
if (ZEND_MMAP_AHEAD ) {
272
218
memset (file_handle -> handle .stream .mmap .buf + file_handle -> handle .stream .mmap .len , 0 , ZEND_MMAP_AHEAD );
273
219
}
274
- #if HAVE_MMAP
275
- return_mapped :
276
- #endif
277
220
file_handle -> type = ZEND_HANDLE_MAPPED ;
278
- file_handle -> handle .stream .mmap .pos = 0 ;
279
221
file_handle -> handle .stream .mmap .old_handle = file_handle -> handle .stream .handle ;
280
222
file_handle -> handle .stream .mmap .old_closer = file_handle -> handle .stream .closer ;
281
223
file_handle -> handle .stream .handle = & file_handle -> handle .stream ;
0 commit comments