Lines Matching refs:file_handle

102 static inline int zend_stream_is_mmap(zend_file_handle *file_handle) { /* {{{ */  in zend_stream_is_mmap()  argument
103 return file_handle->type == ZEND_HANDLE_MAPPED; in zend_stream_is_mmap()
106 static size_t zend_stream_fsize(zend_file_handle *file_handle) /* {{{ */ in zend_stream_fsize() argument
110 if (zend_stream_is_mmap(file_handle)) { in zend_stream_fsize()
111 return file_handle->handle.stream.mmap.len; in zend_stream_fsize()
113 if (file_handle->type == ZEND_HANDLE_STREAM || file_handle->type == ZEND_HANDLE_MAPPED) { in zend_stream_fsize()
114 return file_handle->handle.stream.fsizer(file_handle->handle.stream.handle); in zend_stream_fsize()
116 if (file_handle->handle.fp && zend_fstat(fileno(file_handle->handle.fp), &buf) == 0) { in zend_stream_fsize()
143 static int zend_stream_getc(zend_file_handle *file_handle) /* {{{ */ in zend_stream_getc() argument
147 if (file_handle->handle.stream.reader(file_handle->handle.stream.handle, &buf, sizeof(buf))) { in zend_stream_getc()
153 static size_t zend_stream_read(zend_file_handle *file_handle, char *buf, size_t len) /* {{{ */ in zend_stream_read() argument
155 if (!zend_stream_is_mmap(file_handle) && file_handle->handle.stream.isatty) { in zend_stream_read()
159 for (n = 0; n < len && (c = zend_stream_getc(file_handle)) != EOF && c != '\n'; ++n) { in zend_stream_read()
168 return file_handle->handle.stream.reader(file_handle->handle.stream.handle, buf, len); in zend_stream_read()
171 ZEND_API int zend_stream_fixup(zend_file_handle *file_handle, char **buf, size_t *len) /* {{{ */ in zend_stream_fixup() argument
176 if (file_handle->type == ZEND_HANDLE_FILENAME) { in zend_stream_fixup()
177 if (zend_stream_open(file_handle->filename, file_handle) == FAILURE) { in zend_stream_fixup()
182 switch (file_handle->type) { in zend_stream_fixup()
184 file_handle->type = ZEND_HANDLE_FP; in zend_stream_fixup()
185 file_handle->handle.fp = fdopen(file_handle->handle.fd, "rb"); in zend_stream_fixup()
188 if (!file_handle->handle.fp) { in zend_stream_fixup()
191 memset(&file_handle->handle.stream.mmap, 0, sizeof(zend_mmap)); in zend_stream_fixup()
192file_handle->handle.stream.isatty = isatty(fileno((FILE *)file_handle->handle.stream.handle)) … in zend_stream_fixup()
193 file_handle->handle.stream.reader = (zend_stream_reader_t)zend_stream_stdio_reader; in zend_stream_fixup()
194 file_handle->handle.stream.closer = (zend_stream_closer_t)zend_stream_stdio_closer; in zend_stream_fixup()
195 file_handle->handle.stream.fsizer = (zend_stream_fsizer_t)zend_stream_stdio_fsizer; in zend_stream_fixup()
196 memset(&file_handle->handle.stream.mmap, 0, sizeof(file_handle->handle.stream.mmap)); in zend_stream_fixup()
203 file_handle->handle.stream.mmap.pos = 0; in zend_stream_fixup()
204 *buf = file_handle->handle.stream.mmap.buf; in zend_stream_fixup()
205 *len = file_handle->handle.stream.mmap.len; in zend_stream_fixup()
212 size = zend_stream_fsize(file_handle); in zend_stream_fixup()
217 old_type = file_handle->type; in zend_stream_fixup()
218 file_handle->type = ZEND_HANDLE_STREAM; /* we might still be _FP but we need fsize() work */ in zend_stream_fixup()
220 if (old_type == ZEND_HANDLE_FP && !file_handle->handle.stream.isatty && size) { in zend_stream_fixup()
224 if (file_handle->handle.fp && in zend_stream_fixup()
228 … *buf = mmap(0, size + ZEND_MMAP_AHEAD, PROT_READ, MAP_PRIVATE, fileno(file_handle->handle.fp), 0); in zend_stream_fixup()
230 zend_long offset = ftell(file_handle->handle.fp); in zend_stream_fixup()
231 file_handle->handle.stream.mmap.map = *buf; in zend_stream_fixup()
237 file_handle->handle.stream.mmap.buf = *buf; in zend_stream_fixup()
238 file_handle->handle.stream.mmap.len = size; in zend_stream_fixup()
244 file_handle->handle.stream.mmap.map = 0; in zend_stream_fixup()
245 file_handle->handle.stream.mmap.buf = *buf = safe_emalloc(1, size, ZEND_MMAP_AHEAD); in zend_stream_fixup()
246 file_handle->handle.stream.mmap.len = zend_stream_read(file_handle, *buf, size); in zend_stream_fixup()
252 while ((read = zend_stream_read(file_handle, *buf + size, remain)) > 0) { in zend_stream_fixup()
261 file_handle->handle.stream.mmap.map = 0; in zend_stream_fixup()
262 file_handle->handle.stream.mmap.len = size; in zend_stream_fixup()
266 file_handle->handle.stream.mmap.buf = *buf; in zend_stream_fixup()
269 if (file_handle->handle.stream.mmap.len == 0) { in zend_stream_fixup()
271 file_handle->handle.stream.mmap.buf = *buf; in zend_stream_fixup()
275 …memset(file_handle->handle.stream.mmap.buf + file_handle->handle.stream.mmap.len, 0, ZEND_MMAP_AHE… in zend_stream_fixup()
280 file_handle->type = ZEND_HANDLE_MAPPED; in zend_stream_fixup()
281 file_handle->handle.stream.mmap.pos = 0; in zend_stream_fixup()
282 file_handle->handle.stream.mmap.old_handle = file_handle->handle.stream.handle; in zend_stream_fixup()
283 file_handle->handle.stream.mmap.old_closer = file_handle->handle.stream.closer; in zend_stream_fixup()
284 file_handle->handle.stream.handle = &file_handle->handle.stream; in zend_stream_fixup()
285 file_handle->handle.stream.closer = (zend_stream_closer_t)zend_stream_mmap_closer; in zend_stream_fixup()
287 *buf = file_handle->handle.stream.mmap.buf; in zend_stream_fixup()
288 *len = file_handle->handle.stream.mmap.len; in zend_stream_fixup()