php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
zend_stream.h
Go to the documentation of this file.
1/*
2 +----------------------------------------------------------------------+
3 | Zend Engine |
4 +----------------------------------------------------------------------+
5 | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) |
6 +----------------------------------------------------------------------+
7 | This source file is subject to version 2.00 of the Zend license, |
8 | that is bundled with this package in the file LICENSE, and is |
9 | available through the world-wide-web at the following url: |
10 | http://www.zend.com/license/2_00.txt. |
11 | If you did not receive a copy of the Zend license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@zend.com so we can mail you a copy immediately. |
14 +----------------------------------------------------------------------+
15 | Authors: Wez Furlong <wez@thebrainroom.com> |
16 | Scott MacVicar <scottmac@php.net> |
17 | Nuno Lopes <nlopess@php.net> |
18 | Marcus Boerger <helly@php.net> |
19 +----------------------------------------------------------------------+
20*/
21
22#ifndef ZEND_STREAM_H
23#define ZEND_STREAM_H
24
25#include <sys/types.h>
26#include <sys/stat.h>
27
28#include "zend_types.h"
29
30/* Lightweight stream implementation for the ZE scanners.
31 * These functions are private to the engine.
32 * */
33typedef size_t (*zend_stream_fsizer_t)(void* handle);
34typedef ssize_t (*zend_stream_reader_t)(void* handle, char *buf, size_t len);
36
37#define ZEND_MMAP_AHEAD 32
38
44
52
53typedef struct _zend_file_handle {
54 union {
55 FILE *fp;
60 uint8_t type; /* packed zend_stream_type */
62 bool in_list; /* added into CG(open_file) */
63 char *buf;
64 size_t len;
66
68ZEND_API void zend_stream_init_fp(zend_file_handle *handle, FILE *fp, const char *filename);
72ZEND_API zend_result zend_stream_fixup(zend_file_handle *file_handle, char **buf, size_t *len);
74
75void zend_stream_init(void);
76void zend_stream_shutdown(void);
78
79#ifdef ZEND_WIN32
80# include "win32/ioutil.h"
82#ifdef _WIN64
83# define zend_fseek _fseeki64
84# define zend_ftell _ftelli64
85# define zend_lseek _lseeki64
86# else
87# define zend_fseek fseek
88# define zend_ftell ftell
89# define zend_lseek lseek
90# endif
91# define zend_fstat php_win32_ioutil_fstat
92# define zend_stat php_win32_ioutil_stat
93#else
94typedef struct stat zend_stat_t;
95# define zend_fseek fseek
96# define zend_ftell ftell
97# define zend_lseek lseek
98# define zend_fstat fstat
99# define zend_stat stat
100#endif
101
102#endif
size_t len
Definition apprentice.c:174
stat(string $filename)
DL_HANDLE handle
Definition ffi.c:3028
zend_ffi_ctype_name_buf buf
Definition ffi.c:4685
zend_string * filename
Definition zend_stream.h:58
zend_string * opened_path
Definition zend_stream.h:59
zend_stream stream
Definition zend_stream.h:56
zend_stream_closer_t closer
Definition zend_stream.h:50
void * handle
Definition zend_stream.h:46
zend_stream_fsizer_t fsizer
Definition zend_stream.h:49
zend_stream_reader_t reader
Definition zend_stream.h:48
ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle)
#define ZEND_API
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)
struct _zend_file_handle zend_file_handle
struct _zend_string zend_string
#define END_EXTERN_C()
#define BEGIN_EXTERN_C()
ZEND_API zend_result zend_stream_fixup(zend_file_handle *file_handle, char **buf, size_t *len)
ZEND_API void zend_stream_init_filename_ex(zend_file_handle *handle, zend_string *filename)
Definition zend_stream.c:76
ZEND_API zend_result zend_stream_open(zend_file_handle *handle)
Definition zend_stream.c:82
void zend_stream_shutdown(void)
ZEND_API void zend_stream_init_fp(zend_file_handle *handle, FILE *fp, const char *filename)
Definition zend_stream.c:63
ZEND_API void zend_stream_init_filename(zend_file_handle *handle, const char *filename)
Definition zend_stream.c:70
void zend_stream_init(void)
struct _zend_stream zend_stream
void(* zend_stream_closer_t)(void *handle)
Definition zend_stream.h:35
size_t(* zend_stream_fsizer_t)(void *handle)
Definition zend_stream.h:33
ssize_t(* zend_stream_reader_t)(void *handle, char *buf, size_t len)
Definition zend_stream.h:34
zend_stream_type
Definition zend_stream.h:39
@ ZEND_HANDLE_STREAM
Definition zend_stream.h:42
@ ZEND_HANDLE_FILENAME
Definition zend_stream.h:40
@ ZEND_HANDLE_FP
Definition zend_stream.h:41
struct stat zend_stat_t
Definition zend_stream.h:94
ZEND_RESULT_CODE zend_result
Definition zend_types.h:64