1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #ifndef BASIC_FUNCTIONS_H
23 #define BASIC_FUNCTIONS_H
24
25 #include <sys/stat.h>
26
27 #ifdef HAVE_WCHAR_H
28 #include <wchar.h>
29 #endif
30
31 #include "php_filestat.h"
32
33 #include "zend_highlight.h"
34
35 #include "url_scanner_ex.h"
36
37 #if defined(_WIN32) && defined(__clang__)
38 #include <intrin.h>
39 #endif
40
41 extern zend_module_entry basic_functions_module;
42 #define basic_functions_module_ptr &basic_functions_module
43
44 PHP_MINIT_FUNCTION(basic);
45 PHP_MSHUTDOWN_FUNCTION(basic);
46 PHP_RINIT_FUNCTION(basic);
47 PHP_RSHUTDOWN_FUNCTION(basic);
48 PHP_MINFO_FUNCTION(basic);
49
50 PHP_FUNCTION(constant);
51 PHP_FUNCTION(sleep);
52 PHP_FUNCTION(usleep);
53 #if HAVE_NANOSLEEP
54 PHP_FUNCTION(time_nanosleep);
55 PHP_FUNCTION(time_sleep_until);
56 #endif
57 PHP_FUNCTION(flush);
58 #ifdef HAVE_INET_NTOP
59 PHP_NAMED_FUNCTION(php_inet_ntop);
60 #endif
61 #ifdef HAVE_INET_PTON
62 PHP_NAMED_FUNCTION(php_inet_pton);
63 #endif
64 PHP_FUNCTION(ip2long);
65 PHP_FUNCTION(long2ip);
66
67
68 PHP_FUNCTION(getenv);
69 PHP_FUNCTION(putenv);
70
71 PHP_FUNCTION(getopt);
72
73 PHP_FUNCTION(get_current_user);
74 PHP_FUNCTION(set_time_limit);
75
76 PHP_FUNCTION(header_register_callback);
77
78 PHP_FUNCTION(get_cfg_var);
79 PHP_FUNCTION(get_magic_quotes_runtime);
80 PHP_FUNCTION(get_magic_quotes_gpc);
81
82 PHP_FUNCTION(error_log);
83 PHP_FUNCTION(error_get_last);
84 PHP_FUNCTION(error_clear_last);
85
86 PHP_FUNCTION(call_user_func);
87 PHP_FUNCTION(call_user_func_array);
88 PHP_FUNCTION(forward_static_call);
89 PHP_FUNCTION(forward_static_call_array);
90
91 PHP_FUNCTION(register_shutdown_function);
92 PHP_FUNCTION(highlight_file);
93 PHP_FUNCTION(highlight_string);
94 PHP_FUNCTION(php_strip_whitespace);
95 ZEND_API void php_get_highlight_struct(zend_syntax_highlighter_ini *syntax_highlighter_ini);
96
97 PHP_FUNCTION(ini_get);
98 PHP_FUNCTION(ini_get_all);
99 PHP_FUNCTION(ini_set);
100 PHP_FUNCTION(ini_restore);
101 PHP_FUNCTION(get_include_path);
102 PHP_FUNCTION(set_include_path);
103 PHP_FUNCTION(restore_include_path);
104
105 PHP_FUNCTION(print_r);
106 PHP_FUNCTION(fprintf);
107 PHP_FUNCTION(vfprintf);
108
109 PHP_FUNCTION(connection_aborted);
110 PHP_FUNCTION(connection_status);
111 PHP_FUNCTION(ignore_user_abort);
112
113 PHP_FUNCTION(getservbyname);
114 PHP_FUNCTION(getservbyport);
115 PHP_FUNCTION(getprotobyname);
116 PHP_FUNCTION(getprotobynumber);
117
118 PHP_NAMED_FUNCTION(php_if_crc32);
119
120 PHP_FUNCTION(register_tick_function);
121 PHP_FUNCTION(unregister_tick_function);
122 #ifdef HAVE_GETLOADAVG
123 PHP_FUNCTION(sys_getloadavg);
124 #endif
125
126 PHP_FUNCTION(is_uploaded_file);
127 PHP_FUNCTION(move_uploaded_file);
128
129
130 PHP_FUNCTION(parse_ini_file);
131 PHP_FUNCTION(parse_ini_string);
132 #if ZEND_DEBUG
133 PHP_FUNCTION(config_get_hash);
134 #endif
135
136 PHP_FUNCTION(str_rot13);
137 PHP_FUNCTION(stream_get_filters);
138 PHP_FUNCTION(stream_filter_register);
139 PHP_FUNCTION(stream_bucket_make_writeable);
140 PHP_FUNCTION(stream_bucket_prepend);
141 PHP_FUNCTION(stream_bucket_append);
142 PHP_FUNCTION(stream_bucket_new);
143 PHP_MINIT_FUNCTION(user_filters);
144 PHP_RSHUTDOWN_FUNCTION(user_filters);
145 PHP_RSHUTDOWN_FUNCTION(browscap);
146
147
148 PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char *headers);
149 PHPAPI int _php_error_log_ex(int opt_err, char *message, size_t message_len, char *opt, char *headers);
150 PHPAPI int php_prefix_varname(zval *result, zval *prefix, char *var_name, size_t var_name_len, zend_bool add_underscore);
151
152 #if SIZEOF_INT == 4
153
154 typedef unsigned int php_uint32;
155 typedef signed int php_int32;
156 #elif SIZEOF_LONG == 4
157
158 typedef unsigned long php_uint32;
159 typedef signed long php_int32;
160 #else
161 #error Need type which holds 32 bits
162 #endif
163
164 #define MT_N (624)
165
166 typedef struct _php_basic_globals {
167 HashTable *user_shutdown_function_names;
168 HashTable putenv_ht;
169 zval strtok_zval;
170 char *strtok_string;
171 zend_string *locale_string;
172 zend_bool locale_changed;
173 char *strtok_last;
174 char strtok_table[256];
175 zend_ulong strtok_len;
176 char str_ebuf[40];
177 zend_fcall_info array_walk_fci;
178 zend_fcall_info_cache array_walk_fci_cache;
179 zend_fcall_info user_compare_fci;
180 zend_fcall_info_cache user_compare_fci_cache;
181 zend_llist *user_tick_functions;
182
183 zval active_ini_file_section;
184
185
186 zend_long page_uid;
187 zend_long page_gid;
188 zend_long page_inode;
189 time_t page_mtime;
190
191
192 char *CurrentStatFile, *CurrentLStatFile;
193 php_stream_statbuf ssb, lssb;
194
195
196 php_uint32 state[MT_N+1];
197 php_uint32 *next;
198 int left;
199
200 unsigned int rand_seed;
201
202 zend_bool rand_is_seeded;
203 zend_bool mt_rand_is_seeded;
204
205
206 char *syslog_device;
207
208
209 zend_class_entry *incomplete_class;
210 unsigned serialize_lock;
211 struct {
212 struct php_serialize_data *data;
213 unsigned level;
214 } serialize;
215 struct {
216 struct php_unserialize_data *data;
217 unsigned level;
218 } unserialize;
219
220
221 url_adapt_state_ex_t url_adapt_state_ex;
222
223 #ifdef HAVE_MMAP
224 void *mmap_file;
225 size_t mmap_len;
226 #endif
227
228 HashTable *user_filter_map;
229
230
231 #if defined(_REENTRANT) && defined(HAVE_MBRLEN) && defined(HAVE_MBSTATE_T)
232 mbstate_t mblen_state;
233 #endif
234
235 int umask;
236 } php_basic_globals;
237
238 #ifdef ZTS
239 #define BG(v) ZEND_TSRMG(basic_globals_id, php_basic_globals *, v)
240 PHPAPI extern int basic_globals_id;
241 #else
242 #define BG(v) (basic_globals.v)
243 PHPAPI extern php_basic_globals basic_globals;
244 #endif
245
246 #if HAVE_PUTENV
247 typedef struct {
248 char *putenv_string;
249 char *previous_value;
250 char *key;
251 int key_len;
252 } putenv_entry;
253 #endif
254
255 PHPAPI double php_get_nan(void);
256 PHPAPI double php_get_inf(void);
257
258 typedef struct _php_shutdown_function_entry {
259 zval *arguments;
260 int arg_count;
261 } php_shutdown_function_entry;
262
263 PHPAPI extern zend_bool register_user_shutdown_function(char *function_name, size_t function_len, php_shutdown_function_entry *shutdown_function_entry);
264 PHPAPI extern zend_bool remove_user_shutdown_function(char *function_name, size_t function_len);
265 PHPAPI extern zend_bool append_user_shutdown_function(php_shutdown_function_entry shutdown_function_entry);
266
267 PHPAPI void php_call_shutdown_functions(void);
268 PHPAPI void php_free_shutdown_functions(void);
269
270
271 #endif