1 | /* |
2 | +----------------------------------------------------------------------+ |
3 | | PHP Version 5 | |
4 | +----------------------------------------------------------------------+ |
5 | | Copyright (c) 1997-2015 The PHP Group | |
6 | +----------------------------------------------------------------------+ |
7 | | This source file is subject to version 3.01 of the PHP 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.php.net/license/3_01.txt | |
11 | | If you did not receive a copy of the PHP license and are unable to | |
12 | | obtain it through the world-wide-web, please send a note to | |
13 | | license@php.net so we can mail you a copy immediately. | |
14 | +----------------------------------------------------------------------+ |
15 | | Authors: Andi Gutmans <andi@zend.com> | |
16 | | Zeev Suraski <zeev@zend.com> | |
17 | +----------------------------------------------------------------------+ |
18 | */ |
19 | |
20 | /* $Id$ */ |
21 | |
22 | #include "php.h" |
23 | #include "php_streams.h" |
24 | #include "php_main.h" |
25 | #include "php_globals.h" |
26 | #include "php_ini.h" |
27 | #include "php_standard.h" |
28 | #include "php_math.h" |
29 | #include "php_http.h" |
30 | #include "php_incomplete_class.h" |
31 | #include "php_getopt.h" |
32 | #include "ext/standard/info.h" |
33 | #include "ext/session/php_session.h" |
34 | #include "zend_operators.h" |
35 | #include "ext/standard/php_dns.h" |
36 | #include "ext/standard/php_uuencode.h" |
37 | |
38 | #ifdef PHP_WIN32 |
39 | #include "win32/php_win32_globals.h" |
40 | #include "win32/time.h" |
41 | #endif |
42 | |
43 | typedef struct yy_buffer_state *YY_BUFFER_STATE; |
44 | |
45 | #include "zend.h" |
46 | #include "zend_ini_scanner.h" |
47 | #include "zend_language_scanner.h" |
48 | #include <zend_language_parser.h> |
49 | |
50 | #include <stdarg.h> |
51 | #include <stdlib.h> |
52 | #include <math.h> |
53 | #include <time.h> |
54 | #include <stdio.h> |
55 | |
56 | #ifndef PHP_WIN32 |
57 | #include <sys/types.h> |
58 | #include <sys/stat.h> |
59 | #endif |
60 | |
61 | #ifdef NETWARE |
62 | #include <netinet/in.h> |
63 | #endif |
64 | |
65 | #ifndef PHP_WIN32 |
66 | # include <netdb.h> |
67 | #else |
68 | #include "win32/inet.h" |
69 | #endif |
70 | |
71 | #if HAVE_ARPA_INET_H |
72 | # include <arpa/inet.h> |
73 | #endif |
74 | |
75 | #if HAVE_UNISTD_H |
76 | # include <unistd.h> |
77 | #endif |
78 | |
79 | #if HAVE_STRING_H |
80 | # include <string.h> |
81 | #else |
82 | # include <strings.h> |
83 | #endif |
84 | |
85 | #if HAVE_LOCALE_H |
86 | # include <locale.h> |
87 | #endif |
88 | |
89 | #if HAVE_SYS_MMAN_H |
90 | # include <sys/mman.h> |
91 | #endif |
92 | |
93 | #if HAVE_SYS_LOADAVG_H |
94 | # include <sys/loadavg.h> |
95 | #endif |
96 | |
97 | #ifdef PHP_WIN32 |
98 | # include "win32/unistd.h" |
99 | #endif |
100 | |
101 | #ifndef INADDR_NONE |
102 | #define INADDR_NONE ((unsigned long int) -1) |
103 | #endif |
104 | |
105 | #include "zend_globals.h" |
106 | #include "php_globals.h" |
107 | #include "SAPI.h" |
108 | #include "php_ticks.h" |
109 | |
110 | #ifdef ZTS |
111 | PHPAPI int basic_globals_id; |
112 | #else |
113 | PHPAPI php_basic_globals basic_globals; |
114 | #endif |
115 | |
116 | #include "php_fopen_wrappers.h" |
117 | #include "streamsfuncs.h" |
118 | |
119 | static zend_class_entry *incomplete_class_entry = NULL; |
120 | |
121 | typedef struct _user_tick_function_entry { |
122 | zval **arguments; |
123 | int arg_count; |
124 | int calling; |
125 | } user_tick_function_entry; |
126 | |
127 | /* some prototypes for local functions */ |
128 | static void user_shutdown_function_dtor(php_shutdown_function_entry *shutdown_function_entry); |
129 | static void user_tick_function_dtor(user_tick_function_entry *tick_function_entry); |
130 | |
131 | static HashTable basic_submodules; |
132 | |
133 | #undef sprintf |
134 | |
135 | /* {{{ arginfo */ |
136 | /* {{{ main/main.c */ |
137 | ZEND_BEGIN_ARG_INFO(arginfo_set_time_limit, 0) |
138 | ZEND_ARG_INFO(0, seconds) |
139 | ZEND_END_ARG_INFO() |
140 | /* }}} */ |
141 | |
142 | /* {{{ main/sapi.c */ |
143 | ZEND_BEGIN_ARG_INFO(, 0) |
144 | ZEND_ARG_INFO(0, callback) |
145 | ZEND_END_ARG_INFO() |
146 | /* }}} */ |
147 | |
148 | /* {{{ main/output.c */ |
149 | ZEND_BEGIN_ARG_INFO_EX(arginfo_ob_start, 0, 0, 0) |
150 | ZEND_ARG_INFO(0, user_function) |
151 | ZEND_ARG_INFO(0, chunk_size) |
152 | ZEND_ARG_INFO(0, flags) |
153 | ZEND_END_ARG_INFO() |
154 | |
155 | ZEND_BEGIN_ARG_INFO(arginfo_ob_flush, 0) |
156 | ZEND_END_ARG_INFO() |
157 | |
158 | ZEND_BEGIN_ARG_INFO(arginfo_ob_clean, 0) |
159 | ZEND_END_ARG_INFO() |
160 | |
161 | ZEND_BEGIN_ARG_INFO(arginfo_ob_end_flush, 0) |
162 | ZEND_END_ARG_INFO() |
163 | |
164 | ZEND_BEGIN_ARG_INFO(arginfo_ob_end_clean, 0) |
165 | ZEND_END_ARG_INFO() |
166 | |
167 | ZEND_BEGIN_ARG_INFO(arginfo_ob_get_flush, 0) |
168 | ZEND_END_ARG_INFO() |
169 | |
170 | ZEND_BEGIN_ARG_INFO(arginfo_ob_get_clean, 0) |
171 | ZEND_END_ARG_INFO() |
172 | |
173 | ZEND_BEGIN_ARG_INFO(arginfo_ob_get_contents, 0) |
174 | ZEND_END_ARG_INFO() |
175 | |
176 | ZEND_BEGIN_ARG_INFO(arginfo_ob_get_level, 0) |
177 | ZEND_END_ARG_INFO() |
178 | |
179 | ZEND_BEGIN_ARG_INFO(arginfo_ob_get_length, 0) |
180 | ZEND_END_ARG_INFO() |
181 | |
182 | ZEND_BEGIN_ARG_INFO(arginfo_ob_list_handlers, 0) |
183 | ZEND_END_ARG_INFO() |
184 | |
185 | ZEND_BEGIN_ARG_INFO_EX(arginfo_ob_get_status, 0, 0, 0) |
186 | ZEND_ARG_INFO(0, full_status) |
187 | ZEND_END_ARG_INFO() |
188 | |
189 | ZEND_BEGIN_ARG_INFO_EX(arginfo_ob_implicit_flush, 0, 0, 0) |
190 | ZEND_ARG_INFO(0, flag) |
191 | ZEND_END_ARG_INFO() |
192 | |
193 | ZEND_BEGIN_ARG_INFO(arginfo_output_reset_rewrite_vars, 0) |
194 | ZEND_END_ARG_INFO() |
195 | |
196 | ZEND_BEGIN_ARG_INFO(arginfo_output_add_rewrite_var, 0) |
197 | ZEND_ARG_INFO(0, name) |
198 | ZEND_ARG_INFO(0, value) |
199 | ZEND_END_ARG_INFO() |
200 | /* }}} */ |
201 | /* {{{ main/streams/userspace.c */ |
202 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_wrapper_register, 0, 0, 2) |
203 | ZEND_ARG_INFO(0, protocol) |
204 | ZEND_ARG_INFO(0, classname) |
205 | ZEND_ARG_INFO(0, flags) |
206 | ZEND_END_ARG_INFO() |
207 | |
208 | ZEND_BEGIN_ARG_INFO(arginfo_stream_wrapper_unregister, 0) |
209 | ZEND_ARG_INFO(0, protocol) |
210 | ZEND_END_ARG_INFO() |
211 | |
212 | ZEND_BEGIN_ARG_INFO(arginfo_stream_wrapper_restore, 0) |
213 | ZEND_ARG_INFO(0, protocol) |
214 | ZEND_END_ARG_INFO() |
215 | /* }}} */ |
216 | /* {{{ array.c */ |
217 | ZEND_BEGIN_ARG_INFO_EX(arginfo_krsort, 0, 0, 1) |
218 | ZEND_ARG_INFO(1, arg) /* ARRAY_INFO(1, arg, 0) */ |
219 | ZEND_ARG_INFO(0, sort_flags) |
220 | ZEND_END_ARG_INFO() |
221 | |
222 | ZEND_BEGIN_ARG_INFO_EX(arginfo_ksort, 0, 0, 1) |
223 | ZEND_ARG_INFO(1, arg) /* ARRAY_INFO(1, arg, 0) */ |
224 | ZEND_ARG_INFO(0, sort_flags) |
225 | ZEND_END_ARG_INFO() |
226 | |
227 | ZEND_BEGIN_ARG_INFO_EX(arginfo_count, 0, 0, 1) |
228 | ZEND_ARG_INFO(0, var) |
229 | ZEND_ARG_INFO(0, mode) |
230 | ZEND_END_ARG_INFO() |
231 | |
232 | ZEND_BEGIN_ARG_INFO(arginfo_natsort, 0) |
233 | ZEND_ARG_INFO(1, arg) /* ARRAY_INFO(1, arg, 0) */ |
234 | ZEND_END_ARG_INFO() |
235 | |
236 | ZEND_BEGIN_ARG_INFO(arginfo_natcasesort, 0) |
237 | ZEND_ARG_INFO(1, arg) /* ARRAY_INFO(1, arg, 0) */ |
238 | ZEND_END_ARG_INFO() |
239 | |
240 | ZEND_BEGIN_ARG_INFO_EX(arginfo_asort, 0, 0, 1) |
241 | ZEND_ARG_INFO(1, arg) /* ARRAY_INFO(1, arg, 0) */ |
242 | ZEND_ARG_INFO(0, sort_flags) |
243 | ZEND_END_ARG_INFO() |
244 | |
245 | ZEND_BEGIN_ARG_INFO_EX(arginfo_arsort, 0, 0, 1) |
246 | ZEND_ARG_INFO(1, arg) /* ARRAY_INFO(1, arg, 0) */ |
247 | ZEND_ARG_INFO(0, sort_flags) |
248 | ZEND_END_ARG_INFO() |
249 | |
250 | ZEND_BEGIN_ARG_INFO_EX(arginfo_sort, 0, 0, 1) |
251 | ZEND_ARG_INFO(1, arg) /* ARRAY_INFO(1, arg, 0) */ |
252 | ZEND_ARG_INFO(0, sort_flags) |
253 | ZEND_END_ARG_INFO() |
254 | |
255 | ZEND_BEGIN_ARG_INFO_EX(arginfo_rsort, 0, 0, 1) |
256 | ZEND_ARG_INFO(1, arg) /* ARRAY_INFO(1, arg, 0) */ |
257 | ZEND_ARG_INFO(0, sort_flags) |
258 | ZEND_END_ARG_INFO() |
259 | |
260 | ZEND_BEGIN_ARG_INFO(arginfo_usort, 0) |
261 | ZEND_ARG_INFO(1, arg) /* ARRAY_INFO(1, arg, 0) */ |
262 | ZEND_ARG_INFO(0, cmp_function) |
263 | ZEND_END_ARG_INFO() |
264 | |
265 | ZEND_BEGIN_ARG_INFO(arginfo_uasort, 0) |
266 | ZEND_ARG_INFO(1, arg) /* ARRAY_INFO(1, arg, 0) */ |
267 | ZEND_ARG_INFO(0, cmp_function) |
268 | ZEND_END_ARG_INFO() |
269 | |
270 | ZEND_BEGIN_ARG_INFO(arginfo_uksort, 0) |
271 | ZEND_ARG_INFO(1, arg) /* ARRAY_INFO(1, arg, 0) */ |
272 | ZEND_ARG_INFO(0, cmp_function) |
273 | ZEND_END_ARG_INFO() |
274 | |
275 | ZEND_BEGIN_ARG_INFO(arginfo_end, 0) |
276 | ZEND_ARG_INFO(1, arg) |
277 | ZEND_END_ARG_INFO() |
278 | |
279 | ZEND_BEGIN_ARG_INFO(arginfo_prev, 0) |
280 | ZEND_ARG_INFO(1, arg) |
281 | ZEND_END_ARG_INFO() |
282 | |
283 | ZEND_BEGIN_ARG_INFO(arginfo_next, 0) |
284 | ZEND_ARG_INFO(1, arg) |
285 | ZEND_END_ARG_INFO() |
286 | |
287 | ZEND_BEGIN_ARG_INFO(arginfo_reset, 0) |
288 | ZEND_ARG_INFO(1, arg) |
289 | ZEND_END_ARG_INFO() |
290 | |
291 | ZEND_BEGIN_ARG_INFO(arginfo_current, 0) |
292 | ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, arg) |
293 | ZEND_END_ARG_INFO() |
294 | |
295 | ZEND_BEGIN_ARG_INFO(arginfo_key, 0) |
296 | ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, arg) |
297 | ZEND_END_ARG_INFO() |
298 | |
299 | ZEND_BEGIN_ARG_INFO_EX(arginfo_min, 0, 0, 1) |
300 | ZEND_ARG_VARIADIC_INFO(0, args) |
301 | ZEND_END_ARG_INFO() |
302 | |
303 | ZEND_BEGIN_ARG_INFO_EX(arginfo_max, 0, 0, 1) |
304 | ZEND_ARG_VARIADIC_INFO(0, args) |
305 | ZEND_END_ARG_INFO() |
306 | |
307 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_walk, 0, 0, 2) |
308 | ZEND_ARG_INFO(1, input) /* ARRAY_INFO(1, arg, 0) */ |
309 | ZEND_ARG_INFO(0, funcname) |
310 | ZEND_ARG_INFO(0, userdata) |
311 | ZEND_END_ARG_INFO() |
312 | |
313 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_walk_recursive, 0, 0, 2) |
314 | ZEND_ARG_INFO(1, input) /* ARRAY_INFO(1, arg, 0) */ |
315 | ZEND_ARG_INFO(0, funcname) |
316 | ZEND_ARG_INFO(0, userdata) |
317 | ZEND_END_ARG_INFO() |
318 | |
319 | ZEND_BEGIN_ARG_INFO_EX(arginfo_in_array, 0, 0, 2) |
320 | ZEND_ARG_INFO(0, needle) |
321 | ZEND_ARG_INFO(0, haystack) /* ARRAY_INFO(0, haystack, 0) */ |
322 | ZEND_ARG_INFO(0, strict) |
323 | ZEND_END_ARG_INFO() |
324 | |
325 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_search, 0, 0, 2) |
326 | ZEND_ARG_INFO(0, needle) |
327 | ZEND_ARG_INFO(0, haystack) /* ARRAY_INFO(0, haystack, 0) */ |
328 | ZEND_ARG_INFO(0, strict) |
329 | ZEND_END_ARG_INFO() |
330 | |
331 | ZEND_BEGIN_ARG_INFO_EX(, 0, 0, 1) |
332 | ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, arg) /* ARRAY_INFO(0, arg, 0) */ |
333 | ZEND_ARG_INFO(0, extract_type) |
334 | ZEND_ARG_INFO(0, prefix) |
335 | ZEND_END_ARG_INFO() |
336 | |
337 | ZEND_BEGIN_ARG_INFO_EX(arginfo_compact, 0, 0, 1) |
338 | ZEND_ARG_VARIADIC_INFO(0, var_names) |
339 | ZEND_END_ARG_INFO() |
340 | |
341 | ZEND_BEGIN_ARG_INFO(arginfo_array_fill, 0) |
342 | ZEND_ARG_INFO(0, start_key) |
343 | ZEND_ARG_INFO(0, num) |
344 | ZEND_ARG_INFO(0, val) |
345 | ZEND_END_ARG_INFO() |
346 | |
347 | ZEND_BEGIN_ARG_INFO(arginfo_array_fill_keys, 0) |
348 | ZEND_ARG_INFO(0, keys) /* ARRAY_INFO(0, keys, 0) */ |
349 | ZEND_ARG_INFO(0, val) |
350 | ZEND_END_ARG_INFO() |
351 | |
352 | ZEND_BEGIN_ARG_INFO_EX(arginfo_range, 0, 0, 2) |
353 | ZEND_ARG_INFO(0, low) |
354 | ZEND_ARG_INFO(0, high) |
355 | ZEND_ARG_INFO(0, step) |
356 | ZEND_END_ARG_INFO() |
357 | |
358 | ZEND_BEGIN_ARG_INFO(arginfo_shuffle, 0) |
359 | ZEND_ARG_INFO(1, arg) /* ARRAY_INFO(1, arg, 0) */ |
360 | ZEND_END_ARG_INFO() |
361 | |
362 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_push, 0, 0, 2) |
363 | ZEND_ARG_INFO(1, stack) /* ARRAY_INFO(1, stack, 0) */ |
364 | ZEND_ARG_VARIADIC_INFO(0, vars) |
365 | ZEND_END_ARG_INFO() |
366 | |
367 | ZEND_BEGIN_ARG_INFO(arginfo_array_pop, 0) |
368 | ZEND_ARG_INFO(1, stack) /* ARRAY_INFO(1, stack, 0) */ |
369 | ZEND_END_ARG_INFO() |
370 | |
371 | ZEND_BEGIN_ARG_INFO(arginfo_array_shift, 0) |
372 | ZEND_ARG_INFO(1, stack) /* ARRAY_INFO(1, stack, 0) */ |
373 | ZEND_END_ARG_INFO() |
374 | |
375 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_unshift, 0, 0, 2) |
376 | ZEND_ARG_INFO(1, stack) /* ARRAY_INFO(1, stack, 0) */ |
377 | ZEND_ARG_VARIADIC_INFO(0, vars) |
378 | ZEND_END_ARG_INFO() |
379 | |
380 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_splice, 0, 0, 2) |
381 | ZEND_ARG_INFO(1, arg) /* ARRAY_INFO(1, arg, 0) */ |
382 | ZEND_ARG_INFO(0, offset) |
383 | ZEND_ARG_INFO(0, length) |
384 | ZEND_ARG_INFO(0, replacement) /* ARRAY_INFO(0, arg, 1) */ |
385 | ZEND_END_ARG_INFO() |
386 | |
387 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_slice, 0, 0, 2) |
388 | ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(1, arg, 0) */ |
389 | ZEND_ARG_INFO(0, offset) |
390 | ZEND_ARG_INFO(0, length) |
391 | ZEND_ARG_INFO(0, preserve_keys) |
392 | ZEND_END_ARG_INFO() |
393 | |
394 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_merge, 0, 0, 2) |
395 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg, 0) */ |
396 | ZEND_ARG_VARIADIC_INFO(0, arrays) |
397 | ZEND_END_ARG_INFO() |
398 | |
399 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_merge_recursive, 0, 0, 2) |
400 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg, 0) */ |
401 | ZEND_ARG_VARIADIC_INFO(0, arrays) |
402 | ZEND_END_ARG_INFO() |
403 | |
404 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_replace, 0, 0, 2) |
405 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg, 0) */ |
406 | ZEND_ARG_VARIADIC_INFO(0, arrays) |
407 | ZEND_END_ARG_INFO() |
408 | |
409 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_replace_recursive, 0, 0, 2) |
410 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg, 0) */ |
411 | ZEND_ARG_VARIADIC_INFO(0, arrays) |
412 | ZEND_END_ARG_INFO() |
413 | |
414 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_keys, 0, 0, 1) |
415 | ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(0, arg, 0) */ |
416 | ZEND_ARG_INFO(0, search_value) |
417 | ZEND_ARG_INFO(0, strict) |
418 | ZEND_END_ARG_INFO() |
419 | |
420 | ZEND_BEGIN_ARG_INFO(arginfo_array_values, 0) |
421 | ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(0, arg, 0) */ |
422 | ZEND_END_ARG_INFO() |
423 | |
424 | ZEND_BEGIN_ARG_INFO(arginfo_array_count_values, 0) |
425 | ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(0, arg, 0) */ |
426 | ZEND_END_ARG_INFO() |
427 | |
428 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_column, 0, 0, 2) |
429 | ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(0, arg, 0) */ |
430 | ZEND_ARG_INFO(0, column_key) |
431 | ZEND_ARG_INFO(0, index_key) |
432 | ZEND_END_ARG_INFO() |
433 | |
434 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_reverse, 0, 0, 1) |
435 | ZEND_ARG_INFO(0, input) /* ARRAY_INFO(0, arg, 0) */ |
436 | ZEND_ARG_INFO(0, preserve_keys) |
437 | ZEND_END_ARG_INFO() |
438 | |
439 | ZEND_BEGIN_ARG_INFO(arginfo_array_pad, 0) |
440 | ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(0, arg, 0) */ |
441 | ZEND_ARG_INFO(0, pad_size) |
442 | ZEND_ARG_INFO(0, pad_value) |
443 | ZEND_END_ARG_INFO() |
444 | |
445 | ZEND_BEGIN_ARG_INFO(arginfo_array_flip, 0) |
446 | ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(0, arg, 0) */ |
447 | ZEND_END_ARG_INFO() |
448 | |
449 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_change_key_case, 0, 0, 1) |
450 | ZEND_ARG_INFO(0, input) /* ARRAY_INFO(0, arg, 0) */ |
451 | ZEND_ARG_INFO(0, case) |
452 | ZEND_END_ARG_INFO() |
453 | |
454 | ZEND_BEGIN_ARG_INFO(arginfo_array_unique, 0) |
455 | ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(0, arg, 0) */ |
456 | ZEND_END_ARG_INFO() |
457 | |
458 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_intersect_key, 0, 0, 2) |
459 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
460 | ZEND_ARG_VARIADIC_INFO(0, arrays) |
461 | ZEND_END_ARG_INFO() |
462 | |
463 | ZEND_BEGIN_ARG_INFO(arginfo_array_intersect_ukey, 0) |
464 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
465 | ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg2, 0) */ |
466 | ZEND_ARG_INFO(0, callback_key_compare_func) |
467 | ZEND_END_ARG_INFO() |
468 | |
469 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_intersect, 0, 0, 2) |
470 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
471 | ZEND_ARG_VARIADIC_INFO(0, arrays) |
472 | ZEND_END_ARG_INFO() |
473 | |
474 | ZEND_BEGIN_ARG_INFO(arginfo_array_uintersect, 0) |
475 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
476 | ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg2, 0) */ |
477 | ZEND_ARG_INFO(0, callback_data_compare_func) |
478 | ZEND_END_ARG_INFO() |
479 | |
480 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_intersect_assoc, 0, 0, 2) |
481 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
482 | ZEND_ARG_VARIADIC_INFO(0, arrays) |
483 | ZEND_END_ARG_INFO() |
484 | |
485 | ZEND_BEGIN_ARG_INFO(arginfo_array_uintersect_assoc, 0) |
486 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
487 | ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg2, 0) */ |
488 | ZEND_ARG_INFO(0, callback_data_compare_func) |
489 | ZEND_END_ARG_INFO() |
490 | |
491 | ZEND_BEGIN_ARG_INFO(arginfo_array_intersect_uassoc, 0) |
492 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
493 | ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg2, 0) */ |
494 | ZEND_ARG_INFO(0, callback_key_compare_func) |
495 | ZEND_END_ARG_INFO() |
496 | |
497 | ZEND_BEGIN_ARG_INFO(arginfo_array_uintersect_uassoc, 0) |
498 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
499 | ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg2, 0) */ |
500 | ZEND_ARG_INFO(0, callback_data_compare_func) |
501 | ZEND_ARG_INFO(0, callback_key_compare_func) |
502 | ZEND_END_ARG_INFO() |
503 | |
504 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_diff_key, 0, 0, 2) |
505 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
506 | ZEND_ARG_VARIADIC_INFO(0, arrays) |
507 | ZEND_END_ARG_INFO() |
508 | |
509 | ZEND_BEGIN_ARG_INFO(arginfo_array_diff_ukey, 0) |
510 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
511 | ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg2, 0) */ |
512 | ZEND_ARG_INFO(0, callback_key_comp_func) |
513 | ZEND_END_ARG_INFO() |
514 | |
515 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_diff, 0, 0, 2) |
516 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
517 | ZEND_ARG_VARIADIC_INFO(0, arrays) |
518 | ZEND_END_ARG_INFO() |
519 | |
520 | ZEND_BEGIN_ARG_INFO(arginfo_array_udiff, 0) |
521 | ZEND_ARG_INFO(0, arr1) |
522 | ZEND_ARG_INFO(0, arr2) |
523 | ZEND_ARG_INFO(0, callback_data_comp_func) |
524 | ZEND_END_ARG_INFO() |
525 | |
526 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_diff_assoc, 0, 0, 2) |
527 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
528 | ZEND_ARG_VARIADIC_INFO(0, arrays) |
529 | ZEND_END_ARG_INFO() |
530 | |
531 | ZEND_BEGIN_ARG_INFO(arginfo_array_diff_uassoc, 0) |
532 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
533 | ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg2, 0) */ |
534 | ZEND_ARG_INFO(0, callback_data_comp_func) |
535 | ZEND_END_ARG_INFO() |
536 | |
537 | ZEND_BEGIN_ARG_INFO(arginfo_array_udiff_assoc, 0) |
538 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
539 | ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg2, 0) */ |
540 | ZEND_ARG_INFO(0, callback_key_comp_func) |
541 | ZEND_END_ARG_INFO() |
542 | |
543 | ZEND_BEGIN_ARG_INFO(arginfo_array_udiff_uassoc, 0) |
544 | ZEND_ARG_INFO(0, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
545 | ZEND_ARG_INFO(0, arr2) /* ARRAY_INFO(0, arg2, 0) */ |
546 | ZEND_ARG_INFO(0, callback_data_comp_func) |
547 | ZEND_ARG_INFO(0, callback_key_comp_func) |
548 | ZEND_END_ARG_INFO() |
549 | |
550 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_multisort, 0, 0, 1) |
551 | ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, arr1) /* ARRAY_INFO(0, arg1, 0) */ |
552 | ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, sort_order) |
553 | ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, sort_flags) |
554 | ZEND_ARG_VARIADIC_INFO(ZEND_SEND_PREFER_REF, arr2) |
555 | ZEND_END_ARG_INFO() |
556 | |
557 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_rand, 0, 0, 1) |
558 | ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(0, arg, 0) */ |
559 | ZEND_ARG_INFO(0, num_req) |
560 | ZEND_END_ARG_INFO() |
561 | |
562 | ZEND_BEGIN_ARG_INFO(arginfo_array_sum, 0) |
563 | ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(0, arg, 0) */ |
564 | ZEND_END_ARG_INFO() |
565 | |
566 | ZEND_BEGIN_ARG_INFO(arginfo_array_product, 0) |
567 | ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(0, arg, 0) */ |
568 | ZEND_END_ARG_INFO() |
569 | |
570 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_reduce, 0, 0, 2) |
571 | ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(0, arg, 0) */ |
572 | ZEND_ARG_INFO(0, callback) |
573 | ZEND_ARG_INFO(0, initial) |
574 | ZEND_END_ARG_INFO() |
575 | |
576 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_filter, 0, 0, 1) |
577 | ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(0, arg, 0) */ |
578 | ZEND_ARG_INFO(0, callback) |
579 | ZEND_ARG_INFO(0, use_keys) |
580 | ZEND_END_ARG_INFO() |
581 | |
582 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_map, 0, 0, 2) |
583 | ZEND_ARG_INFO(0, callback) |
584 | ZEND_ARG_VARIADIC_INFO(0, arrays) |
585 | ZEND_END_ARG_INFO() |
586 | |
587 | ZEND_BEGIN_ARG_INFO(arginfo_array_key_exists, 0) |
588 | ZEND_ARG_INFO(0, key) |
589 | ZEND_ARG_INFO(0, search) |
590 | ZEND_END_ARG_INFO() |
591 | |
592 | ZEND_BEGIN_ARG_INFO_EX(arginfo_array_chunk, 0, 0, 2) |
593 | ZEND_ARG_INFO(0, arg) /* ARRAY_INFO(0, arg, 0) */ |
594 | ZEND_ARG_INFO(0, size) |
595 | ZEND_ARG_INFO(0, preserve_keys) |
596 | ZEND_END_ARG_INFO() |
597 | |
598 | ZEND_BEGIN_ARG_INFO(arginfo_array_combine, 0) |
599 | ZEND_ARG_INFO(0, keys) /* ARRAY_INFO(0, keys, 0) */ |
600 | ZEND_ARG_INFO(0, values) /* ARRAY_INFO(0, values, 0) */ |
601 | ZEND_END_ARG_INFO() |
602 | /* }}} */ |
603 | /* {{{ basic_functions.c */ |
604 | ZEND_BEGIN_ARG_INFO(arginfo_get_magic_quotes_gpc, 0) |
605 | ZEND_END_ARG_INFO() |
606 | |
607 | ZEND_BEGIN_ARG_INFO(arginfo_get_magic_quotes_runtime, 0) |
608 | ZEND_END_ARG_INFO() |
609 | |
610 | ZEND_BEGIN_ARG_INFO_EX(arginfo_set_magic_quotes_runtime, 0, 0, 1) |
611 | ZEND_ARG_INFO(0, new_setting) |
612 | ZEND_END_ARG_INFO() |
613 | |
614 | ZEND_BEGIN_ARG_INFO(arginfo_constant, 0) |
615 | ZEND_ARG_INFO(0, const_name) |
616 | ZEND_END_ARG_INFO() |
617 | |
618 | #ifdef HAVE_INET_NTOP |
619 | ZEND_BEGIN_ARG_INFO(arginfo_inet_ntop, 0) |
620 | ZEND_ARG_INFO(0, in_addr) |
621 | ZEND_END_ARG_INFO() |
622 | #endif |
623 | |
624 | #ifdef HAVE_INET_PTON |
625 | ZEND_BEGIN_ARG_INFO(arginfo_inet_pton, 0) |
626 | ZEND_ARG_INFO(0, ip_address) |
627 | ZEND_END_ARG_INFO() |
628 | #endif |
629 | |
630 | ZEND_BEGIN_ARG_INFO(arginfo_ip2long, 0) |
631 | ZEND_ARG_INFO(0, ip_address) |
632 | ZEND_END_ARG_INFO() |
633 | |
634 | ZEND_BEGIN_ARG_INFO(arginfo_long2ip, 0) |
635 | ZEND_ARG_INFO(0, proper_address) |
636 | ZEND_END_ARG_INFO() |
637 | |
638 | ZEND_BEGIN_ARG_INFO(arginfo_getenv, 0) |
639 | ZEND_ARG_INFO(0, varname) |
640 | ZEND_END_ARG_INFO() |
641 | |
642 | #ifdef HAVE_PUTENV |
643 | ZEND_BEGIN_ARG_INFO(arginfo_putenv, 0) |
644 | ZEND_ARG_INFO(0, setting) |
645 | ZEND_END_ARG_INFO() |
646 | #endif |
647 | |
648 | ZEND_BEGIN_ARG_INFO_EX(arginfo_getopt, 0, 0, 1) |
649 | ZEND_ARG_INFO(0, options) |
650 | ZEND_ARG_INFO(0, opts) /* ARRAY_INFO(0, opts, 1) */ |
651 | ZEND_END_ARG_INFO() |
652 | |
653 | ZEND_BEGIN_ARG_INFO(arginfo_flush, 0) |
654 | ZEND_END_ARG_INFO() |
655 | |
656 | ZEND_BEGIN_ARG_INFO(arginfo_sleep, 0) |
657 | ZEND_ARG_INFO(0, seconds) |
658 | ZEND_END_ARG_INFO() |
659 | |
660 | ZEND_BEGIN_ARG_INFO(arginfo_usleep, 0) |
661 | ZEND_ARG_INFO(0, micro_seconds) |
662 | ZEND_END_ARG_INFO() |
663 | |
664 | #if HAVE_NANOSLEEP |
665 | ZEND_BEGIN_ARG_INFO(arginfo_time_nanosleep, 0) |
666 | ZEND_ARG_INFO(0, seconds) |
667 | ZEND_ARG_INFO(0, nanoseconds) |
668 | ZEND_END_ARG_INFO() |
669 | |
670 | ZEND_BEGIN_ARG_INFO(arginfo_time_sleep_until, 0) |
671 | ZEND_ARG_INFO(0, timestamp) |
672 | ZEND_END_ARG_INFO() |
673 | #endif |
674 | |
675 | ZEND_BEGIN_ARG_INFO(arginfo_get_current_user, 0) |
676 | ZEND_END_ARG_INFO() |
677 | |
678 | ZEND_BEGIN_ARG_INFO(arginfo_get_cfg_var, 0) |
679 | ZEND_ARG_INFO(0, option_name) |
680 | ZEND_END_ARG_INFO() |
681 | |
682 | ZEND_BEGIN_ARG_INFO_EX(arginfo_error_log, 0, 0, 1) |
683 | ZEND_ARG_INFO(0, message) |
684 | ZEND_ARG_INFO(0, message_type) |
685 | ZEND_ARG_INFO(0, destination) |
686 | ZEND_ARG_INFO(0, extra_headers) |
687 | ZEND_END_ARG_INFO() |
688 | |
689 | ZEND_BEGIN_ARG_INFO_EX(arginfo_error_get_last, 0, 0, 0) |
690 | ZEND_END_ARG_INFO() |
691 | |
692 | ZEND_BEGIN_ARG_INFO_EX(arginfo_call_user_func, 0, 0, 1) |
693 | ZEND_ARG_INFO(0, function_name) |
694 | ZEND_ARG_VARIADIC_INFO(0, parameters) |
695 | ZEND_END_ARG_INFO() |
696 | |
697 | ZEND_BEGIN_ARG_INFO_EX(arginfo_call_user_func_array, 0, 0, 2) |
698 | ZEND_ARG_INFO(0, function_name) |
699 | ZEND_ARG_INFO(0, parameters) /* ARRAY_INFO(0, parameters, 1) */ |
700 | ZEND_END_ARG_INFO() |
701 | |
702 | ZEND_BEGIN_ARG_INFO_EX(arginfo_call_user_method, 0, 0, 2) |
703 | ZEND_ARG_INFO(0, method_name) |
704 | ZEND_ARG_INFO(1, object) |
705 | ZEND_ARG_VARIADIC_INFO(0, parameters) |
706 | ZEND_END_ARG_INFO() |
707 | |
708 | ZEND_BEGIN_ARG_INFO(arginfo_call_user_method_array, 0) |
709 | ZEND_ARG_INFO(0, method_name) |
710 | ZEND_ARG_INFO(1, object) |
711 | ZEND_ARG_INFO(0, params) /* ARRAY_INFO(0, params, 1) */ |
712 | ZEND_END_ARG_INFO() |
713 | |
714 | ZEND_BEGIN_ARG_INFO_EX(arginfo_forward_static_call, 0, 0, 1) |
715 | ZEND_ARG_INFO(0, function_name) |
716 | ZEND_ARG_VARIADIC_INFO(0, parameters) |
717 | ZEND_END_ARG_INFO() |
718 | |
719 | ZEND_BEGIN_ARG_INFO_EX(arginfo_forward_static_call_array, 0, 0, 2) |
720 | ZEND_ARG_INFO(0, function_name) |
721 | ZEND_ARG_INFO(0, parameters) /* ARRAY_INFO(0, parameters, 1) */ |
722 | ZEND_END_ARG_INFO() |
723 | |
724 | ZEND_BEGIN_ARG_INFO_EX(arginfo_register_shutdown_function, 0, 0, 1) |
725 | ZEND_ARG_INFO(0, function_name) |
726 | ZEND_ARG_VARIADIC_INFO(0, parameters) |
727 | ZEND_END_ARG_INFO() |
728 | |
729 | ZEND_BEGIN_ARG_INFO_EX(arginfo_highlight_file, 0, 0, 1) |
730 | ZEND_ARG_INFO(0, file_name) |
731 | ZEND_ARG_INFO(0, return) |
732 | ZEND_END_ARG_INFO() |
733 | |
734 | ZEND_BEGIN_ARG_INFO(arginfo_php_strip_whitespace, 0) |
735 | ZEND_ARG_INFO(0, file_name) |
736 | ZEND_END_ARG_INFO() |
737 | |
738 | ZEND_BEGIN_ARG_INFO_EX(arginfo_highlight_string, 0, 0, 1) |
739 | ZEND_ARG_INFO(0, string) |
740 | ZEND_ARG_INFO(0, return) |
741 | ZEND_END_ARG_INFO() |
742 | |
743 | ZEND_BEGIN_ARG_INFO(arginfo_ini_get, 0) |
744 | ZEND_ARG_INFO(0, varname) |
745 | ZEND_END_ARG_INFO() |
746 | |
747 | ZEND_BEGIN_ARG_INFO_EX(arginfo_ini_get_all, 0, 0, 0) |
748 | ZEND_ARG_INFO(0, extension) |
749 | ZEND_END_ARG_INFO() |
750 | |
751 | ZEND_BEGIN_ARG_INFO(arginfo_ini_set, 0) |
752 | ZEND_ARG_INFO(0, varname) |
753 | ZEND_ARG_INFO(0, newvalue) |
754 | ZEND_END_ARG_INFO() |
755 | |
756 | ZEND_BEGIN_ARG_INFO(arginfo_ini_restore, 0) |
757 | ZEND_ARG_INFO(0, varname) |
758 | ZEND_END_ARG_INFO() |
759 | |
760 | ZEND_BEGIN_ARG_INFO(arginfo_set_include_path, 0) |
761 | ZEND_ARG_INFO(0, new_include_path) |
762 | ZEND_END_ARG_INFO() |
763 | |
764 | ZEND_BEGIN_ARG_INFO(arginfo_get_include_path, 0) |
765 | ZEND_END_ARG_INFO() |
766 | |
767 | ZEND_BEGIN_ARG_INFO(arginfo_restore_include_path, 0) |
768 | ZEND_END_ARG_INFO() |
769 | |
770 | ZEND_BEGIN_ARG_INFO_EX(arginfo_print_r, 0, 0, 1) |
771 | ZEND_ARG_INFO(0, var) |
772 | ZEND_ARG_INFO(0, return) |
773 | ZEND_END_ARG_INFO() |
774 | |
775 | ZEND_BEGIN_ARG_INFO(arginfo_connection_aborted, 0) |
776 | ZEND_END_ARG_INFO() |
777 | |
778 | ZEND_BEGIN_ARG_INFO(arginfo_connection_status, 0) |
779 | ZEND_END_ARG_INFO() |
780 | |
781 | ZEND_BEGIN_ARG_INFO_EX(arginfo_ignore_user_abort, 0, 0, 0) |
782 | ZEND_ARG_INFO(0, value) |
783 | ZEND_END_ARG_INFO() |
784 | |
785 | #if HAVE_GETSERVBYNAME |
786 | ZEND_BEGIN_ARG_INFO(arginfo_getservbyname, 0) |
787 | ZEND_ARG_INFO(0, service) |
788 | ZEND_ARG_INFO(0, protocol) |
789 | ZEND_END_ARG_INFO() |
790 | #endif |
791 | |
792 | #if HAVE_GETSERVBYPORT |
793 | ZEND_BEGIN_ARG_INFO(arginfo_getservbyport, 0) |
794 | ZEND_ARG_INFO(0, port) |
795 | ZEND_ARG_INFO(0, protocol) |
796 | ZEND_END_ARG_INFO() |
797 | #endif |
798 | |
799 | #if HAVE_GETPROTOBYNAME |
800 | ZEND_BEGIN_ARG_INFO(arginfo_getprotobyname, 0) |
801 | ZEND_ARG_INFO(0, name) |
802 | ZEND_END_ARG_INFO() |
803 | #endif |
804 | |
805 | #if HAVE_GETPROTOBYNUMBER |
806 | ZEND_BEGIN_ARG_INFO(arginfo_getprotobynumber, 0) |
807 | ZEND_ARG_INFO(0, proto) |
808 | ZEND_END_ARG_INFO() |
809 | #endif |
810 | |
811 | ZEND_BEGIN_ARG_INFO_EX(arginfo_register_tick_function, 0, 0, 1) |
812 | ZEND_ARG_INFO(0, function_name) |
813 | ZEND_ARG_VARIADIC_INFO(0, parameters) |
814 | ZEND_END_ARG_INFO() |
815 | |
816 | ZEND_BEGIN_ARG_INFO(arginfo_unregister_tick_function, 0) |
817 | ZEND_ARG_INFO(0, function_name) |
818 | ZEND_END_ARG_INFO() |
819 | |
820 | ZEND_BEGIN_ARG_INFO(arginfo_is_uploaded_file, 0) |
821 | ZEND_ARG_INFO(0, path) |
822 | ZEND_END_ARG_INFO() |
823 | |
824 | ZEND_BEGIN_ARG_INFO(arginfo_move_uploaded_file, 0) |
825 | ZEND_ARG_INFO(0, path) |
826 | ZEND_ARG_INFO(0, new_path) |
827 | ZEND_END_ARG_INFO() |
828 | |
829 | ZEND_BEGIN_ARG_INFO_EX(arginfo_parse_ini_file, 0, 0, 1) |
830 | ZEND_ARG_INFO(0, filename) |
831 | ZEND_ARG_INFO(0, process_sections) |
832 | ZEND_ARG_INFO(0, scanner_mode) |
833 | ZEND_END_ARG_INFO() |
834 | |
835 | ZEND_BEGIN_ARG_INFO_EX(arginfo_parse_ini_string, 0, 0, 1) |
836 | ZEND_ARG_INFO(0, ini_string) |
837 | ZEND_ARG_INFO(0, process_sections) |
838 | ZEND_ARG_INFO(0, scanner_mode) |
839 | ZEND_END_ARG_INFO() |
840 | |
841 | #if ZEND_DEBUG |
842 | ZEND_BEGIN_ARG_INFO(arginfo_config_get_hash, 0) |
843 | ZEND_END_ARG_INFO() |
844 | #endif |
845 | |
846 | #ifdef HAVE_GETLOADAVG |
847 | ZEND_BEGIN_ARG_INFO(arginfo_sys_getloadavg, 0) |
848 | ZEND_END_ARG_INFO() |
849 | #endif |
850 | /* }}} */ |
851 | /* {{{ assert.c */ |
852 | ZEND_BEGIN_ARG_INFO(arginfo_assert, 0) |
853 | ZEND_ARG_INFO(0, assertion) |
854 | ZEND_END_ARG_INFO() |
855 | |
856 | ZEND_BEGIN_ARG_INFO_EX(arginfo_assert_options, 0, 0, 1) |
857 | ZEND_ARG_INFO(0, what) |
858 | ZEND_ARG_INFO(0, value) |
859 | ZEND_END_ARG_INFO() |
860 | /* }}} */ |
861 | /* {{{ base64.c */ |
862 | ZEND_BEGIN_ARG_INFO(arginfo_base64_encode, 0) |
863 | ZEND_ARG_INFO(0, str) |
864 | ZEND_END_ARG_INFO() |
865 | |
866 | ZEND_BEGIN_ARG_INFO_EX(arginfo_base64_decode, 0, 0, 1) |
867 | ZEND_ARG_INFO(0, str) |
868 | ZEND_ARG_INFO(0, strict) |
869 | ZEND_END_ARG_INFO() |
870 | |
871 | /* }}} */ |
872 | /* {{{ browscap.c */ |
873 | ZEND_BEGIN_ARG_INFO_EX(arginfo_get_browser, 0, 0, 0) |
874 | ZEND_ARG_INFO(0, browser_name) |
875 | ZEND_ARG_INFO(0, return_array) |
876 | ZEND_END_ARG_INFO() |
877 | /* }}} */ |
878 | /* {{{ crc32.c */ |
879 | ZEND_BEGIN_ARG_INFO(arginfo_crc32, 0) |
880 | ZEND_ARG_INFO(0, str) |
881 | ZEND_END_ARG_INFO() |
882 | |
883 | /* }}} */ |
884 | /* {{{ crypt.c */ |
885 | #if HAVE_CRYPT |
886 | ZEND_BEGIN_ARG_INFO_EX(arginfo_crypt, 0, 0, 1) |
887 | ZEND_ARG_INFO(0, str) |
888 | ZEND_ARG_INFO(0, salt) |
889 | ZEND_END_ARG_INFO() |
890 | #endif |
891 | /* }}} */ |
892 | /* {{{ cyr_convert.c */ |
893 | ZEND_BEGIN_ARG_INFO(arginfo_convert_cyr_string, 0) |
894 | ZEND_ARG_INFO(0, str) |
895 | ZEND_ARG_INFO(0, from) |
896 | ZEND_ARG_INFO(0, to) |
897 | ZEND_END_ARG_INFO() |
898 | |
899 | /* }}} */ |
900 | /* {{{ datetime.c */ |
901 | #if HAVE_STRPTIME |
902 | ZEND_BEGIN_ARG_INFO(arginfo_strptime, 0) |
903 | ZEND_ARG_INFO(0, timestamp) |
904 | ZEND_ARG_INFO(0, format) |
905 | ZEND_END_ARG_INFO() |
906 | #endif |
907 | /* }}} */ |
908 | /* {{{ dir.c */ |
909 | ZEND_BEGIN_ARG_INFO_EX(arginfo_opendir, 0, 0, 1) |
910 | ZEND_ARG_INFO(0, path) |
911 | ZEND_ARG_INFO(0, context) |
912 | ZEND_END_ARG_INFO() |
913 | |
914 | ZEND_BEGIN_ARG_INFO_EX(arginfo_dir, 0, 0, 1) |
915 | ZEND_ARG_INFO(0, directory) |
916 | ZEND_ARG_INFO(0, context) |
917 | ZEND_END_ARG_INFO() |
918 | |
919 | ZEND_BEGIN_ARG_INFO_EX(arginfo_closedir, 0, 0, 0) |
920 | ZEND_ARG_INFO(0, dir_handle) |
921 | ZEND_END_ARG_INFO() |
922 | |
923 | #if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC |
924 | ZEND_BEGIN_ARG_INFO(arginfo_chroot, 0) |
925 | ZEND_ARG_INFO(0, directory) |
926 | ZEND_END_ARG_INFO() |
927 | #endif |
928 | |
929 | ZEND_BEGIN_ARG_INFO(arginfo_chdir, 0) |
930 | ZEND_ARG_INFO(0, directory) |
931 | ZEND_END_ARG_INFO() |
932 | |
933 | ZEND_BEGIN_ARG_INFO(arginfo_getcwd, 0) |
934 | ZEND_END_ARG_INFO() |
935 | |
936 | ZEND_BEGIN_ARG_INFO_EX(arginfo_rewinddir, 0, 0, 0) |
937 | ZEND_ARG_INFO(0, dir_handle) |
938 | ZEND_END_ARG_INFO() |
939 | |
940 | ZEND_BEGIN_ARG_INFO_EX(arginfo_readdir, 0, 0, 0) |
941 | ZEND_ARG_INFO(0, dir_handle) |
942 | ZEND_END_ARG_INFO() |
943 | |
944 | #ifdef HAVE_GLOB |
945 | ZEND_BEGIN_ARG_INFO_EX(arginfo_glob, 0, 0, 1) |
946 | ZEND_ARG_INFO(0, pattern) |
947 | ZEND_ARG_INFO(0, flags) |
948 | ZEND_END_ARG_INFO() |
949 | #endif |
950 | |
951 | ZEND_BEGIN_ARG_INFO_EX(arginfo_scandir, 0, 0, 1) |
952 | ZEND_ARG_INFO(0, dir) |
953 | ZEND_ARG_INFO(0, sorting_order) |
954 | ZEND_ARG_INFO(0, context) |
955 | ZEND_END_ARG_INFO() |
956 | /* }}} */ |
957 | /* {{{ dns.c */ |
958 | ZEND_BEGIN_ARG_INFO(arginfo_gethostbyaddr, 0) |
959 | ZEND_ARG_INFO(0, ip_address) |
960 | ZEND_END_ARG_INFO() |
961 | |
962 | ZEND_BEGIN_ARG_INFO(arginfo_gethostbyname, 0) |
963 | ZEND_ARG_INFO(0, hostname) |
964 | ZEND_END_ARG_INFO() |
965 | |
966 | ZEND_BEGIN_ARG_INFO(arginfo_gethostbynamel, 0) |
967 | ZEND_ARG_INFO(0, hostname) |
968 | ZEND_END_ARG_INFO() |
969 | |
970 | #ifdef HAVE_GETHOSTNAME |
971 | ZEND_BEGIN_ARG_INFO(arginfo_gethostname, 0) |
972 | ZEND_END_ARG_INFO() |
973 | #endif |
974 | |
975 | #if defined(PHP_WIN32) || (HAVE_DNS_SEARCH_FUNC && !(defined(__BEOS__) || defined(NETWARE))) |
976 | ZEND_BEGIN_ARG_INFO_EX(arginfo_dns_check_record, 0, 0, 1) |
977 | ZEND_ARG_INFO(0, host) |
978 | ZEND_ARG_INFO(0, type) |
979 | ZEND_END_ARG_INFO() |
980 | |
981 | # if defined(PHP_WIN32) || HAVE_FULL_DNS_FUNCS |
982 | ZEND_BEGIN_ARG_INFO_EX(arginfo_dns_get_record, 0, 0, 1) |
983 | ZEND_ARG_INFO(0, hostname) |
984 | ZEND_ARG_INFO(0, type) |
985 | ZEND_ARG_ARRAY_INFO(1, authns, 1) |
986 | ZEND_ARG_ARRAY_INFO(1, addtl, 1) |
987 | ZEND_ARG_INFO(0, raw) |
988 | ZEND_END_ARG_INFO() |
989 | |
990 | ZEND_BEGIN_ARG_INFO_EX(arginfo_dns_get_mx, 0, 0, 2) |
991 | ZEND_ARG_INFO(0, hostname) |
992 | ZEND_ARG_INFO(1, mxhosts) /* ARRAY_INFO(1, mxhosts, 1) */ |
993 | ZEND_ARG_INFO(1, weight) /* ARRAY_INFO(1, weight, 1) */ |
994 | ZEND_END_ARG_INFO() |
995 | # endif |
996 | |
997 | #endif /* defined(PHP_WIN32) || (HAVE_DNS_SEARCH_FUNC && !(defined(__BEOS__) || defined(NETWARE))) */ |
998 | /* }}} */ |
999 | |
1000 | /* {{{ exec.c */ |
1001 | ZEND_BEGIN_ARG_INFO_EX(arginfo_exec, 0, 0, 1) |
1002 | ZEND_ARG_INFO(0, command) |
1003 | ZEND_ARG_INFO(1, output) /* ARRAY_INFO(1, output, 1) */ |
1004 | ZEND_ARG_INFO(1, return_value) |
1005 | ZEND_END_ARG_INFO() |
1006 | |
1007 | ZEND_BEGIN_ARG_INFO_EX(arginfo_system, 0, 0, 1) |
1008 | ZEND_ARG_INFO(0, command) |
1009 | ZEND_ARG_INFO(1, return_value) |
1010 | ZEND_END_ARG_INFO() |
1011 | |
1012 | ZEND_BEGIN_ARG_INFO_EX(arginfo_passthru, 0, 0, 1) |
1013 | ZEND_ARG_INFO(0, command) |
1014 | ZEND_ARG_INFO(1, return_value) |
1015 | ZEND_END_ARG_INFO() |
1016 | |
1017 | ZEND_BEGIN_ARG_INFO(arginfo_escapeshellcmd, 0) |
1018 | ZEND_ARG_INFO(0, command) |
1019 | ZEND_END_ARG_INFO() |
1020 | |
1021 | ZEND_BEGIN_ARG_INFO(arginfo_escapeshellarg, 0) |
1022 | ZEND_ARG_INFO(0, arg) |
1023 | ZEND_END_ARG_INFO() |
1024 | |
1025 | ZEND_BEGIN_ARG_INFO(arginfo_shell_exec, 0) |
1026 | ZEND_ARG_INFO(0, cmd) |
1027 | ZEND_END_ARG_INFO() |
1028 | |
1029 | #ifdef HAVE_NICE |
1030 | ZEND_BEGIN_ARG_INFO(arginfo_proc_nice, 0) |
1031 | ZEND_ARG_INFO(0, priority) |
1032 | ZEND_END_ARG_INFO() |
1033 | #endif |
1034 | /* }}} */ |
1035 | /* {{{ file.c */ |
1036 | ZEND_BEGIN_ARG_INFO_EX(arginfo_flock, 0, 0, 2) |
1037 | ZEND_ARG_INFO(0, fp) |
1038 | ZEND_ARG_INFO(0, operation) |
1039 | ZEND_ARG_INFO(1, wouldblock) |
1040 | ZEND_END_ARG_INFO() |
1041 | |
1042 | ZEND_BEGIN_ARG_INFO_EX(arginfo_get_meta_tags, 0, 0, 1) |
1043 | ZEND_ARG_INFO(0, filename) |
1044 | ZEND_ARG_INFO(0, use_include_path) |
1045 | ZEND_END_ARG_INFO() |
1046 | |
1047 | ZEND_BEGIN_ARG_INFO_EX(arginfo_file_get_contents, 0, 0, 1) |
1048 | ZEND_ARG_INFO(0, filename) |
1049 | ZEND_ARG_INFO(0, flags) |
1050 | ZEND_ARG_INFO(0, context) |
1051 | ZEND_ARG_INFO(0, offset) |
1052 | ZEND_ARG_INFO(0, maxlen) |
1053 | ZEND_END_ARG_INFO() |
1054 | |
1055 | ZEND_BEGIN_ARG_INFO_EX(arginfo_file_put_contents, 0, 0, 2) |
1056 | ZEND_ARG_INFO(0, filename) |
1057 | ZEND_ARG_INFO(0, data) |
1058 | ZEND_ARG_INFO(0, flags) |
1059 | ZEND_ARG_INFO(0, context) |
1060 | ZEND_END_ARG_INFO() |
1061 | |
1062 | ZEND_BEGIN_ARG_INFO_EX(arginfo_file, 0, 0, 1) |
1063 | ZEND_ARG_INFO(0, filename) |
1064 | ZEND_ARG_INFO(0, flags) |
1065 | ZEND_ARG_INFO(0, context) |
1066 | ZEND_END_ARG_INFO() |
1067 | |
1068 | ZEND_BEGIN_ARG_INFO(arginfo_tempnam, 0) |
1069 | ZEND_ARG_INFO(0, dir) |
1070 | ZEND_ARG_INFO(0, prefix) |
1071 | ZEND_END_ARG_INFO() |
1072 | |
1073 | ZEND_BEGIN_ARG_INFO(arginfo_tmpfile, 0) |
1074 | ZEND_END_ARG_INFO() |
1075 | |
1076 | ZEND_BEGIN_ARG_INFO_EX(arginfo_fopen, 0, 0, 2) |
1077 | ZEND_ARG_INFO(0, filename) |
1078 | ZEND_ARG_INFO(0, mode) |
1079 | ZEND_ARG_INFO(0, use_include_path) |
1080 | ZEND_ARG_INFO(0, context) |
1081 | ZEND_END_ARG_INFO() |
1082 | |
1083 | ZEND_BEGIN_ARG_INFO(arginfo_fclose, 0) |
1084 | ZEND_ARG_INFO(0, fp) |
1085 | ZEND_END_ARG_INFO() |
1086 | |
1087 | ZEND_BEGIN_ARG_INFO(arginfo_popen, 0) |
1088 | ZEND_ARG_INFO(0, command) |
1089 | ZEND_ARG_INFO(0, mode) |
1090 | ZEND_END_ARG_INFO() |
1091 | |
1092 | ZEND_BEGIN_ARG_INFO(arginfo_pclose, 0) |
1093 | ZEND_ARG_INFO(0, fp) |
1094 | ZEND_END_ARG_INFO() |
1095 | |
1096 | ZEND_BEGIN_ARG_INFO(arginfo_feof, 0) |
1097 | ZEND_ARG_INFO(0, fp) |
1098 | ZEND_END_ARG_INFO() |
1099 | |
1100 | ZEND_BEGIN_ARG_INFO_EX(arginfo_fgets, 0, 0, 1) |
1101 | ZEND_ARG_INFO(0, fp) |
1102 | ZEND_ARG_INFO(0, length) |
1103 | ZEND_END_ARG_INFO() |
1104 | |
1105 | ZEND_BEGIN_ARG_INFO(arginfo_fgetc, 0) |
1106 | ZEND_ARG_INFO(0, fp) |
1107 | ZEND_END_ARG_INFO() |
1108 | |
1109 | ZEND_BEGIN_ARG_INFO_EX(arginfo_fgetss, 0, 0, 1) |
1110 | ZEND_ARG_INFO(0, fp) |
1111 | ZEND_ARG_INFO(0, length) |
1112 | ZEND_ARG_INFO(0, allowable_tags) |
1113 | ZEND_END_ARG_INFO() |
1114 | |
1115 | ZEND_BEGIN_ARG_INFO_EX(arginfo_fscanf, 0, 0, 2) |
1116 | ZEND_ARG_INFO(0, stream) |
1117 | ZEND_ARG_INFO(0, format) |
1118 | ZEND_ARG_VARIADIC_INFO(1, vars) |
1119 | ZEND_END_ARG_INFO() |
1120 | |
1121 | ZEND_BEGIN_ARG_INFO_EX(arginfo_fwrite, 0, 0, 2) |
1122 | ZEND_ARG_INFO(0, fp) |
1123 | ZEND_ARG_INFO(0, str) |
1124 | ZEND_ARG_INFO(0, length) |
1125 | ZEND_END_ARG_INFO() |
1126 | |
1127 | ZEND_BEGIN_ARG_INFO(arginfo_fflush, 0) |
1128 | ZEND_ARG_INFO(0, fp) |
1129 | ZEND_END_ARG_INFO() |
1130 | |
1131 | ZEND_BEGIN_ARG_INFO(arginfo_rewind, 0) |
1132 | ZEND_ARG_INFO(0, fp) |
1133 | ZEND_END_ARG_INFO() |
1134 | |
1135 | ZEND_BEGIN_ARG_INFO(arginfo_ftell, 0) |
1136 | ZEND_ARG_INFO(0, fp) |
1137 | ZEND_END_ARG_INFO() |
1138 | |
1139 | ZEND_BEGIN_ARG_INFO_EX(arginfo_fseek, 0, 0, 2) |
1140 | ZEND_ARG_INFO(0, fp) |
1141 | ZEND_ARG_INFO(0, offset) |
1142 | ZEND_ARG_INFO(0, whence) |
1143 | ZEND_END_ARG_INFO() |
1144 | |
1145 | ZEND_BEGIN_ARG_INFO_EX(arginfo_mkdir, 0, 0, 1) |
1146 | ZEND_ARG_INFO(0, pathname) |
1147 | ZEND_ARG_INFO(0, mode) |
1148 | ZEND_ARG_INFO(0, recursive) |
1149 | ZEND_ARG_INFO(0, context) |
1150 | ZEND_END_ARG_INFO() |
1151 | |
1152 | ZEND_BEGIN_ARG_INFO_EX(arginfo_rmdir, 0, 0, 1) |
1153 | ZEND_ARG_INFO(0, dirname) |
1154 | ZEND_ARG_INFO(0, context) |
1155 | ZEND_END_ARG_INFO() |
1156 | |
1157 | ZEND_BEGIN_ARG_INFO_EX(arginfo_readfile, 0, 0, 1) |
1158 | ZEND_ARG_INFO(0, filename) |
1159 | ZEND_ARG_INFO(0, flags) |
1160 | ZEND_ARG_INFO(0, context) |
1161 | ZEND_END_ARG_INFO() |
1162 | |
1163 | ZEND_BEGIN_ARG_INFO_EX(arginfo_umask, 0, 0, 0) |
1164 | ZEND_ARG_INFO(0, mask) |
1165 | ZEND_END_ARG_INFO() |
1166 | |
1167 | ZEND_BEGIN_ARG_INFO(arginfo_fpassthru, 0) |
1168 | ZEND_ARG_INFO(0, fp) |
1169 | ZEND_END_ARG_INFO() |
1170 | |
1171 | ZEND_BEGIN_ARG_INFO_EX(arginfo_rename, 0, 0, 2) |
1172 | ZEND_ARG_INFO(0, old_name) |
1173 | ZEND_ARG_INFO(0, new_name) |
1174 | ZEND_ARG_INFO(0, context) |
1175 | ZEND_END_ARG_INFO() |
1176 | |
1177 | ZEND_BEGIN_ARG_INFO_EX(arginfo_unlink, 0, 0, 1) |
1178 | ZEND_ARG_INFO(0, filename) |
1179 | ZEND_ARG_INFO(0, context) |
1180 | ZEND_END_ARG_INFO() |
1181 | |
1182 | ZEND_BEGIN_ARG_INFO(arginfo_ftruncate, 0) |
1183 | ZEND_ARG_INFO(0, fp) |
1184 | ZEND_ARG_INFO(0, size) |
1185 | ZEND_END_ARG_INFO() |
1186 | |
1187 | ZEND_BEGIN_ARG_INFO(arginfo_fstat, 0) |
1188 | ZEND_ARG_INFO(0, fp) |
1189 | ZEND_END_ARG_INFO() |
1190 | ZEND_BEGIN_ARG_INFO_EX(arginfo_copy, 0, 0, 2) |
1191 | ZEND_ARG_INFO(0, source_file) |
1192 | ZEND_ARG_INFO(0, destination_file) |
1193 | ZEND_ARG_INFO(0, context) |
1194 | ZEND_END_ARG_INFO() |
1195 | |
1196 | ZEND_BEGIN_ARG_INFO(arginfo_fread, 0) |
1197 | ZEND_ARG_INFO(0, fp) |
1198 | ZEND_ARG_INFO(0, length) |
1199 | ZEND_END_ARG_INFO() |
1200 | |
1201 | ZEND_BEGIN_ARG_INFO_EX(arginfo_fputcsv, 0, 0, 2) |
1202 | ZEND_ARG_INFO(0, fp) |
1203 | ZEND_ARG_INFO(0, fields) /* ARRAY_INFO(0, fields, 1) */ |
1204 | ZEND_ARG_INFO(0, delimiter) |
1205 | ZEND_ARG_INFO(0, enclosure) |
1206 | ZEND_END_ARG_INFO() |
1207 | |
1208 | ZEND_BEGIN_ARG_INFO_EX(arginfo_fgetcsv, 0, 0, 1) |
1209 | ZEND_ARG_INFO(0, fp) |
1210 | ZEND_ARG_INFO(0, length) |
1211 | ZEND_ARG_INFO(0, delimiter) |
1212 | ZEND_ARG_INFO(0, enclosure) |
1213 | ZEND_ARG_INFO(0, escape) |
1214 | ZEND_END_ARG_INFO() |
1215 | |
1216 | #if (!defined(__BEOS__) && !defined(NETWARE) && HAVE_REALPATH) || defined(ZTS) |
1217 | ZEND_BEGIN_ARG_INFO(arginfo_realpath, 0) |
1218 | ZEND_ARG_INFO(0, path) |
1219 | ZEND_END_ARG_INFO() |
1220 | #endif |
1221 | |
1222 | #ifdef HAVE_FNMATCH |
1223 | ZEND_BEGIN_ARG_INFO_EX(arginfo_fnmatch, 0, 0, 2) |
1224 | ZEND_ARG_INFO(0, pattern) |
1225 | ZEND_ARG_INFO(0, filename) |
1226 | ZEND_ARG_INFO(0, flags) |
1227 | ZEND_END_ARG_INFO() |
1228 | #endif |
1229 | |
1230 | ZEND_BEGIN_ARG_INFO(arginfo_sys_get_temp_dir, 0) |
1231 | ZEND_END_ARG_INFO() |
1232 | /* }}} */ |
1233 | /* {{{ filestat.c */ |
1234 | ZEND_BEGIN_ARG_INFO(arginfo_disk_total_space, 0) |
1235 | ZEND_ARG_INFO(0, path) |
1236 | ZEND_END_ARG_INFO() |
1237 | |
1238 | ZEND_BEGIN_ARG_INFO(arginfo_disk_free_space, 0) |
1239 | ZEND_ARG_INFO(0, path) |
1240 | ZEND_END_ARG_INFO() |
1241 | |
1242 | #ifndef NETWARE |
1243 | ZEND_BEGIN_ARG_INFO(arginfo_chgrp, 0) |
1244 | ZEND_ARG_INFO(0, filename) |
1245 | ZEND_ARG_INFO(0, group) |
1246 | ZEND_END_ARG_INFO() |
1247 | |
1248 | ZEND_BEGIN_ARG_INFO(arginfo_chown, 0) |
1249 | ZEND_ARG_INFO(0, filename) |
1250 | ZEND_ARG_INFO(0, user) |
1251 | ZEND_END_ARG_INFO() |
1252 | #endif |
1253 | |
1254 | #if HAVE_LCHOWN |
1255 | ZEND_BEGIN_ARG_INFO(arginfo_lchgrp, 0) |
1256 | ZEND_ARG_INFO(0, filename) |
1257 | ZEND_ARG_INFO(0, group) |
1258 | ZEND_END_ARG_INFO() |
1259 | |
1260 | ZEND_BEGIN_ARG_INFO(arginfo_lchown, 0) |
1261 | ZEND_ARG_INFO(0, filename) |
1262 | ZEND_ARG_INFO(0, user) |
1263 | ZEND_END_ARG_INFO() |
1264 | #endif |
1265 | |
1266 | ZEND_BEGIN_ARG_INFO(arginfo_chmod, 0) |
1267 | ZEND_ARG_INFO(0, filename) |
1268 | ZEND_ARG_INFO(0, mode) |
1269 | ZEND_END_ARG_INFO() |
1270 | |
1271 | #if HAVE_UTIME |
1272 | ZEND_BEGIN_ARG_INFO_EX(arginfo_touch, 0, 0, 1) |
1273 | ZEND_ARG_INFO(0, filename) |
1274 | ZEND_ARG_INFO(0, time) |
1275 | ZEND_ARG_INFO(0, atime) |
1276 | ZEND_END_ARG_INFO() |
1277 | #endif |
1278 | |
1279 | ZEND_BEGIN_ARG_INFO_EX(arginfo_clearstatcache, 0, 0, 0) |
1280 | ZEND_ARG_INFO(0, clear_realpath_cache) |
1281 | ZEND_ARG_INFO(0, filename) |
1282 | ZEND_END_ARG_INFO() |
1283 | |
1284 | ZEND_BEGIN_ARG_INFO(arginfo_realpath_cache_size, 0) |
1285 | ZEND_END_ARG_INFO() |
1286 | |
1287 | ZEND_BEGIN_ARG_INFO(arginfo_realpath_cache_get, 0) |
1288 | ZEND_END_ARG_INFO() |
1289 | |
1290 | ZEND_BEGIN_ARG_INFO(arginfo_fileperms, 0) |
1291 | ZEND_ARG_INFO(0, filename) |
1292 | ZEND_END_ARG_INFO() |
1293 | |
1294 | ZEND_BEGIN_ARG_INFO(arginfo_fileinode, 0) |
1295 | ZEND_ARG_INFO(0, filename) |
1296 | ZEND_END_ARG_INFO() |
1297 | |
1298 | ZEND_BEGIN_ARG_INFO(arginfo_filesize, 0) |
1299 | ZEND_ARG_INFO(0, filename) |
1300 | ZEND_END_ARG_INFO() |
1301 | |
1302 | ZEND_BEGIN_ARG_INFO(arginfo_fileowner, 0) |
1303 | ZEND_ARG_INFO(0, filename) |
1304 | ZEND_END_ARG_INFO() |
1305 | |
1306 | ZEND_BEGIN_ARG_INFO(arginfo_filegroup, 0) |
1307 | ZEND_ARG_INFO(0, filename) |
1308 | ZEND_END_ARG_INFO() |
1309 | |
1310 | ZEND_BEGIN_ARG_INFO(arginfo_fileatime, 0) |
1311 | ZEND_ARG_INFO(0, filename) |
1312 | ZEND_END_ARG_INFO() |
1313 | |
1314 | ZEND_BEGIN_ARG_INFO(arginfo_filemtime, 0) |
1315 | ZEND_ARG_INFO(0, filename) |
1316 | ZEND_END_ARG_INFO() |
1317 | |
1318 | ZEND_BEGIN_ARG_INFO(arginfo_filectime, 0) |
1319 | ZEND_ARG_INFO(0, filename) |
1320 | ZEND_END_ARG_INFO() |
1321 | |
1322 | ZEND_BEGIN_ARG_INFO(arginfo_filetype, 0) |
1323 | ZEND_ARG_INFO(0, filename) |
1324 | ZEND_END_ARG_INFO() |
1325 | |
1326 | ZEND_BEGIN_ARG_INFO(arginfo_is_writable, 0) |
1327 | ZEND_ARG_INFO(0, filename) |
1328 | ZEND_END_ARG_INFO() |
1329 | |
1330 | ZEND_BEGIN_ARG_INFO(arginfo_is_readable, 0) |
1331 | ZEND_ARG_INFO(0, filename) |
1332 | ZEND_END_ARG_INFO() |
1333 | |
1334 | ZEND_BEGIN_ARG_INFO(arginfo_is_executable, 0) |
1335 | ZEND_ARG_INFO(0, filename) |
1336 | ZEND_END_ARG_INFO() |
1337 | |
1338 | ZEND_BEGIN_ARG_INFO(arginfo_is_file, 0) |
1339 | ZEND_ARG_INFO(0, filename) |
1340 | ZEND_END_ARG_INFO() |
1341 | |
1342 | ZEND_BEGIN_ARG_INFO(arginfo_is_dir, 0) |
1343 | ZEND_ARG_INFO(0, filename) |
1344 | ZEND_END_ARG_INFO() |
1345 | |
1346 | ZEND_BEGIN_ARG_INFO(arginfo_is_link, 0) |
1347 | ZEND_ARG_INFO(0, filename) |
1348 | ZEND_END_ARG_INFO() |
1349 | |
1350 | ZEND_BEGIN_ARG_INFO(arginfo_file_exists, 0) |
1351 | ZEND_ARG_INFO(0, filename) |
1352 | ZEND_END_ARG_INFO() |
1353 | |
1354 | ZEND_BEGIN_ARG_INFO(arginfo_lstat, 0) |
1355 | ZEND_ARG_INFO(0, filename) |
1356 | ZEND_END_ARG_INFO() |
1357 | |
1358 | ZEND_BEGIN_ARG_INFO(arginfo_stat, 0) |
1359 | ZEND_ARG_INFO(0, filename) |
1360 | ZEND_END_ARG_INFO() |
1361 | /* }}} */ |
1362 | /* {{{ formatted_print.c */ |
1363 | ZEND_BEGIN_ARG_INFO_EX(arginfo_sprintf, 0, 0, 2) |
1364 | ZEND_ARG_INFO(0, format) |
1365 | ZEND_ARG_VARIADIC_INFO(0, args) |
1366 | ZEND_END_ARG_INFO() |
1367 | |
1368 | ZEND_BEGIN_ARG_INFO(arginfo_vsprintf, 0) |
1369 | ZEND_ARG_INFO(0, format) |
1370 | ZEND_ARG_INFO(0, args) /* ARRAY_INFO(0, args, 1) */ |
1371 | ZEND_END_ARG_INFO() |
1372 | |
1373 | ZEND_BEGIN_ARG_INFO_EX(arginfo_printf, 0, 0, 1) |
1374 | ZEND_ARG_INFO(0, format) |
1375 | ZEND_ARG_VARIADIC_INFO(0, args) |
1376 | ZEND_END_ARG_INFO() |
1377 | |
1378 | ZEND_BEGIN_ARG_INFO(arginfo_vprintf, 0) |
1379 | ZEND_ARG_INFO(0, format) |
1380 | ZEND_ARG_INFO(0, args) /* ARRAY_INFO(0, args, 1) */ |
1381 | ZEND_END_ARG_INFO() |
1382 | |
1383 | ZEND_BEGIN_ARG_INFO_EX(arginfo_fprintf, 0, 0, 2) |
1384 | ZEND_ARG_INFO(0, stream) |
1385 | ZEND_ARG_INFO(0, format) |
1386 | ZEND_ARG_VARIADIC_INFO(0, args) |
1387 | ZEND_END_ARG_INFO() |
1388 | |
1389 | ZEND_BEGIN_ARG_INFO(arginfo_vfprintf, 0) |
1390 | ZEND_ARG_INFO(0, stream) |
1391 | ZEND_ARG_INFO(0, format) |
1392 | ZEND_ARG_INFO(0, args) /* ARRAY_INFO(0, args, 1) */ |
1393 | ZEND_END_ARG_INFO() |
1394 | /* }}} */ |
1395 | /* {{{ fsock.c */ |
1396 | ZEND_BEGIN_ARG_INFO_EX(arginfo_fsockopen, 0, 0, 2) |
1397 | ZEND_ARG_INFO(0, hostname) |
1398 | ZEND_ARG_INFO(0, port) |
1399 | ZEND_ARG_INFO(1, errno) |
1400 | ZEND_ARG_INFO(1, errstr) |
1401 | ZEND_ARG_INFO(0, timeout) |
1402 | ZEND_END_ARG_INFO() |
1403 | |
1404 | ZEND_BEGIN_ARG_INFO_EX(arginfo_pfsockopen, 0, 0, 2) |
1405 | ZEND_ARG_INFO(0, hostname) |
1406 | ZEND_ARG_INFO(0, port) |
1407 | ZEND_ARG_INFO(1, errno) |
1408 | ZEND_ARG_INFO(1, errstr) |
1409 | ZEND_ARG_INFO(0, timeout) |
1410 | ZEND_END_ARG_INFO() |
1411 | /* }}} */ |
1412 | /* {{{ ftok.c */ |
1413 | #if HAVE_FTOK |
1414 | ZEND_BEGIN_ARG_INFO(arginfo_ftok, 0) |
1415 | ZEND_ARG_INFO(0, pathname) |
1416 | ZEND_ARG_INFO(0, proj) |
1417 | ZEND_END_ARG_INFO() |
1418 | #endif |
1419 | /* }}} */ |
1420 | /* {{{ head.c */ |
1421 | ZEND_BEGIN_ARG_INFO_EX(, 0, 0, 1) |
1422 | ZEND_ARG_INFO(0, header) |
1423 | ZEND_ARG_INFO(0, replace) |
1424 | ZEND_ARG_INFO(0, http_response_code) |
1425 | ZEND_END_ARG_INFO() |
1426 | |
1427 | ZEND_BEGIN_ARG_INFO_EX(, 0, 0, 0) |
1428 | ZEND_ARG_INFO(0, name) |
1429 | ZEND_END_ARG_INFO() |
1430 | |
1431 | ZEND_BEGIN_ARG_INFO_EX(arginfo_setcookie, 0, 0, 1) |
1432 | ZEND_ARG_INFO(0, name) |
1433 | ZEND_ARG_INFO(0, value) |
1434 | ZEND_ARG_INFO(0, expires) |
1435 | ZEND_ARG_INFO(0, path) |
1436 | ZEND_ARG_INFO(0, domain) |
1437 | ZEND_ARG_INFO(0, secure) |
1438 | ZEND_ARG_INFO(0, httponly) |
1439 | ZEND_END_ARG_INFO() |
1440 | |
1441 | ZEND_BEGIN_ARG_INFO_EX(arginfo_setrawcookie, 0, 0, 1) |
1442 | ZEND_ARG_INFO(0, name) |
1443 | ZEND_ARG_INFO(0, value) |
1444 | ZEND_ARG_INFO(0, expires) |
1445 | ZEND_ARG_INFO(0, path) |
1446 | ZEND_ARG_INFO(0, domain) |
1447 | ZEND_ARG_INFO(0, secure) |
1448 | ZEND_ARG_INFO(0, httponly) |
1449 | ZEND_END_ARG_INFO() |
1450 | |
1451 | ZEND_BEGIN_ARG_INFO_EX(, 0, 0, 0) |
1452 | ZEND_ARG_INFO(1, file) |
1453 | ZEND_ARG_INFO(1, line) |
1454 | ZEND_END_ARG_INFO() |
1455 | |
1456 | ZEND_BEGIN_ARG_INFO(, 0) |
1457 | ZEND_END_ARG_INFO() |
1458 | |
1459 | ZEND_BEGIN_ARG_INFO_EX(arginfo_http_response_code, 0, 0, 0) |
1460 | ZEND_ARG_INFO(0, response_code) |
1461 | ZEND_END_ARG_INFO() |
1462 | /* }}} */ |
1463 | /* {{{ html.c */ |
1464 | ZEND_BEGIN_ARG_INFO_EX(arginfo_htmlspecialchars, 0, 0, 1) |
1465 | ZEND_ARG_INFO(0, string) |
1466 | ZEND_ARG_INFO(0, quote_style) |
1467 | ZEND_ARG_INFO(0, charset) |
1468 | ZEND_ARG_INFO(0, double_encode) |
1469 | ZEND_END_ARG_INFO() |
1470 | |
1471 | ZEND_BEGIN_ARG_INFO_EX(arginfo_htmlspecialchars_decode, 0, 0, 1) |
1472 | ZEND_ARG_INFO(0, string) |
1473 | ZEND_ARG_INFO(0, quote_style) |
1474 | ZEND_END_ARG_INFO() |
1475 | |
1476 | ZEND_BEGIN_ARG_INFO_EX(arginfo_html_entity_decode, 0, 0, 1) |
1477 | ZEND_ARG_INFO(0, string) |
1478 | ZEND_ARG_INFO(0, quote_style) |
1479 | ZEND_ARG_INFO(0, charset) |
1480 | ZEND_END_ARG_INFO() |
1481 | |
1482 | ZEND_BEGIN_ARG_INFO_EX(arginfo_htmlentities, 0, 0, 1) |
1483 | ZEND_ARG_INFO(0, string) |
1484 | ZEND_ARG_INFO(0, quote_style) |
1485 | ZEND_ARG_INFO(0, charset) |
1486 | ZEND_ARG_INFO(0, double_encode) |
1487 | ZEND_END_ARG_INFO() |
1488 | |
1489 | ZEND_BEGIN_ARG_INFO_EX(arginfo_get_html_translation_table, 0, 0, 0) |
1490 | ZEND_ARG_INFO(0, table) |
1491 | ZEND_ARG_INFO(0, quote_style) |
1492 | ZEND_END_ARG_INFO() |
1493 | |
1494 | /* }}} */ |
1495 | /* {{{ http.c */ |
1496 | ZEND_BEGIN_ARG_INFO_EX(arginfo_http_build_query, 0, 0, 1) |
1497 | ZEND_ARG_INFO(0, formdata) |
1498 | ZEND_ARG_INFO(0, prefix) |
1499 | ZEND_ARG_INFO(0, arg_separator) |
1500 | ZEND_ARG_INFO(0, enc_type) |
1501 | ZEND_END_ARG_INFO() |
1502 | /* }}} */ |
1503 | /* {{{ image.c */ |
1504 | ZEND_BEGIN_ARG_INFO(arginfo_image_type_to_mime_type, 0) |
1505 | ZEND_ARG_INFO(0, imagetype) |
1506 | ZEND_END_ARG_INFO() |
1507 | |
1508 | ZEND_BEGIN_ARG_INFO_EX(arginfo_image_type_to_extension, 0, 0, 1) |
1509 | ZEND_ARG_INFO(0, imagetype) |
1510 | ZEND_ARG_INFO(0, include_dot) |
1511 | ZEND_END_ARG_INFO() |
1512 | |
1513 | ZEND_BEGIN_ARG_INFO_EX(arginfo_getimagesize, 0, 0, 1) |
1514 | ZEND_ARG_INFO(0, imagefile) |
1515 | ZEND_ARG_INFO(1, info) /* ARRAY_INFO(1, info, 1) */ |
1516 | ZEND_END_ARG_INFO() |
1517 | /* }}} */ |
1518 | /* {{{ info.c */ |
1519 | ZEND_BEGIN_ARG_INFO_EX(arginfo_phpinfo, 0, 0, 0) |
1520 | ZEND_ARG_INFO(0, what) |
1521 | ZEND_END_ARG_INFO() |
1522 | |
1523 | ZEND_BEGIN_ARG_INFO_EX(arginfo_phpversion, 0, 0, 0) |
1524 | ZEND_ARG_INFO(0, extension) |
1525 | ZEND_END_ARG_INFO() |
1526 | |
1527 | ZEND_BEGIN_ARG_INFO_EX(arginfo_phpcredits, 0, 0, 0) |
1528 | ZEND_ARG_INFO(0, flag) |
1529 | ZEND_END_ARG_INFO() |
1530 | |
1531 | ZEND_BEGIN_ARG_INFO(arginfo_php_sapi_name, 0) |
1532 | ZEND_END_ARG_INFO() |
1533 | |
1534 | ZEND_BEGIN_ARG_INFO(arginfo_php_uname, 0) |
1535 | ZEND_END_ARG_INFO() |
1536 | |
1537 | ZEND_BEGIN_ARG_INFO(arginfo_php_ini_scanned_files, 0) |
1538 | ZEND_END_ARG_INFO() |
1539 | |
1540 | ZEND_BEGIN_ARG_INFO(arginfo_php_ini_loaded_file, 0) |
1541 | ZEND_END_ARG_INFO() |
1542 | /* }}} */ |
1543 | /* {{{ iptc.c */ |
1544 | ZEND_BEGIN_ARG_INFO_EX(arginfo_iptcembed, 0, 0, 2) |
1545 | ZEND_ARG_INFO(0, iptcdata) |
1546 | ZEND_ARG_INFO(0, jpeg_file_name) |
1547 | ZEND_ARG_INFO(0, spool) |
1548 | ZEND_END_ARG_INFO() |
1549 | |
1550 | ZEND_BEGIN_ARG_INFO(arginfo_iptcparse, 0) |
1551 | ZEND_ARG_INFO(0, iptcdata) |
1552 | ZEND_END_ARG_INFO() |
1553 | /* }}} */ |
1554 | |
1555 | /* {{{ lcg.c */ |
1556 | ZEND_BEGIN_ARG_INFO(arginfo_lcg_value, 0) |
1557 | ZEND_END_ARG_INFO() |
1558 | /* }}} */ |
1559 | |
1560 | /* {{{ levenshtein.c */ |
1561 | ZEND_BEGIN_ARG_INFO_EX(arginfo_levenshtein, 0, 0, 2) |
1562 | ZEND_ARG_INFO(0, str1) |
1563 | ZEND_ARG_INFO(0, str2) |
1564 | ZEND_ARG_INFO(0, cost_ins) |
1565 | ZEND_ARG_INFO(0, cost_rep) |
1566 | ZEND_ARG_INFO(0, cost_del) |
1567 | ZEND_END_ARG_INFO() |
1568 | /* }}} */ |
1569 | /* {{{ link.c */ |
1570 | #if defined(HAVE_SYMLINK) || defined(PHP_WIN32) |
1571 | ZEND_BEGIN_ARG_INFO(arginfo_readlink, 0) |
1572 | ZEND_ARG_INFO(0, filename) |
1573 | ZEND_END_ARG_INFO() |
1574 | |
1575 | ZEND_BEGIN_ARG_INFO(arginfo_linkinfo, 0) |
1576 | ZEND_ARG_INFO(0, filename) |
1577 | ZEND_END_ARG_INFO() |
1578 | |
1579 | ZEND_BEGIN_ARG_INFO(arginfo_symlink, 0) |
1580 | ZEND_ARG_INFO(0, target) |
1581 | ZEND_ARG_INFO(0, link) |
1582 | ZEND_END_ARG_INFO() |
1583 | |
1584 | ZEND_BEGIN_ARG_INFO(arginfo_link, 0) |
1585 | ZEND_ARG_INFO(0, target) |
1586 | ZEND_ARG_INFO(0, link) |
1587 | ZEND_END_ARG_INFO() |
1588 | #endif |
1589 | /* }}} */ |
1590 | /* {{{ mail.c */ |
1591 | ZEND_BEGIN_ARG_INFO(arginfo_ezmlm_hash, 0) |
1592 | ZEND_ARG_INFO(0, addr) |
1593 | ZEND_END_ARG_INFO() |
1594 | |
1595 | ZEND_BEGIN_ARG_INFO_EX(arginfo_mail, 0, 0, 3) |
1596 | ZEND_ARG_INFO(0, to) |
1597 | ZEND_ARG_INFO(0, subject) |
1598 | ZEND_ARG_INFO(0, message) |
1599 | ZEND_ARG_INFO(0, additional_headers) |
1600 | ZEND_ARG_INFO(0, additional_parameters) |
1601 | ZEND_END_ARG_INFO() |
1602 | /* }}} */ |
1603 | /* {{{ math.c */ |
1604 | ZEND_BEGIN_ARG_INFO(arginfo_abs, 0) |
1605 | ZEND_ARG_INFO(0, number) |
1606 | ZEND_END_ARG_INFO() |
1607 | |
1608 | ZEND_BEGIN_ARG_INFO(arginfo_ceil, 0) |
1609 | ZEND_ARG_INFO(0, number) |
1610 | ZEND_END_ARG_INFO() |
1611 | |
1612 | ZEND_BEGIN_ARG_INFO(arginfo_floor, 0) |
1613 | ZEND_ARG_INFO(0, number) |
1614 | ZEND_END_ARG_INFO() |
1615 | |
1616 | ZEND_BEGIN_ARG_INFO_EX(arginfo_round, 0, 0, 1) |
1617 | ZEND_ARG_INFO(0, number) |
1618 | ZEND_ARG_INFO(0, precision) |
1619 | ZEND_ARG_INFO(0, mode) |
1620 | ZEND_END_ARG_INFO() |
1621 | |
1622 | ZEND_BEGIN_ARG_INFO(arginfo_sin, 0) |
1623 | ZEND_ARG_INFO(0, number) |
1624 | ZEND_END_ARG_INFO() |
1625 | |
1626 | ZEND_BEGIN_ARG_INFO(arginfo_cos, 0) |
1627 | ZEND_ARG_INFO(0, number) |
1628 | ZEND_END_ARG_INFO() |
1629 | |
1630 | ZEND_BEGIN_ARG_INFO(arginfo_tan, 0) |
1631 | ZEND_ARG_INFO(0, number) |
1632 | ZEND_END_ARG_INFO() |
1633 | |
1634 | ZEND_BEGIN_ARG_INFO(arginfo_asin, 0) |
1635 | ZEND_ARG_INFO(0, number) |
1636 | ZEND_END_ARG_INFO() |
1637 | |
1638 | ZEND_BEGIN_ARG_INFO(arginfo_acos, 0) |
1639 | ZEND_ARG_INFO(0, number) |
1640 | ZEND_END_ARG_INFO() |
1641 | |
1642 | ZEND_BEGIN_ARG_INFO(arginfo_atan, 0) |
1643 | ZEND_ARG_INFO(0, number) |
1644 | ZEND_END_ARG_INFO() |
1645 | |
1646 | ZEND_BEGIN_ARG_INFO(arginfo_atan2, 0) |
1647 | ZEND_ARG_INFO(0, y) |
1648 | ZEND_ARG_INFO(0, x) |
1649 | ZEND_END_ARG_INFO() |
1650 | |
1651 | ZEND_BEGIN_ARG_INFO(arginfo_sinh, 0) |
1652 | ZEND_ARG_INFO(0, number) |
1653 | ZEND_END_ARG_INFO() |
1654 | |
1655 | ZEND_BEGIN_ARG_INFO(arginfo_cosh, 0) |
1656 | ZEND_ARG_INFO(0, number) |
1657 | ZEND_END_ARG_INFO() |
1658 | |
1659 | ZEND_BEGIN_ARG_INFO(arginfo_tanh, 0) |
1660 | ZEND_ARG_INFO(0, number) |
1661 | ZEND_END_ARG_INFO() |
1662 | |
1663 | ZEND_BEGIN_ARG_INFO(arginfo_asinh, 0) |
1664 | ZEND_ARG_INFO(0, number) |
1665 | ZEND_END_ARG_INFO() |
1666 | |
1667 | ZEND_BEGIN_ARG_INFO(arginfo_acosh, 0) |
1668 | ZEND_ARG_INFO(0, number) |
1669 | ZEND_END_ARG_INFO() |
1670 | |
1671 | ZEND_BEGIN_ARG_INFO(arginfo_atanh, 0) |
1672 | ZEND_ARG_INFO(0, number) |
1673 | ZEND_END_ARG_INFO() |
1674 | |
1675 | ZEND_BEGIN_ARG_INFO(arginfo_pi, 0) |
1676 | ZEND_END_ARG_INFO() |
1677 | |
1678 | ZEND_BEGIN_ARG_INFO(arginfo_is_finite, 0) |
1679 | ZEND_ARG_INFO(0, val) |
1680 | ZEND_END_ARG_INFO() |
1681 | |
1682 | ZEND_BEGIN_ARG_INFO(arginfo_is_infinite, 0) |
1683 | ZEND_ARG_INFO(0, val) |
1684 | ZEND_END_ARG_INFO() |
1685 | |
1686 | ZEND_BEGIN_ARG_INFO(arginfo_is_nan, 0) |
1687 | ZEND_ARG_INFO(0, val) |
1688 | ZEND_END_ARG_INFO() |
1689 | |
1690 | ZEND_BEGIN_ARG_INFO(arginfo_pow, 0) |
1691 | ZEND_ARG_INFO(0, base) |
1692 | ZEND_ARG_INFO(0, exponent) |
1693 | ZEND_END_ARG_INFO() |
1694 | |
1695 | ZEND_BEGIN_ARG_INFO(arginfo_exp, 0) |
1696 | ZEND_ARG_INFO(0, number) |
1697 | ZEND_END_ARG_INFO() |
1698 | |
1699 | ZEND_BEGIN_ARG_INFO(arginfo_expm1, 0) |
1700 | ZEND_ARG_INFO(0, number) |
1701 | ZEND_END_ARG_INFO() |
1702 | |
1703 | ZEND_BEGIN_ARG_INFO(arginfo_log1p, 0) |
1704 | ZEND_ARG_INFO(0, number) |
1705 | ZEND_END_ARG_INFO() |
1706 | |
1707 | ZEND_BEGIN_ARG_INFO_EX(arginfo_log, 0, 0, 1) |
1708 | ZEND_ARG_INFO(0, number) |
1709 | ZEND_ARG_INFO(0, base) |
1710 | ZEND_END_ARG_INFO() |
1711 | |
1712 | ZEND_BEGIN_ARG_INFO(arginfo_log10, 0) |
1713 | ZEND_ARG_INFO(0, number) |
1714 | ZEND_END_ARG_INFO() |
1715 | |
1716 | ZEND_BEGIN_ARG_INFO(arginfo_sqrt, 0) |
1717 | ZEND_ARG_INFO(0, number) |
1718 | ZEND_END_ARG_INFO() |
1719 | |
1720 | ZEND_BEGIN_ARG_INFO(arginfo_hypot, 0) |
1721 | ZEND_ARG_INFO(0, num1) |
1722 | ZEND_ARG_INFO(0, num2) |
1723 | ZEND_END_ARG_INFO() |
1724 | |
1725 | ZEND_BEGIN_ARG_INFO(arginfo_deg2rad, 0) |
1726 | ZEND_ARG_INFO(0, number) |
1727 | ZEND_END_ARG_INFO() |
1728 | |
1729 | ZEND_BEGIN_ARG_INFO(arginfo_rad2deg, 0) |
1730 | ZEND_ARG_INFO(0, number) |
1731 | ZEND_END_ARG_INFO() |
1732 | |
1733 | ZEND_BEGIN_ARG_INFO(arginfo_bindec, 0) |
1734 | ZEND_ARG_INFO(0, binary_number) |
1735 | ZEND_END_ARG_INFO() |
1736 | |
1737 | ZEND_BEGIN_ARG_INFO(arginfo_hexdec, 0) |
1738 | ZEND_ARG_INFO(0, hexadecimal_number) |
1739 | ZEND_END_ARG_INFO() |
1740 | |
1741 | ZEND_BEGIN_ARG_INFO(arginfo_octdec, 0) |
1742 | ZEND_ARG_INFO(0, octal_number) |
1743 | ZEND_END_ARG_INFO() |
1744 | |
1745 | ZEND_BEGIN_ARG_INFO(arginfo_decbin, 0) |
1746 | ZEND_ARG_INFO(0, decimal_number) |
1747 | ZEND_END_ARG_INFO() |
1748 | |
1749 | ZEND_BEGIN_ARG_INFO(arginfo_decoct, 0) |
1750 | ZEND_ARG_INFO(0, decimal_number) |
1751 | ZEND_END_ARG_INFO() |
1752 | |
1753 | ZEND_BEGIN_ARG_INFO(arginfo_dechex, 0) |
1754 | ZEND_ARG_INFO(0, decimal_number) |
1755 | ZEND_END_ARG_INFO() |
1756 | |
1757 | ZEND_BEGIN_ARG_INFO(arginfo_base_convert, 0) |
1758 | ZEND_ARG_INFO(0, number) |
1759 | ZEND_ARG_INFO(0, frombase) |
1760 | ZEND_ARG_INFO(0, tobase) |
1761 | ZEND_END_ARG_INFO() |
1762 | |
1763 | ZEND_BEGIN_ARG_INFO_EX(arginfo_number_format, 0, 0, 1) |
1764 | ZEND_ARG_INFO(0, number) |
1765 | ZEND_ARG_INFO(0, num_decimal_places) |
1766 | ZEND_ARG_INFO(0, dec_separator) |
1767 | ZEND_ARG_INFO(0, thousands_separator) |
1768 | ZEND_END_ARG_INFO() |
1769 | |
1770 | ZEND_BEGIN_ARG_INFO(arginfo_fmod, 0) |
1771 | ZEND_ARG_INFO(0, x) |
1772 | ZEND_ARG_INFO(0, y) |
1773 | ZEND_END_ARG_INFO() |
1774 | /* }}} */ |
1775 | /* {{{ md5.c */ |
1776 | ZEND_BEGIN_ARG_INFO_EX(arginfo_md5, 0, 0, 1) |
1777 | ZEND_ARG_INFO(0, str) |
1778 | ZEND_ARG_INFO(0, raw_output) |
1779 | ZEND_END_ARG_INFO() |
1780 | |
1781 | ZEND_BEGIN_ARG_INFO_EX(arginfo_md5_file, 0, 0, 1) |
1782 | ZEND_ARG_INFO(0, filename) |
1783 | ZEND_ARG_INFO(0, raw_output) |
1784 | ZEND_END_ARG_INFO() |
1785 | /* }}} */ |
1786 | /* {{{ metaphone.c */ |
1787 | ZEND_BEGIN_ARG_INFO_EX(arginfo_metaphone, 0, 0, 1) |
1788 | ZEND_ARG_INFO(0, text) |
1789 | ZEND_ARG_INFO(0, phones) |
1790 | ZEND_END_ARG_INFO() |
1791 | /* }}} */ |
1792 | /* {{{ microtime.c */ |
1793 | #ifdef HAVE_GETTIMEOFDAY |
1794 | ZEND_BEGIN_ARG_INFO_EX(arginfo_microtime, 0, 0, 0) |
1795 | ZEND_ARG_INFO(0, get_as_float) |
1796 | ZEND_END_ARG_INFO() |
1797 | |
1798 | ZEND_BEGIN_ARG_INFO_EX(arginfo_gettimeofday, 0, 0, 0) |
1799 | ZEND_ARG_INFO(0, get_as_float) |
1800 | ZEND_END_ARG_INFO() |
1801 | #endif |
1802 | |
1803 | #ifdef HAVE_GETRUSAGE |
1804 | ZEND_BEGIN_ARG_INFO_EX(arginfo_getrusage, 0, 0, 0) |
1805 | ZEND_ARG_INFO(0, who) |
1806 | ZEND_END_ARG_INFO() |
1807 | #endif |
1808 | /* }}} */ |
1809 | /* {{{ pack.c */ |
1810 | ZEND_BEGIN_ARG_INFO_EX(arginfo_pack, 0, 0, 2) |
1811 | ZEND_ARG_INFO(0, format) |
1812 | ZEND_ARG_VARIADIC_INFO(0, args) |
1813 | ZEND_END_ARG_INFO() |
1814 | |
1815 | ZEND_BEGIN_ARG_INFO(arginfo_unpack, 0) |
1816 | ZEND_ARG_INFO(0, format) |
1817 | ZEND_ARG_INFO(0, input) |
1818 | ZEND_END_ARG_INFO() |
1819 | /* }}} */ |
1820 | /* {{{ pageinfo.c */ |
1821 | ZEND_BEGIN_ARG_INFO(arginfo_getmyuid, 0) |
1822 | ZEND_END_ARG_INFO() |
1823 | |
1824 | ZEND_BEGIN_ARG_INFO(arginfo_getmygid, 0) |
1825 | ZEND_END_ARG_INFO() |
1826 | |
1827 | ZEND_BEGIN_ARG_INFO(arginfo_getmypid, 0) |
1828 | ZEND_END_ARG_INFO() |
1829 | |
1830 | ZEND_BEGIN_ARG_INFO(arginfo_getmyinode, 0) |
1831 | ZEND_END_ARG_INFO() |
1832 | |
1833 | ZEND_BEGIN_ARG_INFO(arginfo_getlastmod, 0) |
1834 | ZEND_END_ARG_INFO() |
1835 | /* }}} */ |
1836 | /* {{{ password.c */ |
1837 | ZEND_BEGIN_ARG_INFO_EX(arginfo_password_hash, 0, 0, 2) |
1838 | ZEND_ARG_INFO(0, password) |
1839 | ZEND_ARG_INFO(0, algo) |
1840 | ZEND_ARG_INFO(0, options) |
1841 | ZEND_END_ARG_INFO() |
1842 | ZEND_BEGIN_ARG_INFO_EX(arginfo_password_get_info, 0, 0, 1) |
1843 | ZEND_ARG_INFO(0, hash) |
1844 | ZEND_END_ARG_INFO() |
1845 | ZEND_BEGIN_ARG_INFO_EX(arginfo_password_needs_rehash, 0, 0, 2) |
1846 | ZEND_ARG_INFO(0, hash) |
1847 | ZEND_ARG_INFO(0, algo) |
1848 | ZEND_ARG_INFO(0, options) |
1849 | ZEND_END_ARG_INFO() |
1850 | ZEND_BEGIN_ARG_INFO_EX(arginfo_password_verify, 0, 0, 2) |
1851 | ZEND_ARG_INFO(0, password) |
1852 | ZEND_ARG_INFO(0, hash) |
1853 | ZEND_END_ARG_INFO() |
1854 | /* }}} */ |
1855 | /* {{{ proc_open.c */ |
1856 | #ifdef PHP_CAN_SUPPORT_PROC_OPEN |
1857 | ZEND_BEGIN_ARG_INFO_EX(arginfo_proc_terminate, 0, 0, 1) |
1858 | ZEND_ARG_INFO(0, process) |
1859 | ZEND_ARG_INFO(0, signal) |
1860 | ZEND_END_ARG_INFO() |
1861 | |
1862 | ZEND_BEGIN_ARG_INFO(arginfo_proc_close, 0) |
1863 | ZEND_ARG_INFO(0, process) |
1864 | ZEND_END_ARG_INFO() |
1865 | |
1866 | ZEND_BEGIN_ARG_INFO(arginfo_proc_get_status, 0) |
1867 | ZEND_ARG_INFO(0, process) |
1868 | ZEND_END_ARG_INFO() |
1869 | |
1870 | ZEND_BEGIN_ARG_INFO_EX(arginfo_proc_open, 0, 0, 3) |
1871 | ZEND_ARG_INFO(0, command) |
1872 | ZEND_ARG_INFO(0, descriptorspec) /* ARRAY_INFO(0, descriptorspec, 1) */ |
1873 | ZEND_ARG_INFO(1, pipes) /* ARRAY_INFO(1, pipes, 1) */ |
1874 | ZEND_ARG_INFO(0, cwd) |
1875 | ZEND_ARG_INFO(0, env) /* ARRAY_INFO(0, env, 1) */ |
1876 | ZEND_ARG_INFO(0, other_options) /* ARRAY_INFO(0, other_options, 1) */ |
1877 | ZEND_END_ARG_INFO() |
1878 | #endif |
1879 | /* }}} */ |
1880 | /* {{{ quot_print.c */ |
1881 | ZEND_BEGIN_ARG_INFO(arginfo_quoted_printable_decode, 0) |
1882 | ZEND_ARG_INFO(0, str) |
1883 | ZEND_END_ARG_INFO() |
1884 | /* }}} */ |
1885 | /* {{{ quot_print.c */ |
1886 | ZEND_BEGIN_ARG_INFO(arginfo_quoted_printable_encode, 0) |
1887 | ZEND_ARG_INFO(0, str) |
1888 | ZEND_END_ARG_INFO() |
1889 | /* }}} */ |
1890 | /* {{{ rand.c */ |
1891 | ZEND_BEGIN_ARG_INFO_EX(arginfo_srand, 0, 0, 0) |
1892 | ZEND_ARG_INFO(0, seed) |
1893 | ZEND_END_ARG_INFO() |
1894 | |
1895 | ZEND_BEGIN_ARG_INFO_EX(arginfo_mt_srand, 0, 0, 0) |
1896 | ZEND_ARG_INFO(0, seed) |
1897 | ZEND_END_ARG_INFO() |
1898 | |
1899 | ZEND_BEGIN_ARG_INFO_EX(arginfo_rand, 0, 0, 0) |
1900 | ZEND_ARG_INFO(0, min) |
1901 | ZEND_ARG_INFO(0, max) |
1902 | ZEND_END_ARG_INFO() |
1903 | |
1904 | ZEND_BEGIN_ARG_INFO_EX(arginfo_mt_rand, 0, 0, 0) |
1905 | ZEND_ARG_INFO(0, min) |
1906 | ZEND_ARG_INFO(0, max) |
1907 | ZEND_END_ARG_INFO() |
1908 | |
1909 | ZEND_BEGIN_ARG_INFO(arginfo_getrandmax, 0) |
1910 | ZEND_END_ARG_INFO() |
1911 | |
1912 | ZEND_BEGIN_ARG_INFO(arginfo_mt_getrandmax, 0) |
1913 | ZEND_END_ARG_INFO() |
1914 | /* }}} */ |
1915 | /* {{{ sha1.c */ |
1916 | ZEND_BEGIN_ARG_INFO_EX(arginfo_sha1, 0, 0, 1) |
1917 | ZEND_ARG_INFO(0, str) |
1918 | ZEND_ARG_INFO(0, raw_output) |
1919 | ZEND_END_ARG_INFO() |
1920 | |
1921 | ZEND_BEGIN_ARG_INFO_EX(arginfo_sha1_file, 0, 0, 1) |
1922 | ZEND_ARG_INFO(0, filename) |
1923 | ZEND_ARG_INFO(0, raw_output) |
1924 | ZEND_END_ARG_INFO() |
1925 | /* }}} */ |
1926 | /* {{{ soundex.c */ |
1927 | ZEND_BEGIN_ARG_INFO(arginfo_soundex, 0) |
1928 | ZEND_ARG_INFO(0, str) |
1929 | ZEND_END_ARG_INFO() |
1930 | /* }}} */ |
1931 | /* {{{ streamsfuncs.c */ |
1932 | #if HAVE_SOCKETPAIR |
1933 | ZEND_BEGIN_ARG_INFO(arginfo_stream_socket_pair, 0) |
1934 | ZEND_ARG_INFO(0, domain) |
1935 | ZEND_ARG_INFO(0, type) |
1936 | ZEND_ARG_INFO(0, protocol) |
1937 | ZEND_END_ARG_INFO() |
1938 | #endif |
1939 | |
1940 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_client, 0, 0, 1) |
1941 | ZEND_ARG_INFO(0, remoteaddress) |
1942 | ZEND_ARG_INFO(1, errcode) |
1943 | ZEND_ARG_INFO(1, errstring) |
1944 | ZEND_ARG_INFO(0, timeout) |
1945 | ZEND_ARG_INFO(0, flags) |
1946 | ZEND_ARG_INFO(0, context) |
1947 | ZEND_END_ARG_INFO() |
1948 | |
1949 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_server, 0, 0, 1) |
1950 | ZEND_ARG_INFO(0, localaddress) |
1951 | ZEND_ARG_INFO(1, errcode) |
1952 | ZEND_ARG_INFO(1, errstring) |
1953 | ZEND_ARG_INFO(0, flags) |
1954 | ZEND_ARG_INFO(0, context) |
1955 | ZEND_END_ARG_INFO() |
1956 | |
1957 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_accept, 0, 0, 1) |
1958 | ZEND_ARG_INFO(0, serverstream) |
1959 | ZEND_ARG_INFO(0, timeout) |
1960 | ZEND_ARG_INFO(1, peername) |
1961 | ZEND_END_ARG_INFO() |
1962 | |
1963 | ZEND_BEGIN_ARG_INFO(arginfo_stream_socket_get_name, 0) |
1964 | ZEND_ARG_INFO(0, stream) |
1965 | ZEND_ARG_INFO(0, want_peer) |
1966 | ZEND_END_ARG_INFO() |
1967 | |
1968 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_sendto, 0, 0, 2) |
1969 | ZEND_ARG_INFO(0, stream) |
1970 | ZEND_ARG_INFO(0, data) |
1971 | ZEND_ARG_INFO(0, flags) |
1972 | ZEND_ARG_INFO(0, target_addr) |
1973 | ZEND_END_ARG_INFO() |
1974 | |
1975 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_recvfrom, 0, 0, 2) |
1976 | ZEND_ARG_INFO(0, stream) |
1977 | ZEND_ARG_INFO(0, amount) |
1978 | ZEND_ARG_INFO(0, flags) |
1979 | ZEND_ARG_INFO(1, remote_addr) |
1980 | ZEND_END_ARG_INFO() |
1981 | |
1982 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_get_contents, 0, 0, 1) |
1983 | ZEND_ARG_INFO(0, source) |
1984 | ZEND_ARG_INFO(0, maxlen) |
1985 | ZEND_ARG_INFO(0, offset) |
1986 | ZEND_END_ARG_INFO() |
1987 | |
1988 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_copy_to_stream, 0, 0, 2) |
1989 | ZEND_ARG_INFO(0, source) |
1990 | ZEND_ARG_INFO(0, dest) |
1991 | ZEND_ARG_INFO(0, maxlen) |
1992 | ZEND_ARG_INFO(0, pos) |
1993 | ZEND_END_ARG_INFO() |
1994 | |
1995 | ZEND_BEGIN_ARG_INFO(arginfo_stream_get_meta_data, 0) |
1996 | ZEND_ARG_INFO(0, fp) |
1997 | ZEND_END_ARG_INFO() |
1998 | |
1999 | ZEND_BEGIN_ARG_INFO(arginfo_stream_get_transports, 0) |
2000 | ZEND_END_ARG_INFO() |
2001 | |
2002 | ZEND_BEGIN_ARG_INFO(arginfo_stream_get_wrappers, 0) |
2003 | ZEND_END_ARG_INFO() |
2004 | |
2005 | ZEND_BEGIN_ARG_INFO(arginfo_stream_resolve_include_path, 0) |
2006 | ZEND_ARG_INFO(0, filename) |
2007 | ZEND_END_ARG_INFO() |
2008 | |
2009 | ZEND_BEGIN_ARG_INFO(arginfo_stream_is_local, 0) |
2010 | ZEND_ARG_INFO(0, stream) |
2011 | ZEND_END_ARG_INFO() |
2012 | |
2013 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_supports_lock, 0, 0, 1) |
2014 | ZEND_ARG_INFO(0, stream) |
2015 | ZEND_END_ARG_INFO() |
2016 | |
2017 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_select, 0, 0, 4) |
2018 | ZEND_ARG_INFO(1, read_streams) /* ARRAY_INFO(1, read_streams, 1) */ |
2019 | ZEND_ARG_INFO(1, write_streams) /* ARRAY_INFO(1, write_streams, 1) */ |
2020 | ZEND_ARG_INFO(1, except_streams) /* ARRAY_INFO(1, except_streams, 1) */ |
2021 | ZEND_ARG_INFO(0, tv_sec) |
2022 | ZEND_ARG_INFO(0, tv_usec) |
2023 | ZEND_END_ARG_INFO() |
2024 | |
2025 | ZEND_BEGIN_ARG_INFO(arginfo_stream_context_get_options, 0) |
2026 | ZEND_ARG_INFO(0, stream_or_context) |
2027 | ZEND_END_ARG_INFO() |
2028 | |
2029 | ZEND_BEGIN_ARG_INFO(arginfo_stream_context_set_option, 0) |
2030 | ZEND_ARG_INFO(0, stream_or_context) |
2031 | ZEND_ARG_INFO(0, wrappername) |
2032 | ZEND_ARG_INFO(0, optionname) |
2033 | ZEND_ARG_INFO(0, value) |
2034 | ZEND_END_ARG_INFO() |
2035 | |
2036 | ZEND_BEGIN_ARG_INFO(arginfo_stream_context_set_params, 0) |
2037 | ZEND_ARG_INFO(0, stream_or_context) |
2038 | ZEND_ARG_INFO(0, options) /* ARRAY_INFO(0, options, 1) */ |
2039 | ZEND_END_ARG_INFO() |
2040 | |
2041 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_context_get_params, 0, ZEND_RETURN_VALUE, 1) |
2042 | ZEND_ARG_INFO(0, stream_or_context) |
2043 | ZEND_END_ARG_INFO() |
2044 | |
2045 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_context_get_default, 0, 0, 0) |
2046 | ZEND_ARG_INFO(0, options) /* ARRAY_INFO(0, options, 1) */ |
2047 | ZEND_END_ARG_INFO() |
2048 | |
2049 | ZEND_BEGIN_ARG_INFO(arginfo_stream_context_set_default, 0) |
2050 | ZEND_ARG_INFO(0, options) |
2051 | ZEND_END_ARG_INFO() |
2052 | |
2053 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_context_create, 0, 0, 0) |
2054 | ZEND_ARG_INFO(0, options) /* ARRAY_INFO(0, options, 1) */ |
2055 | ZEND_ARG_INFO(0, params) /* ARRAY_INFO(0, params, 1) */ |
2056 | ZEND_END_ARG_INFO() |
2057 | |
2058 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_filter_prepend, 0, 0, 2) |
2059 | ZEND_ARG_INFO(0, stream) |
2060 | ZEND_ARG_INFO(0, filtername) |
2061 | ZEND_ARG_INFO(0, read_write) |
2062 | ZEND_ARG_INFO(0, filterparams) |
2063 | ZEND_END_ARG_INFO() |
2064 | |
2065 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_filter_append, 0, 0, 2) |
2066 | ZEND_ARG_INFO(0, stream) |
2067 | ZEND_ARG_INFO(0, filtername) |
2068 | ZEND_ARG_INFO(0, read_write) |
2069 | ZEND_ARG_INFO(0, filterparams) |
2070 | ZEND_END_ARG_INFO() |
2071 | |
2072 | ZEND_BEGIN_ARG_INFO(arginfo_stream_filter_remove, 0) |
2073 | ZEND_ARG_INFO(0, stream_filter) |
2074 | ZEND_END_ARG_INFO() |
2075 | |
2076 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_get_line, 0, 0, 2) |
2077 | ZEND_ARG_INFO(0, stream) |
2078 | ZEND_ARG_INFO(0, maxlen) |
2079 | ZEND_ARG_INFO(0, ending) |
2080 | ZEND_END_ARG_INFO() |
2081 | |
2082 | ZEND_BEGIN_ARG_INFO(arginfo_stream_set_blocking, 0) |
2083 | ZEND_ARG_INFO(0, socket) |
2084 | ZEND_ARG_INFO(0, mode) |
2085 | ZEND_END_ARG_INFO() |
2086 | |
2087 | #if HAVE_SYS_TIME_H || defined(PHP_WIN32) |
2088 | ZEND_BEGIN_ARG_INFO(arginfo_stream_set_timeout, 0) |
2089 | ZEND_ARG_INFO(0, stream) |
2090 | ZEND_ARG_INFO(0, seconds) |
2091 | ZEND_ARG_INFO(0, microseconds) |
2092 | ZEND_END_ARG_INFO() |
2093 | #endif |
2094 | |
2095 | ZEND_BEGIN_ARG_INFO(arginfo_stream_set_read_buffer, 0) |
2096 | ZEND_ARG_INFO(0, fp) |
2097 | ZEND_ARG_INFO(0, buffer) |
2098 | ZEND_END_ARG_INFO() |
2099 | |
2100 | ZEND_BEGIN_ARG_INFO(arginfo_stream_set_write_buffer, 0) |
2101 | ZEND_ARG_INFO(0, fp) |
2102 | ZEND_ARG_INFO(0, buffer) |
2103 | ZEND_END_ARG_INFO() |
2104 | |
2105 | ZEND_BEGIN_ARG_INFO(arginfo_stream_set_chunk_size, 0) |
2106 | ZEND_ARG_INFO(0, fp) |
2107 | ZEND_ARG_INFO(0, chunk_size) |
2108 | ZEND_END_ARG_INFO() |
2109 | |
2110 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stream_socket_enable_crypto, 0, 0, 2) |
2111 | ZEND_ARG_INFO(0, stream) |
2112 | ZEND_ARG_INFO(0, enable) |
2113 | ZEND_ARG_INFO(0, cryptokind) |
2114 | ZEND_ARG_INFO(0, sessionstream) |
2115 | ZEND_END_ARG_INFO() |
2116 | |
2117 | #ifdef HAVE_SHUTDOWN |
2118 | ZEND_BEGIN_ARG_INFO(arginfo_stream_socket_shutdown, 0) |
2119 | ZEND_ARG_INFO(0, stream) |
2120 | ZEND_ARG_INFO(0, how) |
2121 | ZEND_END_ARG_INFO() |
2122 | #endif |
2123 | /* }}} */ |
2124 | /* {{{ string.c */ |
2125 | ZEND_BEGIN_ARG_INFO(arginfo_bin2hex, 0) |
2126 | ZEND_ARG_INFO(0, data) |
2127 | ZEND_END_ARG_INFO() |
2128 | |
2129 | ZEND_BEGIN_ARG_INFO(arginfo_hex2bin, 0) |
2130 | ZEND_ARG_INFO(0, data) |
2131 | ZEND_END_ARG_INFO() |
2132 | |
2133 | ZEND_BEGIN_ARG_INFO_EX(arginfo_strspn, 0, 0, 2) |
2134 | ZEND_ARG_INFO(0, str) |
2135 | ZEND_ARG_INFO(0, mask) |
2136 | ZEND_ARG_INFO(0, start) |
2137 | ZEND_ARG_INFO(0, len) |
2138 | ZEND_END_ARG_INFO() |
2139 | |
2140 | ZEND_BEGIN_ARG_INFO_EX(arginfo_strcspn, 0, 0, 2) |
2141 | ZEND_ARG_INFO(0, str) |
2142 | ZEND_ARG_INFO(0, mask) |
2143 | ZEND_ARG_INFO(0, start) |
2144 | ZEND_ARG_INFO(0, len) |
2145 | ZEND_END_ARG_INFO() |
2146 | |
2147 | #if HAVE_NL_LANGINFO |
2148 | ZEND_BEGIN_ARG_INFO(arginfo_nl_langinfo, 0) |
2149 | ZEND_ARG_INFO(0, item) |
2150 | ZEND_END_ARG_INFO() |
2151 | #endif |
2152 | |
2153 | #ifdef HAVE_STRCOLL |
2154 | ZEND_BEGIN_ARG_INFO(arginfo_strcoll, 0) |
2155 | ZEND_ARG_INFO(0, str1) |
2156 | ZEND_ARG_INFO(0, str2) |
2157 | ZEND_END_ARG_INFO() |
2158 | #endif |
2159 | |
2160 | ZEND_BEGIN_ARG_INFO_EX(arginfo_trim, 0, 0, 1) |
2161 | ZEND_ARG_INFO(0, str) |
2162 | ZEND_ARG_INFO(0, character_mask) |
2163 | ZEND_END_ARG_INFO() |
2164 | |
2165 | ZEND_BEGIN_ARG_INFO_EX(arginfo_rtrim, 0, 0, 1) |
2166 | ZEND_ARG_INFO(0, str) |
2167 | ZEND_ARG_INFO(0, character_mask) |
2168 | ZEND_END_ARG_INFO() |
2169 | |
2170 | ZEND_BEGIN_ARG_INFO_EX(arginfo_ltrim, 0, 0, 1) |
2171 | ZEND_ARG_INFO(0, str) |
2172 | ZEND_ARG_INFO(0, character_mask) |
2173 | ZEND_END_ARG_INFO() |
2174 | |
2175 | ZEND_BEGIN_ARG_INFO_EX(arginfo_wordwrap, 0, 0, 1) |
2176 | ZEND_ARG_INFO(0, str) |
2177 | ZEND_ARG_INFO(0, width) |
2178 | ZEND_ARG_INFO(0, break) |
2179 | ZEND_ARG_INFO(0, cut) |
2180 | ZEND_END_ARG_INFO() |
2181 | |
2182 | ZEND_BEGIN_ARG_INFO_EX(arginfo_explode, 0, 0, 2) |
2183 | ZEND_ARG_INFO(0, separator) |
2184 | ZEND_ARG_INFO(0, str) |
2185 | ZEND_ARG_INFO(0, limit) |
2186 | ZEND_END_ARG_INFO() |
2187 | |
2188 | ZEND_BEGIN_ARG_INFO(arginfo_implode, 0) |
2189 | ZEND_ARG_INFO(0, glue) |
2190 | ZEND_ARG_INFO(0, pieces) |
2191 | ZEND_END_ARG_INFO() |
2192 | |
2193 | ZEND_BEGIN_ARG_INFO(arginfo_strtok, 0) |
2194 | ZEND_ARG_INFO(0, str) |
2195 | ZEND_ARG_INFO(0, token) |
2196 | ZEND_END_ARG_INFO() |
2197 | |
2198 | ZEND_BEGIN_ARG_INFO(arginfo_strtoupper, 0) |
2199 | ZEND_ARG_INFO(0, str) |
2200 | ZEND_END_ARG_INFO() |
2201 | |
2202 | ZEND_BEGIN_ARG_INFO(arginfo_strtolower, 0) |
2203 | ZEND_ARG_INFO(0, str) |
2204 | ZEND_END_ARG_INFO() |
2205 | |
2206 | ZEND_BEGIN_ARG_INFO_EX(arginfo_basename, 0, 0, 1) |
2207 | ZEND_ARG_INFO(0, path) |
2208 | ZEND_ARG_INFO(0, suffix) |
2209 | ZEND_END_ARG_INFO() |
2210 | |
2211 | ZEND_BEGIN_ARG_INFO(arginfo_dirname, 0) |
2212 | ZEND_ARG_INFO(0, path) |
2213 | ZEND_END_ARG_INFO() |
2214 | |
2215 | ZEND_BEGIN_ARG_INFO_EX(arginfo_pathinfo, 0, 0, 1) |
2216 | ZEND_ARG_INFO(0, path) |
2217 | ZEND_ARG_INFO(0, options) |
2218 | ZEND_END_ARG_INFO() |
2219 | |
2220 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stristr, 0, 0, 2) |
2221 | ZEND_ARG_INFO(0, haystack) |
2222 | ZEND_ARG_INFO(0, needle) |
2223 | ZEND_ARG_INFO(0, part) |
2224 | ZEND_END_ARG_INFO() |
2225 | |
2226 | ZEND_BEGIN_ARG_INFO_EX(arginfo_strstr, 0, 0, 2) |
2227 | ZEND_ARG_INFO(0, haystack) |
2228 | ZEND_ARG_INFO(0, needle) |
2229 | ZEND_ARG_INFO(0, part) |
2230 | ZEND_END_ARG_INFO() |
2231 | |
2232 | ZEND_BEGIN_ARG_INFO_EX(arginfo_strpos, 0, 0, 2) |
2233 | ZEND_ARG_INFO(0, haystack) |
2234 | ZEND_ARG_INFO(0, needle) |
2235 | ZEND_ARG_INFO(0, offset) |
2236 | ZEND_END_ARG_INFO() |
2237 | |
2238 | ZEND_BEGIN_ARG_INFO_EX(arginfo_stripos, 0, 0, 2) |
2239 | ZEND_ARG_INFO(0, haystack) |
2240 | ZEND_ARG_INFO(0, needle) |
2241 | ZEND_ARG_INFO(0, offset) |
2242 | ZEND_END_ARG_INFO() |
2243 | |
2244 | ZEND_BEGIN_ARG_INFO_EX(arginfo_strrpos, 0, 0, 2) |
2245 | ZEND_ARG_INFO(0, haystack) |
2246 | ZEND_ARG_INFO(0, needle) |
2247 | ZEND_ARG_INFO(0, offset) |
2248 | ZEND_END_ARG_INFO() |
2249 | |
2250 | ZEND_BEGIN_ARG_INFO_EX(arginfo_strripos, 0, 0, 2) |
2251 | ZEND_ARG_INFO(0, haystack) |
2252 | ZEND_ARG_INFO(0, needle) |
2253 | ZEND_ARG_INFO(0, offset) |
2254 | ZEND_END_ARG_INFO() |
2255 | |
2256 | ZEND_BEGIN_ARG_INFO(arginfo_strrchr, 0) |
2257 | ZEND_ARG_INFO(0, haystack) |
2258 | ZEND_ARG_INFO(0, needle) |
2259 | ZEND_END_ARG_INFO() |
2260 | |
2261 | ZEND_BEGIN_ARG_INFO_EX(arginfo_chunk_split, 0, 0, 1) |
2262 | ZEND_ARG_INFO(0, str) |
2263 | ZEND_ARG_INFO(0, chunklen) |
2264 | ZEND_ARG_INFO(0, ending) |
2265 | ZEND_END_ARG_INFO() |
2266 | |
2267 | ZEND_BEGIN_ARG_INFO_EX(arginfo_substr, 0, 0, 2) |
2268 | ZEND_ARG_INFO(0, str) |
2269 | ZEND_ARG_INFO(0, start) |
2270 | ZEND_ARG_INFO(0, length) |
2271 | ZEND_END_ARG_INFO() |
2272 | |
2273 | ZEND_BEGIN_ARG_INFO_EX(arginfo_substr_replace, 0, 0, 3) |
2274 | ZEND_ARG_INFO(0, str) |
2275 | ZEND_ARG_INFO(0, replace) |
2276 | ZEND_ARG_INFO(0, start) |
2277 | ZEND_ARG_INFO(0, length) |
2278 | ZEND_END_ARG_INFO() |
2279 | |
2280 | ZEND_BEGIN_ARG_INFO(arginfo_quotemeta, 0) |
2281 | ZEND_ARG_INFO(0, str) |
2282 | ZEND_END_ARG_INFO() |
2283 | |
2284 | ZEND_BEGIN_ARG_INFO(arginfo_ord, 0) |
2285 | ZEND_ARG_INFO(0, character) |
2286 | ZEND_END_ARG_INFO() |
2287 | |
2288 | ZEND_BEGIN_ARG_INFO(arginfo_chr, 0) |
2289 | ZEND_ARG_INFO(0, codepoint) |
2290 | ZEND_END_ARG_INFO() |
2291 | |
2292 | ZEND_BEGIN_ARG_INFO(arginfo_ucfirst, 0) |
2293 | ZEND_ARG_INFO(0, str) |
2294 | ZEND_END_ARG_INFO() |
2295 | |
2296 | ZEND_BEGIN_ARG_INFO(arginfo_lcfirst, 0) |
2297 | ZEND_ARG_INFO(0, str) |
2298 | ZEND_END_ARG_INFO() |
2299 | |
2300 | ZEND_BEGIN_ARG_INFO_EX(arginfo_ucwords, 0, 0, 1) |
2301 | ZEND_ARG_INFO(0, str) |
2302 | ZEND_ARG_INFO(0, delimiters) |
2303 | ZEND_END_ARG_INFO() |
2304 | |
2305 | ZEND_BEGIN_ARG_INFO_EX(arginfo_strtr, 0, 0, 2) |
2306 | ZEND_ARG_INFO(0, str) |
2307 | ZEND_ARG_INFO(0, from) |
2308 | ZEND_ARG_INFO(0, to) |
2309 | ZEND_END_ARG_INFO() |
2310 | |
2311 | ZEND_BEGIN_ARG_INFO(arginfo_strrev, 0) |
2312 | ZEND_ARG_INFO(0, str) |
2313 | ZEND_END_ARG_INFO() |
2314 | |
2315 | ZEND_BEGIN_ARG_INFO_EX(arginfo_similar_text, 0, 0, 2) |
2316 | ZEND_ARG_INFO(0, str1) |
2317 | ZEND_ARG_INFO(0, str2) |
2318 | ZEND_ARG_INFO(1, percent) |
2319 | ZEND_END_ARG_INFO() |
2320 | |
2321 | ZEND_BEGIN_ARG_INFO(arginfo_addcslashes, 0) |
2322 | ZEND_ARG_INFO(0, str) |
2323 | ZEND_ARG_INFO(0, charlist) |
2324 | ZEND_END_ARG_INFO() |
2325 | |
2326 | ZEND_BEGIN_ARG_INFO(arginfo_addslashes, 0) |
2327 | ZEND_ARG_INFO(0, str) |
2328 | ZEND_END_ARG_INFO() |
2329 | |
2330 | ZEND_BEGIN_ARG_INFO(arginfo_stripcslashes, 0) |
2331 | ZEND_ARG_INFO(0, str) |
2332 | ZEND_END_ARG_INFO() |
2333 | |
2334 | ZEND_BEGIN_ARG_INFO(arginfo_stripslashes, 0) |
2335 | ZEND_ARG_INFO(0, str) |
2336 | ZEND_END_ARG_INFO() |
2337 | |
2338 | ZEND_BEGIN_ARG_INFO_EX(arginfo_str_replace, 0, 0, 3) |
2339 | ZEND_ARG_INFO(0, search) |
2340 | ZEND_ARG_INFO(0, replace) |
2341 | ZEND_ARG_INFO(0, subject) |
2342 | ZEND_ARG_INFO(1, replace_count) |
2343 | ZEND_END_ARG_INFO() |
2344 | |
2345 | ZEND_BEGIN_ARG_INFO_EX(arginfo_str_ireplace, 0, 0, 3) |
2346 | ZEND_ARG_INFO(0, search) |
2347 | ZEND_ARG_INFO(0, replace) |
2348 | ZEND_ARG_INFO(0, subject) |
2349 | ZEND_ARG_INFO(1, replace_count) |
2350 | ZEND_END_ARG_INFO() |
2351 | |
2352 | ZEND_BEGIN_ARG_INFO_EX(arginfo_hebrev, 0, 0, 1) |
2353 | ZEND_ARG_INFO(0, str) |
2354 | ZEND_ARG_INFO(0, max_chars_per_line) |
2355 | ZEND_END_ARG_INFO() |
2356 | |
2357 | ZEND_BEGIN_ARG_INFO_EX(arginfo_hebrevc, 0, 0, 1) |
2358 | ZEND_ARG_INFO(0, str) |
2359 | ZEND_ARG_INFO(0, max_chars_per_line) |
2360 | ZEND_END_ARG_INFO() |
2361 | |
2362 | ZEND_BEGIN_ARG_INFO_EX(arginfo_nl2br, 0, 0, 1) |
2363 | ZEND_ARG_INFO(0, str) |
2364 | ZEND_ARG_INFO(0, is_xhtml) |
2365 | ZEND_END_ARG_INFO() |
2366 | |
2367 | ZEND_BEGIN_ARG_INFO_EX(arginfo_strip_tags, 0, 0, 1) |
2368 | ZEND_ARG_INFO(0, str) |
2369 | ZEND_ARG_INFO(0, allowable_tags) |
2370 | ZEND_END_ARG_INFO() |
2371 | |
2372 | ZEND_BEGIN_ARG_INFO_EX(arginfo_setlocale, 0, 0, 2) |
2373 | ZEND_ARG_INFO(0, category) |
2374 | ZEND_ARG_VARIADIC_INFO(0, locales) |
2375 | ZEND_END_ARG_INFO() |
2376 | |
2377 | ZEND_BEGIN_ARG_INFO_EX(arginfo_parse_str, 0, 0, 1) |
2378 | ZEND_ARG_INFO(0, encoded_string) |
2379 | ZEND_ARG_INFO(1, result) |
2380 | ZEND_END_ARG_INFO() |
2381 | |
2382 | ZEND_BEGIN_ARG_INFO_EX(arginfo_str_getcsv, 0, 0, 1) |
2383 | ZEND_ARG_INFO(0, string) |
2384 | ZEND_ARG_INFO(0, delimiter) |
2385 | ZEND_ARG_INFO(0, enclosure) |
2386 | ZEND_ARG_INFO(0, escape) |
2387 | ZEND_END_ARG_INFO() |
2388 | |
2389 | ZEND_BEGIN_ARG_INFO(arginfo_str_repeat, 0) |
2390 | ZEND_ARG_INFO(0, input) |
2391 | ZEND_ARG_INFO(0, mult) |
2392 | ZEND_END_ARG_INFO() |
2393 | |
2394 | ZEND_BEGIN_ARG_INFO_EX(arginfo_count_chars, 0, 0, 1) |
2395 | ZEND_ARG_INFO(0, input) |
2396 | ZEND_ARG_INFO(0, mode) |
2397 | ZEND_END_ARG_INFO() |
2398 | |
2399 | ZEND_BEGIN_ARG_INFO(arginfo_strnatcmp, 0) |
2400 | ZEND_ARG_INFO(0, s1) |
2401 | ZEND_ARG_INFO(0, s2) |
2402 | ZEND_END_ARG_INFO() |
2403 | |
2404 | ZEND_BEGIN_ARG_INFO(arginfo_localeconv, 0) |
2405 | ZEND_END_ARG_INFO() |
2406 | |
2407 | ZEND_BEGIN_ARG_INFO(arginfo_strnatcasecmp, 0) |
2408 | ZEND_ARG_INFO(0, s1) |
2409 | ZEND_ARG_INFO(0, s2) |
2410 | ZEND_END_ARG_INFO() |
2411 | |
2412 | ZEND_BEGIN_ARG_INFO_EX(arginfo_substr_count, 0, 0, 2) |
2413 | ZEND_ARG_INFO(0, haystack) |
2414 | ZEND_ARG_INFO(0, needle) |
2415 | ZEND_ARG_INFO(0, offset) |
2416 | ZEND_ARG_INFO(0, length) |
2417 | ZEND_END_ARG_INFO() |
2418 | |
2419 | ZEND_BEGIN_ARG_INFO_EX(arginfo_str_pad, 0, 0, 2) |
2420 | ZEND_ARG_INFO(0, input) |
2421 | ZEND_ARG_INFO(0, pad_length) |
2422 | ZEND_ARG_INFO(0, pad_string) |
2423 | ZEND_ARG_INFO(0, pad_type) |
2424 | ZEND_END_ARG_INFO() |
2425 | |
2426 | ZEND_BEGIN_ARG_INFO_EX(arginfo_sscanf, 0, 0, 2) |
2427 | ZEND_ARG_INFO(0, str) |
2428 | ZEND_ARG_INFO(0, format) |
2429 | ZEND_ARG_VARIADIC_INFO(1, vars) |
2430 | ZEND_END_ARG_INFO() |
2431 | |
2432 | ZEND_BEGIN_ARG_INFO(arginfo_str_rot13, 0) |
2433 | ZEND_ARG_INFO(0, str) |
2434 | ZEND_END_ARG_INFO() |
2435 | |
2436 | ZEND_BEGIN_ARG_INFO(arginfo_str_shuffle, 0) |
2437 | ZEND_ARG_INFO(0, str) |
2438 | ZEND_END_ARG_INFO() |
2439 | |
2440 | ZEND_BEGIN_ARG_INFO_EX(arginfo_str_word_count, 0, 0, 1) |
2441 | ZEND_ARG_INFO(0, str) |
2442 | ZEND_ARG_INFO(0, format) |
2443 | ZEND_ARG_INFO(0, charlist) |
2444 | ZEND_END_ARG_INFO() |
2445 | |
2446 | #ifdef HAVE_STRFMON |
2447 | ZEND_BEGIN_ARG_INFO(arginfo_money_format, 0) |
2448 | ZEND_ARG_INFO(0, format) |
2449 | ZEND_ARG_INFO(0, value) |
2450 | ZEND_END_ARG_INFO() |
2451 | #endif |
2452 | |
2453 | ZEND_BEGIN_ARG_INFO_EX(arginfo_str_split, 0, 0, 1) |
2454 | ZEND_ARG_INFO(0, str) |
2455 | ZEND_ARG_INFO(0, split_length) |
2456 | ZEND_END_ARG_INFO() |
2457 | |
2458 | ZEND_BEGIN_ARG_INFO_EX(arginfo_strpbrk, 0, 0, 1) |
2459 | ZEND_ARG_INFO(0, haystack) |
2460 | ZEND_ARG_INFO(0, char_list) |
2461 | ZEND_END_ARG_INFO() |
2462 | |
2463 | ZEND_BEGIN_ARG_INFO_EX(arginfo_substr_compare, 0, 0, 3) |
2464 | ZEND_ARG_INFO(0, main_str) |
2465 | ZEND_ARG_INFO(0, str) |
2466 | ZEND_ARG_INFO(0, offset) |
2467 | ZEND_ARG_INFO(0, length) |
2468 | ZEND_ARG_INFO(0, case_sensitivity) |
2469 | ZEND_END_ARG_INFO() |
2470 | /* }}} */ |
2471 | /* {{{ syslog.c */ |
2472 | #ifdef HAVE_SYSLOG_H |
2473 | ZEND_BEGIN_ARG_INFO(arginfo_openlog, 0) |
2474 | ZEND_ARG_INFO(0, ident) |
2475 | ZEND_ARG_INFO(0, option) |
2476 | ZEND_ARG_INFO(0, facility) |
2477 | ZEND_END_ARG_INFO() |
2478 | |
2479 | ZEND_BEGIN_ARG_INFO(arginfo_closelog, 0) |
2480 | ZEND_END_ARG_INFO() |
2481 | |
2482 | ZEND_BEGIN_ARG_INFO(arginfo_syslog, 0) |
2483 | ZEND_ARG_INFO(0, priority) |
2484 | ZEND_ARG_INFO(0, message) |
2485 | ZEND_END_ARG_INFO() |
2486 | #endif |
2487 | /* }}} */ |
2488 | /* {{{ type.c */ |
2489 | ZEND_BEGIN_ARG_INFO(arginfo_gettype, 0) |
2490 | ZEND_ARG_INFO(0, var) |
2491 | ZEND_END_ARG_INFO() |
2492 | |
2493 | ZEND_BEGIN_ARG_INFO(arginfo_settype, 0) |
2494 | ZEND_ARG_INFO(1, var) |
2495 | ZEND_ARG_INFO(0, type) |
2496 | ZEND_END_ARG_INFO() |
2497 | |
2498 | ZEND_BEGIN_ARG_INFO_EX(arginfo_intval, 0, 0, 1) |
2499 | ZEND_ARG_INFO(0, var) |
2500 | ZEND_ARG_INFO(0, base) |
2501 | ZEND_END_ARG_INFO() |
2502 | |
2503 | ZEND_BEGIN_ARG_INFO(arginfo_floatval, 0) |
2504 | ZEND_ARG_INFO(0, var) |
2505 | ZEND_END_ARG_INFO() |
2506 | |
2507 | ZEND_BEGIN_ARG_INFO(arginfo_strval, 0) |
2508 | ZEND_ARG_INFO(0, var) |
2509 | ZEND_END_ARG_INFO() |
2510 | |
2511 | ZEND_BEGIN_ARG_INFO(arginfo_boolval, 0) |
2512 | ZEND_ARG_INFO(0, var) |
2513 | ZEND_END_ARG_INFO() |
2514 | |
2515 | ZEND_BEGIN_ARG_INFO(arginfo_is_null, 0) |
2516 | ZEND_ARG_INFO(0, var) |
2517 | ZEND_END_ARG_INFO() |
2518 | |
2519 | ZEND_BEGIN_ARG_INFO(arginfo_is_resource, 0) |
2520 | ZEND_ARG_INFO(0, var) |
2521 | ZEND_END_ARG_INFO() |
2522 | |
2523 | ZEND_BEGIN_ARG_INFO(arginfo_is_bool, 0) |
2524 | ZEND_ARG_INFO(0, var) |
2525 | ZEND_END_ARG_INFO() |
2526 | |
2527 | ZEND_BEGIN_ARG_INFO(arginfo_is_long, 0) |
2528 | ZEND_ARG_INFO(0, var) |
2529 | ZEND_END_ARG_INFO() |
2530 | |
2531 | ZEND_BEGIN_ARG_INFO(arginfo_is_float, 0) |
2532 | ZEND_ARG_INFO(0, var) |
2533 | ZEND_END_ARG_INFO() |
2534 | |
2535 | ZEND_BEGIN_ARG_INFO(arginfo_is_string, 0) |
2536 | ZEND_ARG_INFO(0, var) |
2537 | ZEND_END_ARG_INFO() |
2538 | |
2539 | ZEND_BEGIN_ARG_INFO(arginfo_is_array, 0) |
2540 | ZEND_ARG_INFO(0, var) |
2541 | ZEND_END_ARG_INFO() |
2542 | |
2543 | ZEND_BEGIN_ARG_INFO(arginfo_is_object, 0) |
2544 | ZEND_ARG_INFO(0, var) |
2545 | ZEND_END_ARG_INFO() |
2546 | |
2547 | ZEND_BEGIN_ARG_INFO(arginfo_is_numeric, 0) |
2548 | ZEND_ARG_INFO(0, value) |
2549 | ZEND_END_ARG_INFO() |
2550 | |
2551 | ZEND_BEGIN_ARG_INFO(arginfo_is_scalar, 0) |
2552 | ZEND_ARG_INFO(0, value) |
2553 | ZEND_END_ARG_INFO() |
2554 | |
2555 | ZEND_BEGIN_ARG_INFO_EX(arginfo_is_callable, 0, 0, 1) |
2556 | ZEND_ARG_INFO(0, var) |
2557 | ZEND_ARG_INFO(0, syntax_only) |
2558 | ZEND_ARG_INFO(1, callable_name) |
2559 | ZEND_END_ARG_INFO() |
2560 | /* }}} */ |
2561 | /* {{{ uniqid.c */ |
2562 | #ifdef HAVE_GETTIMEOFDAY |
2563 | ZEND_BEGIN_ARG_INFO_EX(arginfo_uniqid, 0, 0, 0) |
2564 | ZEND_ARG_INFO(0, prefix) |
2565 | ZEND_ARG_INFO(0, more_entropy) |
2566 | ZEND_END_ARG_INFO() |
2567 | #endif |
2568 | /* }}} */ |
2569 | /* {{{ url.c */ |
2570 | ZEND_BEGIN_ARG_INFO_EX(arginfo_parse_url, 0, 0, 1) |
2571 | ZEND_ARG_INFO(0, url) |
2572 | ZEND_ARG_INFO(0, component) |
2573 | ZEND_END_ARG_INFO() |
2574 | |
2575 | ZEND_BEGIN_ARG_INFO(arginfo_urlencode, 0) |
2576 | ZEND_ARG_INFO(0, str) |
2577 | ZEND_END_ARG_INFO() |
2578 | |
2579 | ZEND_BEGIN_ARG_INFO(arginfo_urldecode, 0) |
2580 | ZEND_ARG_INFO(0, str) |
2581 | ZEND_END_ARG_INFO() |
2582 | |
2583 | ZEND_BEGIN_ARG_INFO(arginfo_rawurlencode, 0) |
2584 | ZEND_ARG_INFO(0, str) |
2585 | ZEND_END_ARG_INFO() |
2586 | |
2587 | ZEND_BEGIN_ARG_INFO(arginfo_rawurldecode, 0) |
2588 | ZEND_ARG_INFO(0, str) |
2589 | ZEND_END_ARG_INFO() |
2590 | |
2591 | ZEND_BEGIN_ARG_INFO_EX(, 0, 0, 1) |
2592 | ZEND_ARG_INFO(0, url) |
2593 | ZEND_ARG_INFO(0, format) |
2594 | ZEND_END_ARG_INFO() |
2595 | /* }}} */ |
2596 | /* {{{ user_filters.c */ |
2597 | ZEND_BEGIN_ARG_INFO(arginfo_stream_bucket_make_writeable, 0) |
2598 | ZEND_ARG_INFO(0, brigade) |
2599 | ZEND_END_ARG_INFO() |
2600 | |
2601 | ZEND_BEGIN_ARG_INFO(arginfo_stream_bucket_prepend, 0) |
2602 | ZEND_ARG_INFO(0, brigade) |
2603 | ZEND_ARG_INFO(0, bucket) |
2604 | ZEND_END_ARG_INFO() |
2605 | |
2606 | ZEND_BEGIN_ARG_INFO(arginfo_stream_bucket_append, 0) |
2607 | ZEND_ARG_INFO(0, brigade) |
2608 | ZEND_ARG_INFO(0, bucket) |
2609 | ZEND_END_ARG_INFO() |
2610 | |
2611 | ZEND_BEGIN_ARG_INFO(arginfo_stream_bucket_new, 0) |
2612 | ZEND_ARG_INFO(0, stream) |
2613 | ZEND_ARG_INFO(0, buffer) |
2614 | ZEND_END_ARG_INFO() |
2615 | |
2616 | ZEND_BEGIN_ARG_INFO(arginfo_stream_get_filters, 0) |
2617 | ZEND_END_ARG_INFO() |
2618 | |
2619 | ZEND_BEGIN_ARG_INFO(arginfo_stream_filter_register, 0) |
2620 | ZEND_ARG_INFO(0, filtername) |
2621 | ZEND_ARG_INFO(0, classname) |
2622 | ZEND_END_ARG_INFO() |
2623 | /* }}} */ |
2624 | /* {{{ uuencode.c */ |
2625 | ZEND_BEGIN_ARG_INFO(arginfo_convert_uuencode, 0) |
2626 | ZEND_ARG_INFO(0, data) |
2627 | ZEND_END_ARG_INFO() |
2628 | |
2629 | ZEND_BEGIN_ARG_INFO(arginfo_convert_uudecode, 0) |
2630 | ZEND_ARG_INFO(0, data) |
2631 | ZEND_END_ARG_INFO() |
2632 | /* }}} */ |
2633 | /* {{{ var.c */ |
2634 | ZEND_BEGIN_ARG_INFO_EX(arginfo_var_dump, 0, 0, 1) |
2635 | ZEND_ARG_VARIADIC_INFO(0, vars) |
2636 | ZEND_END_ARG_INFO() |
2637 | |
2638 | ZEND_BEGIN_ARG_INFO_EX(arginfo_debug_zval_dump, 0, 0, 1) |
2639 | ZEND_ARG_VARIADIC_INFO(0, vars) |
2640 | ZEND_END_ARG_INFO() |
2641 | |
2642 | ZEND_BEGIN_ARG_INFO_EX(arginfo_var_export, 0, 0, 1) |
2643 | ZEND_ARG_INFO(0, var) |
2644 | ZEND_ARG_INFO(0, return) |
2645 | ZEND_END_ARG_INFO() |
2646 | |
2647 | ZEND_BEGIN_ARG_INFO(arginfo_serialize, 0) |
2648 | ZEND_ARG_INFO(0, var) |
2649 | ZEND_END_ARG_INFO() |
2650 | |
2651 | ZEND_BEGIN_ARG_INFO(arginfo_unserialize, 0) |
2652 | ZEND_ARG_INFO(0, variable_representation) |
2653 | ZEND_END_ARG_INFO() |
2654 | |
2655 | ZEND_BEGIN_ARG_INFO_EX(arginfo_memory_get_usage, 0, 0, 0) |
2656 | ZEND_ARG_INFO(0, real_usage) |
2657 | ZEND_END_ARG_INFO() |
2658 | |
2659 | ZEND_BEGIN_ARG_INFO_EX(arginfo_memory_get_peak_usage, 0, 0, 0) |
2660 | ZEND_ARG_INFO(0, real_usage) |
2661 | ZEND_END_ARG_INFO() |
2662 | /* }}} */ |
2663 | /* {{{ versioning.c */ |
2664 | ZEND_BEGIN_ARG_INFO_EX(arginfo_version_compare, 0, 0, 2) |
2665 | ZEND_ARG_INFO(0, ver1) |
2666 | ZEND_ARG_INFO(0, ver2) |
2667 | ZEND_ARG_INFO(0, oper) |
2668 | ZEND_END_ARG_INFO() |
2669 | /* }}} */ |
2670 | /* }}} */ |
2671 | |
2672 | const zend_function_entry basic_functions[] = { /* {{{ */ |
2673 | PHP_FE(constant, arginfo_constant) |
2674 | PHP_FE(bin2hex, arginfo_bin2hex) |
2675 | PHP_FE(hex2bin, arginfo_hex2bin) |
2676 | PHP_FE(sleep, arginfo_sleep) |
2677 | PHP_FE(usleep, arginfo_usleep) |
2678 | #if HAVE_NANOSLEEP |
2679 | PHP_FE(time_nanosleep, arginfo_time_nanosleep) |
2680 | PHP_FE(time_sleep_until, arginfo_time_sleep_until) |
2681 | #endif |
2682 | |
2683 | #if HAVE_STRPTIME |
2684 | PHP_FE(strptime, arginfo_strptime) |
2685 | #endif |
2686 | |
2687 | PHP_FE(flush, arginfo_flush) |
2688 | PHP_FE(wordwrap, arginfo_wordwrap) |
2689 | PHP_FE(htmlspecialchars, arginfo_htmlspecialchars) |
2690 | PHP_FE(htmlentities, arginfo_htmlentities) |
2691 | PHP_FE(html_entity_decode, arginfo_html_entity_decode) |
2692 | PHP_FE(htmlspecialchars_decode, arginfo_htmlspecialchars_decode) |
2693 | PHP_FE(get_html_translation_table, arginfo_get_html_translation_table) |
2694 | PHP_FE(sha1, arginfo_sha1) |
2695 | PHP_FE(sha1_file, arginfo_sha1_file) |
2696 | PHP_NAMED_FE(md5,php_if_md5, arginfo_md5) |
2697 | PHP_NAMED_FE(md5_file,php_if_md5_file, arginfo_md5_file) |
2698 | PHP_NAMED_FE(crc32,php_if_crc32, arginfo_crc32) |
2699 | |
2700 | PHP_FE(iptcparse, arginfo_iptcparse) |
2701 | PHP_FE(iptcembed, arginfo_iptcembed) |
2702 | PHP_FE(getimagesize, arginfo_getimagesize) |
2703 | PHP_FE(getimagesizefromstring, arginfo_getimagesize) |
2704 | PHP_FE(image_type_to_mime_type, arginfo_image_type_to_mime_type) |
2705 | PHP_FE(image_type_to_extension, arginfo_image_type_to_extension) |
2706 | |
2707 | PHP_FE(phpinfo, arginfo_phpinfo) |
2708 | PHP_FE(phpversion, arginfo_phpversion) |
2709 | PHP_FE(phpcredits, arginfo_phpcredits) |
2710 | PHP_FE(php_sapi_name, arginfo_php_sapi_name) |
2711 | PHP_FE(php_uname, arginfo_php_uname) |
2712 | PHP_FE(php_ini_scanned_files, arginfo_php_ini_scanned_files) |
2713 | PHP_FE(php_ini_loaded_file, arginfo_php_ini_loaded_file) |
2714 | |
2715 | PHP_FE(strnatcmp, arginfo_strnatcmp) |
2716 | PHP_FE(strnatcasecmp, arginfo_strnatcasecmp) |
2717 | PHP_FE(substr_count, arginfo_substr_count) |
2718 | PHP_FE(strspn, arginfo_strspn) |
2719 | PHP_FE(strcspn, arginfo_strcspn) |
2720 | PHP_FE(strtok, arginfo_strtok) |
2721 | PHP_FE(strtoupper, arginfo_strtoupper) |
2722 | PHP_FE(strtolower, arginfo_strtolower) |
2723 | PHP_FE(strpos, arginfo_strpos) |
2724 | PHP_FE(stripos, arginfo_stripos) |
2725 | PHP_FE(strrpos, arginfo_strrpos) |
2726 | PHP_FE(strripos, arginfo_strripos) |
2727 | PHP_FE(strrev, arginfo_strrev) |
2728 | PHP_FE(hebrev, arginfo_hebrev) |
2729 | PHP_FE(hebrevc, arginfo_hebrevc) |
2730 | PHP_FE(nl2br, arginfo_nl2br) |
2731 | PHP_FE(basename, arginfo_basename) |
2732 | PHP_FE(dirname, arginfo_dirname) |
2733 | PHP_FE(pathinfo, arginfo_pathinfo) |
2734 | PHP_FE(stripslashes, arginfo_stripslashes) |
2735 | PHP_FE(stripcslashes, arginfo_stripcslashes) |
2736 | PHP_FE(strstr, arginfo_strstr) |
2737 | PHP_FE(stristr, arginfo_stristr) |
2738 | PHP_FE(strrchr, arginfo_strrchr) |
2739 | PHP_FE(str_shuffle, arginfo_str_shuffle) |
2740 | PHP_FE(str_word_count, arginfo_str_word_count) |
2741 | PHP_FE(str_split, arginfo_str_split) |
2742 | PHP_FE(strpbrk, arginfo_strpbrk) |
2743 | PHP_FE(substr_compare, arginfo_substr_compare) |
2744 | |
2745 | #ifdef HAVE_STRCOLL |
2746 | PHP_FE(strcoll, arginfo_strcoll) |
2747 | #endif |
2748 | |
2749 | #ifdef HAVE_STRFMON |
2750 | PHP_FE(money_format, arginfo_money_format) |
2751 | #endif |
2752 | |
2753 | PHP_FE(substr, arginfo_substr) |
2754 | PHP_FE(substr_replace, arginfo_substr_replace) |
2755 | PHP_FE(quotemeta, arginfo_quotemeta) |
2756 | PHP_FE(ucfirst, arginfo_ucfirst) |
2757 | PHP_FE(lcfirst, arginfo_lcfirst) |
2758 | PHP_FE(ucwords, arginfo_ucwords) |
2759 | PHP_FE(strtr, arginfo_strtr) |
2760 | PHP_FE(addslashes, arginfo_addslashes) |
2761 | PHP_FE(addcslashes, arginfo_addcslashes) |
2762 | PHP_FE(rtrim, arginfo_rtrim) |
2763 | PHP_FE(str_replace, arginfo_str_replace) |
2764 | PHP_FE(str_ireplace, arginfo_str_ireplace) |
2765 | PHP_FE(str_repeat, arginfo_str_repeat) |
2766 | PHP_FE(count_chars, arginfo_count_chars) |
2767 | PHP_FE(chunk_split, arginfo_chunk_split) |
2768 | PHP_FE(trim, arginfo_trim) |
2769 | PHP_FE(ltrim, arginfo_ltrim) |
2770 | PHP_FE(strip_tags, arginfo_strip_tags) |
2771 | PHP_FE(similar_text, arginfo_similar_text) |
2772 | PHP_FE(explode, arginfo_explode) |
2773 | PHP_FE(implode, arginfo_implode) |
2774 | PHP_FALIAS(join, implode, arginfo_implode) |
2775 | PHP_FE(setlocale, arginfo_setlocale) |
2776 | PHP_FE(localeconv, arginfo_localeconv) |
2777 | |
2778 | #if HAVE_NL_LANGINFO |
2779 | PHP_FE(nl_langinfo, arginfo_nl_langinfo) |
2780 | #endif |
2781 | |
2782 | PHP_FE(soundex, arginfo_soundex) |
2783 | PHP_FE(levenshtein, arginfo_levenshtein) |
2784 | PHP_FE(chr, arginfo_chr) |
2785 | PHP_FE(ord, arginfo_ord) |
2786 | PHP_FE(parse_str, arginfo_parse_str) |
2787 | PHP_FE(str_getcsv, arginfo_str_getcsv) |
2788 | PHP_FE(str_pad, arginfo_str_pad) |
2789 | PHP_FALIAS(chop, rtrim, arginfo_rtrim) |
2790 | PHP_FALIAS(strchr, strstr, arginfo_strstr) |
2791 | PHP_NAMED_FE(sprintf, PHP_FN(user_sprintf), arginfo_sprintf) |
2792 | PHP_NAMED_FE(printf, PHP_FN(user_printf), arginfo_printf) |
2793 | PHP_FE(vprintf, arginfo_vprintf) |
2794 | PHP_FE(vsprintf, arginfo_vsprintf) |
2795 | PHP_FE(fprintf, arginfo_fprintf) |
2796 | PHP_FE(vfprintf, arginfo_vfprintf) |
2797 | PHP_FE(sscanf, arginfo_sscanf) |
2798 | PHP_FE(fscanf, arginfo_fscanf) |
2799 | PHP_FE(parse_url, arginfo_parse_url) |
2800 | PHP_FE(urlencode, arginfo_urlencode) |
2801 | PHP_FE(urldecode, arginfo_urldecode) |
2802 | PHP_FE(rawurlencode, arginfo_rawurlencode) |
2803 | PHP_FE(rawurldecode, arginfo_rawurldecode) |
2804 | PHP_FE(http_build_query, arginfo_http_build_query) |
2805 | |
2806 | #if defined(HAVE_SYMLINK) || defined(PHP_WIN32) |
2807 | PHP_FE(readlink, arginfo_readlink) |
2808 | PHP_FE(linkinfo, arginfo_linkinfo) |
2809 | PHP_FE(symlink, arginfo_symlink) |
2810 | PHP_FE(link, arginfo_link) |
2811 | #endif |
2812 | |
2813 | PHP_FE(unlink, arginfo_unlink) |
2814 | PHP_FE(exec, arginfo_exec) |
2815 | PHP_FE(system, arginfo_system) |
2816 | PHP_FE(escapeshellcmd, arginfo_escapeshellcmd) |
2817 | PHP_FE(escapeshellarg, arginfo_escapeshellarg) |
2818 | PHP_FE(passthru, arginfo_passthru) |
2819 | PHP_FE(shell_exec, arginfo_shell_exec) |
2820 | #ifdef PHP_CAN_SUPPORT_PROC_OPEN |
2821 | PHP_FE(proc_open, arginfo_proc_open) |
2822 | PHP_FE(proc_close, arginfo_proc_close) |
2823 | PHP_FE(proc_terminate, arginfo_proc_terminate) |
2824 | PHP_FE(proc_get_status, arginfo_proc_get_status) |
2825 | #endif |
2826 | |
2827 | #ifdef HAVE_NICE |
2828 | PHP_FE(proc_nice, arginfo_proc_nice) |
2829 | #endif |
2830 | |
2831 | PHP_FE(rand, arginfo_rand) |
2832 | PHP_FE(srand, arginfo_srand) |
2833 | PHP_FE(getrandmax, arginfo_getrandmax) |
2834 | PHP_FE(mt_rand, arginfo_mt_rand) |
2835 | PHP_FE(mt_srand, arginfo_mt_srand) |
2836 | PHP_FE(mt_getrandmax, arginfo_mt_getrandmax) |
2837 | |
2838 | #if HAVE_GETSERVBYNAME |
2839 | PHP_FE(getservbyname, arginfo_getservbyname) |
2840 | #endif |
2841 | |
2842 | #if HAVE_GETSERVBYPORT |
2843 | PHP_FE(getservbyport, arginfo_getservbyport) |
2844 | #endif |
2845 | |
2846 | #if HAVE_GETPROTOBYNAME |
2847 | PHP_FE(getprotobyname, arginfo_getprotobyname) |
2848 | #endif |
2849 | |
2850 | #if HAVE_GETPROTOBYNUMBER |
2851 | PHP_FE(getprotobynumber, arginfo_getprotobynumber) |
2852 | #endif |
2853 | |
2854 | PHP_FE(getmyuid, arginfo_getmyuid) |
2855 | PHP_FE(getmygid, arginfo_getmygid) |
2856 | PHP_FE(getmypid, arginfo_getmypid) |
2857 | PHP_FE(getmyinode, arginfo_getmyinode) |
2858 | PHP_FE(getlastmod, arginfo_getlastmod) |
2859 | |
2860 | PHP_FE(base64_decode, arginfo_base64_decode) |
2861 | PHP_FE(base64_encode, arginfo_base64_encode) |
2862 | |
2863 | PHP_FE(password_hash, arginfo_password_hash) |
2864 | PHP_FE(password_get_info, arginfo_password_get_info) |
2865 | PHP_FE(password_needs_rehash, arginfo_password_needs_rehash) |
2866 | PHP_FE(password_verify, arginfo_password_verify) |
2867 | PHP_FE(convert_uuencode, arginfo_convert_uuencode) |
2868 | PHP_FE(convert_uudecode, arginfo_convert_uudecode) |
2869 | |
2870 | PHP_FE(abs, arginfo_abs) |
2871 | PHP_FE(ceil, arginfo_ceil) |
2872 | PHP_FE(floor, arginfo_floor) |
2873 | PHP_FE(round, arginfo_round) |
2874 | PHP_FE(sin, arginfo_sin) |
2875 | PHP_FE(cos, arginfo_cos) |
2876 | PHP_FE(tan, arginfo_tan) |
2877 | PHP_FE(asin, arginfo_asin) |
2878 | PHP_FE(acos, arginfo_acos) |
2879 | PHP_FE(atan, arginfo_atan) |
2880 | PHP_FE(atanh, arginfo_atanh) |
2881 | PHP_FE(atan2, arginfo_atan2) |
2882 | PHP_FE(sinh, arginfo_sinh) |
2883 | PHP_FE(cosh, arginfo_cosh) |
2884 | PHP_FE(tanh, arginfo_tanh) |
2885 | PHP_FE(asinh, arginfo_asinh) |
2886 | PHP_FE(acosh, arginfo_acosh) |
2887 | PHP_FE(expm1, arginfo_expm1) |
2888 | PHP_FE(log1p, arginfo_log1p) |
2889 | PHP_FE(pi, arginfo_pi) |
2890 | PHP_FE(is_finite, arginfo_is_finite) |
2891 | PHP_FE(is_nan, arginfo_is_nan) |
2892 | PHP_FE(is_infinite, arginfo_is_infinite) |
2893 | PHP_FE(pow, arginfo_pow) |
2894 | PHP_FE(exp, arginfo_exp) |
2895 | PHP_FE(log, arginfo_log) |
2896 | PHP_FE(log10, arginfo_log10) |
2897 | PHP_FE(sqrt, arginfo_sqrt) |
2898 | PHP_FE(hypot, arginfo_hypot) |
2899 | PHP_FE(deg2rad, arginfo_deg2rad) |
2900 | PHP_FE(rad2deg, arginfo_rad2deg) |
2901 | PHP_FE(bindec, arginfo_bindec) |
2902 | PHP_FE(hexdec, arginfo_hexdec) |
2903 | PHP_FE(octdec, arginfo_octdec) |
2904 | PHP_FE(decbin, arginfo_decbin) |
2905 | PHP_FE(decoct, arginfo_decoct) |
2906 | PHP_FE(dechex, arginfo_dechex) |
2907 | PHP_FE(base_convert, arginfo_base_convert) |
2908 | PHP_FE(number_format, arginfo_number_format) |
2909 | PHP_FE(fmod, arginfo_fmod) |
2910 | #ifdef HAVE_INET_NTOP |
2911 | PHP_RAW_NAMED_FE(inet_ntop, php_inet_ntop, arginfo_inet_ntop) |
2912 | #endif |
2913 | #ifdef HAVE_INET_PTON |
2914 | PHP_RAW_NAMED_FE(inet_pton, php_inet_pton, arginfo_inet_pton) |
2915 | #endif |
2916 | PHP_FE(ip2long, arginfo_ip2long) |
2917 | PHP_FE(long2ip, arginfo_long2ip) |
2918 | |
2919 | PHP_FE(getenv, arginfo_getenv) |
2920 | #ifdef HAVE_PUTENV |
2921 | PHP_FE(putenv, arginfo_putenv) |
2922 | #endif |
2923 | |
2924 | PHP_FE(getopt, arginfo_getopt) |
2925 | |
2926 | #ifdef HAVE_GETLOADAVG |
2927 | PHP_FE(sys_getloadavg, arginfo_sys_getloadavg) |
2928 | #endif |
2929 | #ifdef HAVE_GETTIMEOFDAY |
2930 | PHP_FE(microtime, arginfo_microtime) |
2931 | PHP_FE(gettimeofday, arginfo_gettimeofday) |
2932 | #endif |
2933 | |
2934 | #ifdef HAVE_GETRUSAGE |
2935 | PHP_FE(getrusage, arginfo_getrusage) |
2936 | #endif |
2937 | |
2938 | #ifdef HAVE_GETTIMEOFDAY |
2939 | PHP_FE(uniqid, arginfo_uniqid) |
2940 | #endif |
2941 | |
2942 | PHP_FE(quoted_printable_decode, arginfo_quoted_printable_decode) |
2943 | PHP_FE(quoted_printable_encode, arginfo_quoted_printable_encode) |
2944 | PHP_FE(convert_cyr_string, arginfo_convert_cyr_string) |
2945 | PHP_FE(get_current_user, arginfo_get_current_user) |
2946 | PHP_FE(set_time_limit, arginfo_set_time_limit) |
2947 | PHP_FE(header_register_callback, arginfo_header_register_callback) |
2948 | PHP_FE(get_cfg_var, arginfo_get_cfg_var) |
2949 | |
2950 | PHP_DEP_FALIAS(magic_quotes_runtime, set_magic_quotes_runtime, arginfo_set_magic_quotes_runtime) |
2951 | PHP_DEP_FE(set_magic_quotes_runtime, arginfo_set_magic_quotes_runtime) |
2952 | PHP_FE(get_magic_quotes_gpc, arginfo_get_magic_quotes_gpc) |
2953 | PHP_FE(get_magic_quotes_runtime, arginfo_get_magic_quotes_runtime) |
2954 | |
2955 | PHP_FE(error_log, arginfo_error_log) |
2956 | PHP_FE(error_get_last, arginfo_error_get_last) |
2957 | PHP_FE(call_user_func, arginfo_call_user_func) |
2958 | PHP_FE(call_user_func_array, arginfo_call_user_func_array) |
2959 | PHP_DEP_FE(call_user_method, arginfo_call_user_method) |
2960 | PHP_DEP_FE(call_user_method_array, arginfo_call_user_method_array) |
2961 | PHP_FE(forward_static_call, arginfo_forward_static_call) |
2962 | PHP_FE(forward_static_call_array, arginfo_forward_static_call_array) |
2963 | PHP_FE(serialize, arginfo_serialize) |
2964 | PHP_FE(unserialize, arginfo_unserialize) |
2965 | |
2966 | PHP_FE(var_dump, arginfo_var_dump) |
2967 | PHP_FE(var_export, arginfo_var_export) |
2968 | PHP_FE(debug_zval_dump, arginfo_debug_zval_dump) |
2969 | PHP_FE(print_r, arginfo_print_r) |
2970 | PHP_FE(memory_get_usage, arginfo_memory_get_usage) |
2971 | PHP_FE(memory_get_peak_usage, arginfo_memory_get_peak_usage) |
2972 | |
2973 | PHP_FE(register_shutdown_function, arginfo_register_shutdown_function) |
2974 | PHP_FE(register_tick_function, arginfo_register_tick_function) |
2975 | PHP_FE(unregister_tick_function, arginfo_unregister_tick_function) |
2976 | |
2977 | PHP_FE(highlight_file, arginfo_highlight_file) |
2978 | PHP_FALIAS(show_source, highlight_file, arginfo_highlight_file) |
2979 | PHP_FE(highlight_string, arginfo_highlight_string) |
2980 | PHP_FE(php_strip_whitespace, arginfo_php_strip_whitespace) |
2981 | |
2982 | PHP_FE(ini_get, arginfo_ini_get) |
2983 | PHP_FE(ini_get_all, arginfo_ini_get_all) |
2984 | PHP_FE(ini_set, arginfo_ini_set) |
2985 | PHP_FALIAS(ini_alter, ini_set, arginfo_ini_set) |
2986 | PHP_FE(ini_restore, arginfo_ini_restore) |
2987 | PHP_FE(get_include_path, arginfo_get_include_path) |
2988 | PHP_FE(set_include_path, arginfo_set_include_path) |
2989 | PHP_FE(restore_include_path, arginfo_restore_include_path) |
2990 | |
2991 | PHP_FE(setcookie, arginfo_setcookie) |
2992 | PHP_FE(setrawcookie, arginfo_setrawcookie) |
2993 | PHP_FE(header, arginfo_header) |
2994 | PHP_FE(header_remove, arginfo_header_remove) |
2995 | PHP_FE(headers_sent, arginfo_headers_sent) |
2996 | PHP_FE(headers_list, arginfo_headers_list) |
2997 | PHP_FE(http_response_code, arginfo_http_response_code) |
2998 | |
2999 | PHP_FE(connection_aborted, arginfo_connection_aborted) |
3000 | PHP_FE(connection_status, arginfo_connection_status) |
3001 | PHP_FE(ignore_user_abort, arginfo_ignore_user_abort) |
3002 | PHP_FE(parse_ini_file, arginfo_parse_ini_file) |
3003 | PHP_FE(parse_ini_string, arginfo_parse_ini_string) |
3004 | #if ZEND_DEBUG |
3005 | PHP_FE(config_get_hash, arginfo_config_get_hash) |
3006 | #endif |
3007 | PHP_FE(is_uploaded_file, arginfo_is_uploaded_file) |
3008 | PHP_FE(move_uploaded_file, arginfo_move_uploaded_file) |
3009 | |
3010 | /* functions from dns.c */ |
3011 | PHP_FE(gethostbyaddr, arginfo_gethostbyaddr) |
3012 | PHP_FE(gethostbyname, arginfo_gethostbyname) |
3013 | PHP_FE(gethostbynamel, arginfo_gethostbynamel) |
3014 | |
3015 | #ifdef HAVE_GETHOSTNAME |
3016 | PHP_FE(gethostname, arginfo_gethostname) |
3017 | #endif |
3018 | |
3019 | #if defined(PHP_WIN32) || (HAVE_DNS_SEARCH_FUNC && !(defined(__BEOS__) || defined(NETWARE))) |
3020 | |
3021 | PHP_FE(dns_check_record, arginfo_dns_check_record) |
3022 | PHP_FALIAS(checkdnsrr, dns_check_record, arginfo_dns_check_record) |
3023 | |
3024 | # if defined(PHP_WIN32) || HAVE_FULL_DNS_FUNCS |
3025 | PHP_FE(dns_get_mx, arginfo_dns_get_mx) |
3026 | PHP_FALIAS(getmxrr, dns_get_mx, arginfo_dns_get_mx) |
3027 | PHP_FE(dns_get_record, arginfo_dns_get_record) |
3028 | # endif |
3029 | #endif |
3030 | |
3031 | /* functions from type.c */ |
3032 | PHP_FE(intval, arginfo_intval) |
3033 | PHP_FE(floatval, arginfo_floatval) |
3034 | PHP_FALIAS(doubleval, floatval, arginfo_floatval) |
3035 | PHP_FE(strval, arginfo_strval) |
3036 | PHP_FE(boolval, arginfo_boolval) |
3037 | PHP_FE(gettype, arginfo_gettype) |
3038 | PHP_FE(settype, arginfo_settype) |
3039 | PHP_FE(is_null, arginfo_is_null) |
3040 | PHP_FE(is_resource, arginfo_is_resource) |
3041 | PHP_FE(is_bool, arginfo_is_bool) |
3042 | PHP_FE(is_long, arginfo_is_long) |
3043 | PHP_FE(is_float, arginfo_is_float) |
3044 | PHP_FALIAS(is_int, is_long, arginfo_is_long) |
3045 | PHP_FALIAS(is_integer, is_long, arginfo_is_long) |
3046 | PHP_FALIAS(is_double, is_float, arginfo_is_float) |
3047 | PHP_FALIAS(is_real, is_float, arginfo_is_float) |
3048 | PHP_FE(is_numeric, arginfo_is_numeric) |
3049 | PHP_FE(is_string, arginfo_is_string) |
3050 | PHP_FE(is_array, arginfo_is_array) |
3051 | PHP_FE(is_object, arginfo_is_object) |
3052 | PHP_FE(is_scalar, arginfo_is_scalar) |
3053 | PHP_FE(is_callable, arginfo_is_callable) |
3054 | |
3055 | /* functions from file.c */ |
3056 | PHP_FE(pclose, arginfo_pclose) |
3057 | PHP_FE(popen, arginfo_popen) |
3058 | PHP_FE(readfile, arginfo_readfile) |
3059 | PHP_FE(rewind, arginfo_rewind) |
3060 | PHP_FE(rmdir, arginfo_rmdir) |
3061 | PHP_FE(umask, arginfo_umask) |
3062 | PHP_FE(fclose, arginfo_fclose) |
3063 | PHP_FE(feof, arginfo_feof) |
3064 | PHP_FE(fgetc, arginfo_fgetc) |
3065 | PHP_FE(fgets, arginfo_fgets) |
3066 | PHP_FE(fgetss, arginfo_fgetss) |
3067 | PHP_FE(fread, arginfo_fread) |
3068 | PHP_NAMED_FE(fopen, php_if_fopen, arginfo_fopen) |
3069 | PHP_FE(fpassthru, arginfo_fpassthru) |
3070 | PHP_NAMED_FE(ftruncate, php_if_ftruncate, arginfo_ftruncate) |
3071 | PHP_NAMED_FE(fstat, php_if_fstat, arginfo_fstat) |
3072 | PHP_FE(fseek, arginfo_fseek) |
3073 | PHP_FE(ftell, arginfo_ftell) |
3074 | PHP_FE(fflush, arginfo_fflush) |
3075 | PHP_FE(fwrite, arginfo_fwrite) |
3076 | PHP_FALIAS(fputs, fwrite, arginfo_fwrite) |
3077 | PHP_FE(mkdir, arginfo_mkdir) |
3078 | PHP_FE(rename, arginfo_rename) |
3079 | PHP_FE(copy, arginfo_copy) |
3080 | PHP_FE(tempnam, arginfo_tempnam) |
3081 | PHP_NAMED_FE(tmpfile, php_if_tmpfile, arginfo_tmpfile) |
3082 | PHP_FE(file, arginfo_file) |
3083 | PHP_FE(file_get_contents, arginfo_file_get_contents) |
3084 | PHP_FE(file_put_contents, arginfo_file_put_contents) |
3085 | PHP_FE(stream_select, arginfo_stream_select) |
3086 | PHP_FE(stream_context_create, arginfo_stream_context_create) |
3087 | PHP_FE(stream_context_set_params, arginfo_stream_context_set_params) |
3088 | PHP_FE(stream_context_get_params, arginfo_stream_context_get_params) |
3089 | PHP_FE(stream_context_set_option, arginfo_stream_context_set_option) |
3090 | PHP_FE(stream_context_get_options, arginfo_stream_context_get_options) |
3091 | PHP_FE(stream_context_get_default, arginfo_stream_context_get_default) |
3092 | PHP_FE(stream_context_set_default, arginfo_stream_context_set_default) |
3093 | PHP_FE(stream_filter_prepend, arginfo_stream_filter_prepend) |
3094 | PHP_FE(stream_filter_append, arginfo_stream_filter_append) |
3095 | PHP_FE(stream_filter_remove, arginfo_stream_filter_remove) |
3096 | PHP_FE(stream_socket_client, arginfo_stream_socket_client) |
3097 | PHP_FE(stream_socket_server, arginfo_stream_socket_server) |
3098 | PHP_FE(stream_socket_accept, arginfo_stream_socket_accept) |
3099 | PHP_FE(stream_socket_get_name, arginfo_stream_socket_get_name) |
3100 | PHP_FE(stream_socket_recvfrom, arginfo_stream_socket_recvfrom) |
3101 | PHP_FE(stream_socket_sendto, arginfo_stream_socket_sendto) |
3102 | PHP_FE(stream_socket_enable_crypto, arginfo_stream_socket_enable_crypto) |
3103 | #ifdef HAVE_SHUTDOWN |
3104 | PHP_FE(stream_socket_shutdown, arginfo_stream_socket_shutdown) |
3105 | #endif |
3106 | #if HAVE_SOCKETPAIR |
3107 | PHP_FE(stream_socket_pair, arginfo_stream_socket_pair) |
3108 | #endif |
3109 | PHP_FE(stream_copy_to_stream, arginfo_stream_copy_to_stream) |
3110 | PHP_FE(stream_get_contents, arginfo_stream_get_contents) |
3111 | PHP_FE(stream_supports_lock, arginfo_stream_supports_lock) |
3112 | PHP_FE(fgetcsv, arginfo_fgetcsv) |
3113 | PHP_FE(fputcsv, arginfo_fputcsv) |
3114 | PHP_FE(flock, arginfo_flock) |
3115 | PHP_FE(get_meta_tags, arginfo_get_meta_tags) |
3116 | PHP_FE(stream_set_read_buffer, arginfo_stream_set_read_buffer) |
3117 | PHP_FE(stream_set_write_buffer, arginfo_stream_set_write_buffer) |
3118 | PHP_FALIAS(set_file_buffer, stream_set_write_buffer, arginfo_stream_set_write_buffer) |
3119 | PHP_FE(stream_set_chunk_size, arginfo_stream_set_chunk_size) |
3120 | |
3121 | PHP_DEP_FALIAS(set_socket_blocking, stream_set_blocking, arginfo_stream_set_blocking) |
3122 | PHP_FE(stream_set_blocking, arginfo_stream_set_blocking) |
3123 | PHP_FALIAS(socket_set_blocking, stream_set_blocking, arginfo_stream_set_blocking) |
3124 | |
3125 | PHP_FE(stream_get_meta_data, arginfo_stream_get_meta_data) |
3126 | PHP_FE(stream_get_line, arginfo_stream_get_line) |
3127 | PHP_FE(stream_wrapper_register, arginfo_stream_wrapper_register) |
3128 | PHP_FALIAS(stream_register_wrapper, stream_wrapper_register, arginfo_stream_wrapper_register) |
3129 | PHP_FE(stream_wrapper_unregister, arginfo_stream_wrapper_unregister) |
3130 | PHP_FE(stream_wrapper_restore, arginfo_stream_wrapper_restore) |
3131 | PHP_FE(stream_get_wrappers, arginfo_stream_get_wrappers) |
3132 | PHP_FE(stream_get_transports, arginfo_stream_get_transports) |
3133 | PHP_FE(stream_resolve_include_path, arginfo_stream_resolve_include_path) |
3134 | PHP_FE(stream_is_local, arginfo_stream_is_local) |
3135 | PHP_FE(get_headers, arginfo_get_headers) |
3136 | |
3137 | #if HAVE_SYS_TIME_H || defined(PHP_WIN32) |
3138 | PHP_FE(stream_set_timeout, arginfo_stream_set_timeout) |
3139 | PHP_FALIAS(socket_set_timeout, stream_set_timeout, arginfo_stream_set_timeout) |
3140 | #endif |
3141 | |
3142 | PHP_FALIAS(socket_get_status, stream_get_meta_data, arginfo_stream_get_meta_data) |
3143 | |
3144 | #if (!defined(__BEOS__) && !defined(NETWARE) && HAVE_REALPATH) || defined(ZTS) |
3145 | PHP_FE(realpath, arginfo_realpath) |
3146 | #endif |
3147 | |
3148 | #ifdef HAVE_FNMATCH |
3149 | PHP_FE(fnmatch, arginfo_fnmatch) |
3150 | #endif |
3151 | |
3152 | /* functions from fsock.c */ |
3153 | PHP_FE(fsockopen, arginfo_fsockopen) |
3154 | PHP_FE(pfsockopen, arginfo_pfsockopen) |
3155 | |
3156 | /* functions from pack.c */ |
3157 | PHP_FE(pack, arginfo_pack) |
3158 | PHP_FE(unpack, arginfo_unpack) |
3159 | |
3160 | /* functions from browscap.c */ |
3161 | PHP_FE(get_browser, arginfo_get_browser) |
3162 | |
3163 | #if HAVE_CRYPT |
3164 | /* functions from crypt.c */ |
3165 | PHP_FE(crypt, arginfo_crypt) |
3166 | #endif |
3167 | |
3168 | /* functions from dir.c */ |
3169 | PHP_FE(opendir, arginfo_opendir) |
3170 | PHP_FE(closedir, arginfo_closedir) |
3171 | PHP_FE(chdir, arginfo_chdir) |
3172 | |
3173 | #if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC |
3174 | PHP_FE(chroot, arginfo_chroot) |
3175 | #endif |
3176 | |
3177 | PHP_FE(getcwd, arginfo_getcwd) |
3178 | PHP_FE(rewinddir, arginfo_rewinddir) |
3179 | PHP_NAMED_FE(readdir, php_if_readdir, arginfo_readdir) |
3180 | PHP_FALIAS(dir, getdir, arginfo_dir) |
3181 | PHP_FE(scandir, arginfo_scandir) |
3182 | #ifdef HAVE_GLOB |
3183 | PHP_FE(glob, arginfo_glob) |
3184 | #endif |
3185 | /* functions from filestat.c */ |
3186 | PHP_FE(fileatime, arginfo_fileatime) |
3187 | PHP_FE(filectime, arginfo_filectime) |
3188 | PHP_FE(filegroup, arginfo_filegroup) |
3189 | PHP_FE(fileinode, arginfo_fileinode) |
3190 | PHP_FE(filemtime, arginfo_filemtime) |
3191 | PHP_FE(fileowner, arginfo_fileowner) |
3192 | PHP_FE(fileperms, arginfo_fileperms) |
3193 | PHP_FE(filesize, arginfo_filesize) |
3194 | PHP_FE(filetype, arginfo_filetype) |
3195 | PHP_FE(file_exists, arginfo_file_exists) |
3196 | PHP_FE(is_writable, arginfo_is_writable) |
3197 | PHP_FALIAS(is_writeable, is_writable, arginfo_is_writable) |
3198 | PHP_FE(is_readable, arginfo_is_readable) |
3199 | PHP_FE(is_executable, arginfo_is_executable) |
3200 | PHP_FE(is_file, arginfo_is_file) |
3201 | PHP_FE(is_dir, arginfo_is_dir) |
3202 | PHP_FE(is_link, arginfo_is_link) |
3203 | PHP_NAMED_FE(stat, php_if_stat, arginfo_stat) |
3204 | PHP_NAMED_FE(lstat, php_if_lstat, arginfo_lstat) |
3205 | #ifndef NETWARE |
3206 | PHP_FE(chown, arginfo_chown) |
3207 | PHP_FE(chgrp, arginfo_chgrp) |
3208 | #endif |
3209 | #if HAVE_LCHOWN |
3210 | PHP_FE(lchown, arginfo_lchown) |
3211 | #endif |
3212 | #if HAVE_LCHOWN |
3213 | PHP_FE(lchgrp, arginfo_lchgrp) |
3214 | #endif |
3215 | PHP_FE(chmod, arginfo_chmod) |
3216 | #if HAVE_UTIME |
3217 | PHP_FE(touch, arginfo_touch) |
3218 | #endif |
3219 | PHP_FE(clearstatcache, arginfo_clearstatcache) |
3220 | PHP_FE(disk_total_space, arginfo_disk_total_space) |
3221 | PHP_FE(disk_free_space, arginfo_disk_free_space) |
3222 | PHP_FALIAS(diskfreespace, disk_free_space, arginfo_disk_free_space) |
3223 | PHP_FE(realpath_cache_size, arginfo_realpath_cache_size) |
3224 | PHP_FE(realpath_cache_get, arginfo_realpath_cache_get) |
3225 | |
3226 | /* functions from mail.c */ |
3227 | PHP_FE(mail, arginfo_mail) |
3228 | PHP_FE(ezmlm_hash, arginfo_ezmlm_hash) |
3229 | |
3230 | /* functions from syslog.c */ |
3231 | #ifdef HAVE_SYSLOG_H |
3232 | PHP_FE(openlog, arginfo_openlog) |
3233 | PHP_FE(syslog, arginfo_syslog) |
3234 | PHP_FE(closelog, arginfo_closelog) |
3235 | #endif |
3236 | |
3237 | /* functions from lcg.c */ |
3238 | PHP_FE(lcg_value, arginfo_lcg_value) |
3239 | |
3240 | /* functions from metaphone.c */ |
3241 | PHP_FE(metaphone, arginfo_metaphone) |
3242 | |
3243 | /* functions from output.c */ |
3244 | PHP_FE(ob_start, arginfo_ob_start) |
3245 | PHP_FE(ob_flush, arginfo_ob_flush) |
3246 | PHP_FE(ob_clean, arginfo_ob_clean) |
3247 | PHP_FE(ob_end_flush, arginfo_ob_end_flush) |
3248 | PHP_FE(ob_end_clean, arginfo_ob_end_clean) |
3249 | PHP_FE(ob_get_flush, arginfo_ob_get_flush) |
3250 | PHP_FE(ob_get_clean, arginfo_ob_get_clean) |
3251 | PHP_FE(ob_get_length, arginfo_ob_get_length) |
3252 | PHP_FE(ob_get_level, arginfo_ob_get_level) |
3253 | PHP_FE(ob_get_status, arginfo_ob_get_status) |
3254 | PHP_FE(ob_get_contents, arginfo_ob_get_contents) |
3255 | PHP_FE(ob_implicit_flush, arginfo_ob_implicit_flush) |
3256 | PHP_FE(ob_list_handlers, arginfo_ob_list_handlers) |
3257 | |
3258 | /* functions from array.c */ |
3259 | PHP_FE(ksort, arginfo_ksort) |
3260 | PHP_FE(krsort, arginfo_krsort) |
3261 | PHP_FE(natsort, arginfo_natsort) |
3262 | PHP_FE(natcasesort, arginfo_natcasesort) |
3263 | PHP_FE(asort, arginfo_asort) |
3264 | PHP_FE(arsort, arginfo_arsort) |
3265 | PHP_FE(sort, arginfo_sort) |
3266 | PHP_FE(rsort, arginfo_rsort) |
3267 | PHP_FE(usort, arginfo_usort) |
3268 | PHP_FE(uasort, arginfo_uasort) |
3269 | PHP_FE(uksort, arginfo_uksort) |
3270 | PHP_FE(shuffle, arginfo_shuffle) |
3271 | PHP_FE(array_walk, arginfo_array_walk) |
3272 | PHP_FE(array_walk_recursive, arginfo_array_walk_recursive) |
3273 | PHP_FE(count, arginfo_count) |
3274 | PHP_FE(end, arginfo_end) |
3275 | PHP_FE(prev, arginfo_prev) |
3276 | PHP_FE(next, arginfo_next) |
3277 | PHP_FE(reset, arginfo_reset) |
3278 | PHP_FE(current, arginfo_current) |
3279 | PHP_FE(key, arginfo_key) |
3280 | PHP_FE(min, arginfo_min) |
3281 | PHP_FE(max, arginfo_max) |
3282 | PHP_FE(in_array, arginfo_in_array) |
3283 | PHP_FE(array_search, arginfo_array_search) |
3284 | PHP_FE(extract, arginfo_extract) |
3285 | PHP_FE(compact, arginfo_compact) |
3286 | PHP_FE(array_fill, arginfo_array_fill) |
3287 | PHP_FE(array_fill_keys, arginfo_array_fill_keys) |
3288 | PHP_FE(range, arginfo_range) |
3289 | PHP_FE(array_multisort, arginfo_array_multisort) |
3290 | PHP_FE(array_push, arginfo_array_push) |
3291 | PHP_FE(array_pop, arginfo_array_pop) |
3292 | PHP_FE(array_shift, arginfo_array_shift) |
3293 | PHP_FE(array_unshift, arginfo_array_unshift) |
3294 | PHP_FE(array_splice, arginfo_array_splice) |
3295 | PHP_FE(array_slice, arginfo_array_slice) |
3296 | PHP_FE(array_merge, arginfo_array_merge) |
3297 | PHP_FE(array_merge_recursive, arginfo_array_merge_recursive) |
3298 | PHP_FE(array_replace, arginfo_array_replace) |
3299 | PHP_FE(array_replace_recursive, arginfo_array_replace_recursive) |
3300 | PHP_FE(array_keys, arginfo_array_keys) |
3301 | PHP_FE(array_values, arginfo_array_values) |
3302 | PHP_FE(array_count_values, arginfo_array_count_values) |
3303 | PHP_FE(array_column, arginfo_array_column) |
3304 | PHP_FE(array_reverse, arginfo_array_reverse) |
3305 | PHP_FE(array_reduce, arginfo_array_reduce) |
3306 | PHP_FE(array_pad, arginfo_array_pad) |
3307 | PHP_FE(array_flip, arginfo_array_flip) |
3308 | PHP_FE(array_change_key_case, arginfo_array_change_key_case) |
3309 | PHP_FE(array_rand, arginfo_array_rand) |
3310 | PHP_FE(array_unique, arginfo_array_unique) |
3311 | PHP_FE(array_intersect, arginfo_array_intersect) |
3312 | PHP_FE(array_intersect_key, arginfo_array_intersect_key) |
3313 | PHP_FE(array_intersect_ukey, arginfo_array_intersect_ukey) |
3314 | PHP_FE(array_uintersect, arginfo_array_uintersect) |
3315 | PHP_FE(array_intersect_assoc, arginfo_array_intersect_assoc) |
3316 | PHP_FE(array_uintersect_assoc, arginfo_array_uintersect_assoc) |
3317 | PHP_FE(array_intersect_uassoc, arginfo_array_intersect_uassoc) |
3318 | PHP_FE(array_uintersect_uassoc, arginfo_array_uintersect_uassoc) |
3319 | PHP_FE(array_diff, arginfo_array_diff) |
3320 | PHP_FE(array_diff_key, arginfo_array_diff_key) |
3321 | PHP_FE(array_diff_ukey, arginfo_array_diff_ukey) |
3322 | PHP_FE(array_udiff, arginfo_array_udiff) |
3323 | PHP_FE(array_diff_assoc, arginfo_array_diff_assoc) |
3324 | PHP_FE(array_udiff_assoc, arginfo_array_udiff_assoc) |
3325 | PHP_FE(array_diff_uassoc, arginfo_array_diff_uassoc) |
3326 | PHP_FE(array_udiff_uassoc, arginfo_array_udiff_uassoc) |
3327 | PHP_FE(array_sum, arginfo_array_sum) |
3328 | PHP_FE(array_product, arginfo_array_product) |
3329 | PHP_FE(array_filter, arginfo_array_filter) |
3330 | PHP_FE(array_map, arginfo_array_map) |
3331 | PHP_FE(array_chunk, arginfo_array_chunk) |
3332 | PHP_FE(array_combine, arginfo_array_combine) |
3333 | PHP_FE(array_key_exists, arginfo_array_key_exists) |
3334 | |
3335 | /* aliases from array.c */ |
3336 | PHP_FALIAS(pos, current, arginfo_current) |
3337 | PHP_FALIAS(sizeof, count, arginfo_count) |
3338 | PHP_FALIAS(key_exists, array_key_exists, arginfo_array_key_exists) |
3339 | |
3340 | /* functions from assert.c */ |
3341 | PHP_FE(assert, arginfo_assert) |
3342 | PHP_FE(assert_options, arginfo_assert_options) |
3343 | |
3344 | /* functions from versioning.c */ |
3345 | PHP_FE(version_compare, arginfo_version_compare) |
3346 | |
3347 | /* functions from ftok.c*/ |
3348 | #if HAVE_FTOK |
3349 | PHP_FE(ftok, arginfo_ftok) |
3350 | #endif |
3351 | |
3352 | PHP_FE(str_rot13, arginfo_str_rot13) |
3353 | PHP_FE(stream_get_filters, arginfo_stream_get_filters) |
3354 | PHP_FE(stream_filter_register, arginfo_stream_filter_register) |
3355 | PHP_FE(stream_bucket_make_writeable, arginfo_stream_bucket_make_writeable) |
3356 | PHP_FE(stream_bucket_prepend, arginfo_stream_bucket_prepend) |
3357 | PHP_FE(stream_bucket_append, arginfo_stream_bucket_append) |
3358 | PHP_FE(stream_bucket_new, arginfo_stream_bucket_new) |
3359 | |
3360 | PHP_FE(output_add_rewrite_var, arginfo_output_add_rewrite_var) |
3361 | PHP_FE(output_reset_rewrite_vars, arginfo_output_reset_rewrite_vars) |
3362 | |
3363 | PHP_FE(sys_get_temp_dir, arginfo_sys_get_temp_dir) |
3364 | |
3365 | PHP_FE_END |
3366 | }; |
3367 | /* }}} */ |
3368 | |
3369 | static const zend_module_dep standard_deps[] = { /* {{{ */ |
3370 | ZEND_MOD_OPTIONAL("session" ) |
3371 | ZEND_MOD_END |
3372 | }; |
3373 | /* }}} */ |
3374 | |
3375 | zend_module_entry basic_functions_module = { /* {{{ */ |
3376 | STANDARD_MODULE_HEADER_EX, |
3377 | NULL, |
3378 | standard_deps, |
3379 | "standard" , /* extension name */ |
3380 | basic_functions, /* function list */ |
3381 | PHP_MINIT(basic), /* process startup */ |
3382 | PHP_MSHUTDOWN(basic), /* process shutdown */ |
3383 | PHP_RINIT(basic), /* request startup */ |
3384 | PHP_RSHUTDOWN(basic), /* request shutdown */ |
3385 | PHP_MINFO(basic), /* extension info */ |
3386 | PHP_VERSION, /* extension version */ |
3387 | STANDARD_MODULE_PROPERTIES |
3388 | }; |
3389 | /* }}} */ |
3390 | |
3391 | #if defined(HAVE_PUTENV) |
3392 | static void php_putenv_destructor(putenv_entry *pe) /* {{{ */ |
3393 | { |
3394 | if (pe->previous_value) { |
3395 | #if _MSC_VER >= 1300 |
3396 | /* VS.Net has a bug in putenv() when setting a variable that |
3397 | * is already set; if the SetEnvironmentVariable() API call |
3398 | * fails, the Crt will double free() a string. |
3399 | * We try to avoid this by setting our own value first */ |
3400 | SetEnvironmentVariable(pe->key, "bugbug" ); |
3401 | #endif |
3402 | putenv(pe->previous_value); |
3403 | # if defined(PHP_WIN32) |
3404 | efree(pe->previous_value); |
3405 | # endif |
3406 | } else { |
3407 | # if HAVE_UNSETENV |
3408 | unsetenv(pe->key); |
3409 | # elif defined(PHP_WIN32) |
3410 | SetEnvironmentVariable(pe->key, NULL); |
3411 | # ifndef ZTS |
3412 | _putenv_s(pe->key, "" ); |
3413 | # endif |
3414 | # else |
3415 | char **env; |
3416 | |
3417 | for (env = environ; env != NULL && *env != NULL; env++) { |
3418 | if (!strncmp(*env, pe->key, pe->key_len) && (*env)[pe->key_len] == '=') { /* found it */ |
3419 | *env = "" ; |
3420 | break; |
3421 | } |
3422 | } |
3423 | # endif |
3424 | } |
3425 | #ifdef HAVE_TZSET |
3426 | /* don't forget to reset the various libc globals that |
3427 | * we might have changed by an earlier call to tzset(). */ |
3428 | if (!strncmp(pe->key, "TZ" , pe->key_len)) { |
3429 | tzset(); |
3430 | } |
3431 | #endif |
3432 | |
3433 | efree(pe->putenv_string); |
3434 | efree(pe->key); |
3435 | } |
3436 | /* }}} */ |
3437 | #endif |
3438 | |
3439 | static void basic_globals_ctor(php_basic_globals *basic_globals_p TSRMLS_DC) /* {{{ */ |
3440 | { |
3441 | BG(rand_is_seeded) = 0; |
3442 | BG(mt_rand_is_seeded) = 0; |
3443 | BG(umask) = -1; |
3444 | BG(next) = NULL; |
3445 | BG(left) = -1; |
3446 | BG(user_tick_functions) = NULL; |
3447 | BG(user_filter_map) = NULL; |
3448 | BG(serialize_lock) = 0; |
3449 | |
3450 | memset(&BG(serialize), 0, sizeof(BG(serialize))); |
3451 | memset(&BG(unserialize), 0, sizeof(BG(unserialize))); |
3452 | |
3453 | memset(&BG(url_adapt_state_ex), 0, sizeof(BG(url_adapt_state_ex))); |
3454 | |
3455 | #if defined(_REENTRANT) && defined(HAVE_MBRLEN) && defined(HAVE_MBSTATE_T) |
3456 | memset(&BG(mblen_state), 0, sizeof(BG(mblen_state))); |
3457 | #endif |
3458 | |
3459 | BG(incomplete_class) = incomplete_class_entry; |
3460 | BG(page_uid) = -1; |
3461 | BG(page_gid) = -1; |
3462 | } |
3463 | /* }}} */ |
3464 | |
3465 | static void basic_globals_dtor(php_basic_globals *basic_globals_p TSRMLS_DC) /* {{{ */ |
3466 | { |
3467 | if (BG(url_adapt_state_ex).tags) { |
3468 | zend_hash_destroy(BG(url_adapt_state_ex).tags); |
3469 | free(BG(url_adapt_state_ex).tags); |
3470 | } |
3471 | } |
3472 | /* }}} */ |
3473 | |
3474 | #define PHP_DOUBLE_INFINITY_HIGH 0x7ff00000 |
3475 | #define PHP_DOUBLE_QUIET_NAN_HIGH 0xfff80000 |
3476 | |
3477 | PHPAPI double php_get_nan(void) /* {{{ */ |
3478 | { |
3479 | #if HAVE_HUGE_VAL_NAN |
3480 | return HUGE_VAL + -HUGE_VAL; |
3481 | #elif defined(__i386__) || defined(_X86_) || defined(ALPHA) || defined(_ALPHA) || defined(__alpha) |
3482 | double val = 0.0; |
3483 | ((php_uint32*)&val)[1] = PHP_DOUBLE_QUIET_NAN_HIGH; |
3484 | ((php_uint32*)&val)[0] = 0; |
3485 | return val; |
3486 | #elif HAVE_ATOF_ACCEPTS_NAN |
3487 | return atof("NAN" ); |
3488 | #else |
3489 | return 0.0/0.0; |
3490 | #endif |
3491 | } |
3492 | /* }}} */ |
3493 | |
3494 | PHPAPI double php_get_inf(void) /* {{{ */ |
3495 | { |
3496 | #if HAVE_HUGE_VAL_INF |
3497 | return HUGE_VAL; |
3498 | #elif defined(__i386__) || defined(_X86_) || defined(ALPHA) || defined(_ALPHA) || defined(__alpha) |
3499 | double val = 0.0; |
3500 | ((php_uint32*)&val)[1] = PHP_DOUBLE_INFINITY_HIGH; |
3501 | ((php_uint32*)&val)[0] = 0; |
3502 | return val; |
3503 | #elif HAVE_ATOF_ACCEPTS_INF |
3504 | return atof("INF" ); |
3505 | #else |
3506 | return 1.0/0.0; |
3507 | #endif |
3508 | } |
3509 | /* }}} */ |
3510 | |
3511 | #define BASIC_MINIT_SUBMODULE(module) \ |
3512 | if (PHP_MINIT(module)(INIT_FUNC_ARGS_PASSTHRU) == SUCCESS) {\ |
3513 | BASIC_ADD_SUBMODULE(module); \ |
3514 | } |
3515 | |
3516 | #define BASIC_ADD_SUBMODULE(module) \ |
3517 | zend_hash_add_empty_element(&basic_submodules, #module, strlen(#module)); |
3518 | |
3519 | #define BASIC_RINIT_SUBMODULE(module) \ |
3520 | if (zend_hash_exists(&basic_submodules, #module, strlen(#module))) { \ |
3521 | PHP_RINIT(module)(INIT_FUNC_ARGS_PASSTHRU); \ |
3522 | } |
3523 | |
3524 | #define BASIC_MINFO_SUBMODULE(module) \ |
3525 | if (zend_hash_exists(&basic_submodules, #module, strlen(#module))) { \ |
3526 | PHP_MINFO(module)(ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU); \ |
3527 | } |
3528 | |
3529 | #define BASIC_RSHUTDOWN_SUBMODULE(module) \ |
3530 | if (zend_hash_exists(&basic_submodules, #module, strlen(#module))) { \ |
3531 | PHP_RSHUTDOWN(module)(SHUTDOWN_FUNC_ARGS_PASSTHRU); \ |
3532 | } |
3533 | |
3534 | #define BASIC_MSHUTDOWN_SUBMODULE(module) \ |
3535 | if (zend_hash_exists(&basic_submodules, #module, strlen(#module))) { \ |
3536 | PHP_MSHUTDOWN(module)(SHUTDOWN_FUNC_ARGS_PASSTHRU); \ |
3537 | } |
3538 | |
3539 | PHP_MINIT_FUNCTION(basic) /* {{{ */ |
3540 | { |
3541 | #ifdef ZTS |
3542 | ts_allocate_id(&basic_globals_id, sizeof(php_basic_globals), (ts_allocate_ctor) basic_globals_ctor, (ts_allocate_dtor) basic_globals_dtor); |
3543 | #ifdef PHP_WIN32 |
3544 | ts_allocate_id(&php_win32_core_globals_id, sizeof(php_win32_core_globals), (ts_allocate_ctor)php_win32_core_globals_ctor, (ts_allocate_dtor)php_win32_core_globals_dtor ); |
3545 | #endif |
3546 | #else |
3547 | basic_globals_ctor(&basic_globals TSRMLS_CC); |
3548 | #ifdef PHP_WIN32 |
3549 | php_win32_core_globals_ctor(&the_php_win32_core_globals TSRMLS_CC); |
3550 | #endif |
3551 | #endif |
3552 | |
3553 | zend_hash_init(&basic_submodules, 0, NULL, NULL, 1); |
3554 | |
3555 | BG(incomplete_class) = incomplete_class_entry = php_create_incomplete_class(TSRMLS_C); |
3556 | |
3557 | REGISTER_LONG_CONSTANT("CONNECTION_ABORTED" , PHP_CONNECTION_ABORTED, CONST_CS | CONST_PERSISTENT); |
3558 | REGISTER_LONG_CONSTANT("CONNECTION_NORMAL" , PHP_CONNECTION_NORMAL, CONST_CS | CONST_PERSISTENT); |
3559 | REGISTER_LONG_CONSTANT("CONNECTION_TIMEOUT" , PHP_CONNECTION_TIMEOUT, CONST_CS | CONST_PERSISTENT); |
3560 | |
3561 | REGISTER_LONG_CONSTANT("INI_USER" , ZEND_INI_USER, CONST_CS | CONST_PERSISTENT); |
3562 | REGISTER_LONG_CONSTANT("INI_PERDIR" , ZEND_INI_PERDIR, CONST_CS | CONST_PERSISTENT); |
3563 | REGISTER_LONG_CONSTANT("INI_SYSTEM" , ZEND_INI_SYSTEM, CONST_CS | CONST_PERSISTENT); |
3564 | REGISTER_LONG_CONSTANT("INI_ALL" , ZEND_INI_ALL, CONST_CS | CONST_PERSISTENT); |
3565 | |
3566 | REGISTER_LONG_CONSTANT("INI_SCANNER_NORMAL" , ZEND_INI_SCANNER_NORMAL, CONST_CS | CONST_PERSISTENT); |
3567 | REGISTER_LONG_CONSTANT("INI_SCANNER_RAW" , ZEND_INI_SCANNER_RAW, CONST_CS | CONST_PERSISTENT); |
3568 | REGISTER_LONG_CONSTANT("INI_SCANNER_TYPED" , ZEND_INI_SCANNER_TYPED, CONST_CS | CONST_PERSISTENT); |
3569 | |
3570 | REGISTER_LONG_CONSTANT("PHP_URL_SCHEME" , PHP_URL_SCHEME, CONST_CS | CONST_PERSISTENT); |
3571 | REGISTER_LONG_CONSTANT("PHP_URL_HOST" , PHP_URL_HOST, CONST_CS | CONST_PERSISTENT); |
3572 | REGISTER_LONG_CONSTANT("PHP_URL_PORT" , PHP_URL_PORT, CONST_CS | CONST_PERSISTENT); |
3573 | REGISTER_LONG_CONSTANT("PHP_URL_USER" , PHP_URL_USER, CONST_CS | CONST_PERSISTENT); |
3574 | REGISTER_LONG_CONSTANT("PHP_URL_PASS" , PHP_URL_PASS, CONST_CS | CONST_PERSISTENT); |
3575 | REGISTER_LONG_CONSTANT("PHP_URL_PATH" , PHP_URL_PATH, CONST_CS | CONST_PERSISTENT); |
3576 | REGISTER_LONG_CONSTANT("PHP_URL_QUERY" , PHP_URL_QUERY, CONST_CS | CONST_PERSISTENT); |
3577 | REGISTER_LONG_CONSTANT("PHP_URL_FRAGMENT" , PHP_URL_FRAGMENT, CONST_CS | CONST_PERSISTENT); |
3578 | REGISTER_LONG_CONSTANT("PHP_QUERY_RFC1738" , PHP_QUERY_RFC1738, CONST_CS | CONST_PERSISTENT); |
3579 | REGISTER_LONG_CONSTANT("PHP_QUERY_RFC3986" , PHP_QUERY_RFC3986, CONST_CS | CONST_PERSISTENT); |
3580 | |
3581 | #define REGISTER_MATH_CONSTANT(x) REGISTER_DOUBLE_CONSTANT(#x, x, CONST_CS | CONST_PERSISTENT) |
3582 | REGISTER_MATH_CONSTANT(M_E); |
3583 | REGISTER_MATH_CONSTANT(M_LOG2E); |
3584 | REGISTER_MATH_CONSTANT(M_LOG10E); |
3585 | REGISTER_MATH_CONSTANT(M_LN2); |
3586 | REGISTER_MATH_CONSTANT(M_LN10); |
3587 | REGISTER_MATH_CONSTANT(M_PI); |
3588 | REGISTER_MATH_CONSTANT(M_PI_2); |
3589 | REGISTER_MATH_CONSTANT(M_PI_4); |
3590 | REGISTER_MATH_CONSTANT(M_1_PI); |
3591 | REGISTER_MATH_CONSTANT(M_2_PI); |
3592 | REGISTER_MATH_CONSTANT(M_SQRTPI); |
3593 | REGISTER_MATH_CONSTANT(M_2_SQRTPI); |
3594 | REGISTER_MATH_CONSTANT(M_LNPI); |
3595 | REGISTER_MATH_CONSTANT(M_EULER); |
3596 | REGISTER_MATH_CONSTANT(M_SQRT2); |
3597 | REGISTER_MATH_CONSTANT(M_SQRT1_2); |
3598 | REGISTER_MATH_CONSTANT(M_SQRT3); |
3599 | REGISTER_DOUBLE_CONSTANT("INF" , php_get_inf(), CONST_CS | CONST_PERSISTENT); |
3600 | REGISTER_DOUBLE_CONSTANT("NAN" , php_get_nan(), CONST_CS | CONST_PERSISTENT); |
3601 | |
3602 | REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_UP" , PHP_ROUND_HALF_UP, CONST_CS | CONST_PERSISTENT); |
3603 | REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_DOWN" , PHP_ROUND_HALF_DOWN, CONST_CS | CONST_PERSISTENT); |
3604 | REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_EVEN" , PHP_ROUND_HALF_EVEN, CONST_CS | CONST_PERSISTENT); |
3605 | REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_ODD" , PHP_ROUND_HALF_ODD, CONST_CS | CONST_PERSISTENT); |
3606 | |
3607 | #if ENABLE_TEST_CLASS |
3608 | test_class_startup(); |
3609 | #endif |
3610 | |
3611 | register_phpinfo_constants(INIT_FUNC_ARGS_PASSTHRU); |
3612 | register_html_constants(INIT_FUNC_ARGS_PASSTHRU); |
3613 | register_string_constants(INIT_FUNC_ARGS_PASSTHRU); |
3614 | |
3615 | BASIC_ADD_SUBMODULE(dl) |
3616 | BASIC_ADD_SUBMODULE(mail) |
3617 | BASIC_ADD_SUBMODULE(streams) |
3618 | BASIC_MINIT_SUBMODULE(file) |
3619 | BASIC_MINIT_SUBMODULE(pack) |
3620 | BASIC_MINIT_SUBMODULE(browscap) |
3621 | BASIC_MINIT_SUBMODULE(standard_filters) |
3622 | BASIC_MINIT_SUBMODULE(user_filters) |
3623 | BASIC_MINIT_SUBMODULE(password) |
3624 | |
3625 | #if defined(HAVE_LOCALECONV) && defined(ZTS) |
3626 | BASIC_MINIT_SUBMODULE(localeconv) |
3627 | #endif |
3628 | |
3629 | #if defined(HAVE_NL_LANGINFO) |
3630 | BASIC_MINIT_SUBMODULE(nl_langinfo) |
3631 | #endif |
3632 | |
3633 | #if HAVE_CRYPT |
3634 | BASIC_MINIT_SUBMODULE(crypt) |
3635 | #endif |
3636 | |
3637 | BASIC_MINIT_SUBMODULE(lcg) |
3638 | |
3639 | BASIC_MINIT_SUBMODULE(dir) |
3640 | #ifdef HAVE_SYSLOG_H |
3641 | BASIC_MINIT_SUBMODULE(syslog) |
3642 | #endif |
3643 | BASIC_MINIT_SUBMODULE(array) |
3644 | BASIC_MINIT_SUBMODULE(assert) |
3645 | BASIC_MINIT_SUBMODULE(url_scanner_ex) |
3646 | #ifdef PHP_CAN_SUPPORT_PROC_OPEN |
3647 | BASIC_MINIT_SUBMODULE(proc_open) |
3648 | #endif |
3649 | |
3650 | BASIC_MINIT_SUBMODULE(user_streams) |
3651 | BASIC_MINIT_SUBMODULE(imagetypes) |
3652 | |
3653 | php_register_url_stream_wrapper("php" , &php_stream_php_wrapper TSRMLS_CC); |
3654 | php_register_url_stream_wrapper("file" , &php_plain_files_wrapper TSRMLS_CC); |
3655 | #ifdef HAVE_GLOB |
3656 | php_register_url_stream_wrapper("glob" , &php_glob_stream_wrapper TSRMLS_CC); |
3657 | #endif |
3658 | php_register_url_stream_wrapper("data" , &php_stream_rfc2397_wrapper TSRMLS_CC); |
3659 | php_register_url_stream_wrapper("http" , &php_stream_http_wrapper TSRMLS_CC); |
3660 | php_register_url_stream_wrapper("ftp" , &php_stream_ftp_wrapper TSRMLS_CC); |
3661 | |
3662 | #if defined(PHP_WIN32) || (HAVE_DNS_SEARCH_FUNC && !(defined(__BEOS__) || defined(NETWARE))) |
3663 | # if defined(PHP_WIN32) || HAVE_FULL_DNS_FUNCS |
3664 | BASIC_MINIT_SUBMODULE(dns) |
3665 | # endif |
3666 | #endif |
3667 | |
3668 | return SUCCESS; |
3669 | } |
3670 | /* }}} */ |
3671 | |
3672 | PHP_MSHUTDOWN_FUNCTION(basic) /* {{{ */ |
3673 | { |
3674 | #ifdef HAVE_SYSLOG_H |
3675 | PHP_MSHUTDOWN(syslog)(SHUTDOWN_FUNC_ARGS_PASSTHRU); |
3676 | #endif |
3677 | #ifdef ZTS |
3678 | ts_free_id(basic_globals_id); |
3679 | #ifdef PHP_WIN32 |
3680 | ts_free_id(php_win32_core_globals_id); |
3681 | #endif |
3682 | #else |
3683 | basic_globals_dtor(&basic_globals TSRMLS_CC); |
3684 | #ifdef PHP_WIN32 |
3685 | php_win32_core_globals_dtor(&the_php_win32_core_globals TSRMLS_CC); |
3686 | #endif |
3687 | #endif |
3688 | |
3689 | php_unregister_url_stream_wrapper("php" TSRMLS_CC); |
3690 | php_unregister_url_stream_wrapper("http" TSRMLS_CC); |
3691 | php_unregister_url_stream_wrapper("ftp" TSRMLS_CC); |
3692 | |
3693 | BASIC_MSHUTDOWN_SUBMODULE(browscap) |
3694 | BASIC_MSHUTDOWN_SUBMODULE(array) |
3695 | BASIC_MSHUTDOWN_SUBMODULE(assert) |
3696 | BASIC_MSHUTDOWN_SUBMODULE(url_scanner_ex) |
3697 | BASIC_MSHUTDOWN_SUBMODULE(file) |
3698 | BASIC_MSHUTDOWN_SUBMODULE(standard_filters) |
3699 | #if defined(HAVE_LOCALECONV) && defined(ZTS) |
3700 | BASIC_MSHUTDOWN_SUBMODULE(localeconv) |
3701 | #endif |
3702 | #if HAVE_CRYPT |
3703 | BASIC_MSHUTDOWN_SUBMODULE(crypt) |
3704 | #endif |
3705 | |
3706 | zend_hash_destroy(&basic_submodules); |
3707 | return SUCCESS; |
3708 | } |
3709 | /* }}} */ |
3710 | |
3711 | PHP_RINIT_FUNCTION(basic) /* {{{ */ |
3712 | { |
3713 | memset(BG(strtok_table), 0, 256); |
3714 | |
3715 | BG(serialize_lock) = 0; |
3716 | memset(&BG(serialize), 0, sizeof(BG(serialize))); |
3717 | memset(&BG(unserialize), 0, sizeof(BG(unserialize))); |
3718 | |
3719 | BG(strtok_string) = NULL; |
3720 | BG(strtok_zval) = NULL; |
3721 | BG(strtok_last) = NULL; |
3722 | BG(locale_string) = NULL; |
3723 | BG(array_walk_fci) = empty_fcall_info; |
3724 | BG(array_walk_fci_cache) = empty_fcall_info_cache; |
3725 | BG(user_compare_fci) = empty_fcall_info; |
3726 | BG(user_compare_fci_cache) = empty_fcall_info_cache; |
3727 | BG(page_uid) = -1; |
3728 | BG(page_gid) = -1; |
3729 | BG(page_inode) = -1; |
3730 | BG(page_mtime) = -1; |
3731 | #ifdef HAVE_PUTENV |
3732 | if (zend_hash_init(&BG(putenv_ht), 1, NULL, (void (*)(void *)) php_putenv_destructor, 0) == FAILURE) { |
3733 | return FAILURE; |
3734 | } |
3735 | #endif |
3736 | BG(user_shutdown_function_names) = NULL; |
3737 | |
3738 | PHP_RINIT(filestat)(INIT_FUNC_ARGS_PASSTHRU); |
3739 | #ifdef HAVE_SYSLOG_H |
3740 | BASIC_RINIT_SUBMODULE(syslog) |
3741 | #endif |
3742 | BASIC_RINIT_SUBMODULE(dir) |
3743 | BASIC_RINIT_SUBMODULE(url_scanner_ex) |
3744 | |
3745 | /* Setup default context */ |
3746 | FG(default_context) = NULL; |
3747 | |
3748 | /* Default to global wrappers only */ |
3749 | FG(stream_wrappers) = NULL; |
3750 | |
3751 | /* Default to global filters only */ |
3752 | FG(stream_filters) = NULL; |
3753 | |
3754 | return SUCCESS; |
3755 | } |
3756 | /* }}} */ |
3757 | |
3758 | PHP_RSHUTDOWN_FUNCTION(basic) /* {{{ */ |
3759 | { |
3760 | if (BG(strtok_zval)) { |
3761 | zval_ptr_dtor(&BG(strtok_zval)); |
3762 | } |
3763 | BG(strtok_string) = NULL; |
3764 | BG(strtok_zval) = NULL; |
3765 | #ifdef HAVE_PUTENV |
3766 | zend_hash_destroy(&BG(putenv_ht)); |
3767 | #endif |
3768 | |
3769 | if (BG(umask) != -1) { |
3770 | umask(BG(umask)); |
3771 | } |
3772 | |
3773 | /* Check if locale was changed and change it back |
3774 | * to the value in startup environment */ |
3775 | if (BG(locale_string) != NULL) { |
3776 | setlocale(LC_ALL, "C" ); |
3777 | setlocale(LC_CTYPE, "" ); |
3778 | zend_update_current_locale(); |
3779 | } |
3780 | STR_FREE(BG(locale_string)); |
3781 | BG(locale_string) = NULL; |
3782 | |
3783 | /* FG(stream_wrappers) and FG(stream_filters) are destroyed |
3784 | * during php_request_shutdown() */ |
3785 | |
3786 | PHP_RSHUTDOWN(filestat)(SHUTDOWN_FUNC_ARGS_PASSTHRU); |
3787 | #ifdef HAVE_SYSLOG_H |
3788 | #ifdef PHP_WIN32 |
3789 | BASIC_RSHUTDOWN_SUBMODULE(syslog)(SHUTDOWN_FUNC_ARGS_PASSTHRU); |
3790 | #endif |
3791 | #endif |
3792 | BASIC_RSHUTDOWN_SUBMODULE(assert) |
3793 | BASIC_RSHUTDOWN_SUBMODULE(url_scanner_ex) |
3794 | BASIC_RSHUTDOWN_SUBMODULE(streams) |
3795 | #ifdef PHP_WIN32 |
3796 | BASIC_RSHUTDOWN_SUBMODULE(win32_core_globals) |
3797 | #endif |
3798 | |
3799 | if (BG(user_tick_functions)) { |
3800 | zend_llist_destroy(BG(user_tick_functions)); |
3801 | efree(BG(user_tick_functions)); |
3802 | BG(user_tick_functions) = NULL; |
3803 | } |
3804 | |
3805 | BASIC_RSHUTDOWN_SUBMODULE(user_filters) |
3806 | BASIC_RSHUTDOWN_SUBMODULE(browscap) |
3807 | |
3808 | BG(page_uid) = -1; |
3809 | BG(page_gid) = -1; |
3810 | return SUCCESS; |
3811 | } |
3812 | /* }}} */ |
3813 | |
3814 | PHP_MINFO_FUNCTION(basic) /* {{{ */ |
3815 | { |
3816 | php_info_print_table_start(); |
3817 | BASIC_MINFO_SUBMODULE(dl) |
3818 | BASIC_MINFO_SUBMODULE(mail) |
3819 | php_info_print_table_end(); |
3820 | BASIC_MINFO_SUBMODULE(assert) |
3821 | } |
3822 | /* }}} */ |
3823 | |
3824 | /* {{{ proto mixed constant(string const_name) |
3825 | Given the name of a constant this function will return the constant's associated value */ |
3826 | PHP_FUNCTION(constant) |
3827 | { |
3828 | char *const_name; |
3829 | int const_name_len; |
3830 | |
3831 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s" , &const_name, &const_name_len) == FAILURE) { |
3832 | return; |
3833 | } |
3834 | |
3835 | if (!zend_get_constant_ex(const_name, const_name_len, return_value, NULL, ZEND_FETCH_CLASS_SILENT TSRMLS_CC)) { |
3836 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't find constant %s" , const_name); |
3837 | RETURN_NULL(); |
3838 | } |
3839 | } |
3840 | /* }}} */ |
3841 | |
3842 | #ifdef HAVE_INET_NTOP |
3843 | /* {{{ proto string inet_ntop(string in_addr) |
3844 | Converts a packed inet address to a human readable IP address string */ |
3845 | PHP_NAMED_FUNCTION(php_inet_ntop) |
3846 | { |
3847 | char *address; |
3848 | int address_len, af = AF_INET; |
3849 | char buffer[40]; |
3850 | |
3851 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s" , &address, &address_len) == FAILURE) { |
3852 | RETURN_FALSE; |
3853 | } |
3854 | |
3855 | #ifdef HAVE_IPV6 |
3856 | if (address_len == 16) { |
3857 | af = AF_INET6; |
3858 | } else |
3859 | #endif |
3860 | if (address_len != 4) { |
3861 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid in_addr value" ); |
3862 | RETURN_FALSE; |
3863 | } |
3864 | |
3865 | if (!inet_ntop(af, address, buffer, sizeof(buffer))) { |
3866 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "An unknown error occurred" ); |
3867 | RETURN_FALSE; |
3868 | } |
3869 | |
3870 | RETURN_STRING(buffer, 1); |
3871 | } |
3872 | /* }}} */ |
3873 | #endif /* HAVE_INET_NTOP */ |
3874 | |
3875 | #ifdef HAVE_INET_PTON |
3876 | /* {{{ proto string inet_pton(string ip_address) |
3877 | Converts a human readable IP address to a packed binary string */ |
3878 | PHP_NAMED_FUNCTION(php_inet_pton) |
3879 | { |
3880 | int ret, af = AF_INET; |
3881 | char *address; |
3882 | int address_len; |
3883 | char buffer[17]; |
3884 | |
3885 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s" , &address, &address_len) == FAILURE) { |
3886 | RETURN_FALSE; |
3887 | } |
3888 | |
3889 | memset(buffer, 0, sizeof(buffer)); |
3890 | |
3891 | #ifdef HAVE_IPV6 |
3892 | if (strchr(address, ':')) { |
3893 | af = AF_INET6; |
3894 | } else |
3895 | #endif |
3896 | if (!strchr(address, '.')) { |
3897 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unrecognized address %s" , address); |
3898 | RETURN_FALSE; |
3899 | } |
3900 | |
3901 | ret = inet_pton(af, address, buffer); |
3902 | |
3903 | if (ret <= 0) { |
3904 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unrecognized address %s" , address); |
3905 | RETURN_FALSE; |
3906 | } |
3907 | |
3908 | RETURN_STRINGL(buffer, af == AF_INET ? 4 : 16, 1); |
3909 | } |
3910 | /* }}} */ |
3911 | #endif /* HAVE_INET_PTON */ |
3912 | |
3913 | /* {{{ proto int ip2long(string ip_address) |
3914 | Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address */ |
3915 | PHP_FUNCTION(ip2long) |
3916 | { |
3917 | char *addr; |
3918 | int addr_len; |
3919 | #ifdef HAVE_INET_PTON |
3920 | struct in_addr ip; |
3921 | #else |
3922 | unsigned long int ip; |
3923 | #endif |
3924 | |
3925 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s" , &addr, &addr_len) == FAILURE) { |
3926 | return; |
3927 | } |
3928 | |
3929 | #ifdef HAVE_INET_PTON |
3930 | if (addr_len == 0 || inet_pton(AF_INET, addr, &ip) != 1) { |
3931 | RETURN_FALSE; |
3932 | } |
3933 | RETURN_LONG(ntohl(ip.s_addr)); |
3934 | #else |
3935 | if (addr_len == 0 || (ip = inet_addr(addr)) == INADDR_NONE) { |
3936 | /* The only special case when we should return -1 ourselves, |
3937 | * because inet_addr() considers it wrong. We return 0xFFFFFFFF and |
3938 | * not -1 or ~0 because of 32/64bit issues. */ |
3939 | if (addr_len == sizeof("255.255.255.255" ) - 1 && |
3940 | !memcmp(addr, "255.255.255.255" , sizeof("255.255.255.255" ) - 1) |
3941 | ) { |
3942 | RETURN_LONG(0xFFFFFFFF); |
3943 | } |
3944 | RETURN_FALSE; |
3945 | } |
3946 | RETURN_LONG(ntohl(ip)); |
3947 | #endif |
3948 | } |
3949 | /* }}} */ |
3950 | |
3951 | /* {{{ proto string long2ip(int proper_address) |
3952 | Converts an (IPv4) Internet network address into a string in Internet standard dotted format */ |
3953 | PHP_FUNCTION(long2ip) |
3954 | { |
3955 | /* "It's a long but it's not, PHP ints are signed */ |
3956 | char *ip; |
3957 | int ip_len; |
3958 | unsigned long n; |
3959 | struct in_addr myaddr; |
3960 | #ifdef HAVE_INET_PTON |
3961 | char str[40]; |
3962 | #endif |
3963 | |
3964 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s" , &ip, &ip_len) == FAILURE) { |
3965 | return; |
3966 | } |
3967 | |
3968 | n = strtoul(ip, NULL, 0); |
3969 | |
3970 | myaddr.s_addr = htonl(n); |
3971 | #ifdef HAVE_INET_PTON |
3972 | if (inet_ntop(AF_INET, &myaddr, str, sizeof(str))) { |
3973 | RETURN_STRING(str, 1); |
3974 | } else { |
3975 | RETURN_FALSE; |
3976 | } |
3977 | #else |
3978 | RETURN_STRING(inet_ntoa(myaddr), 1); |
3979 | #endif |
3980 | } |
3981 | /* }}} */ |
3982 | |
3983 | /******************** |
3984 | * System Functions * |
3985 | ********************/ |
3986 | |
3987 | /* {{{ proto string getenv(string varname) |
3988 | Get the value of an environment variable */ |
3989 | PHP_FUNCTION(getenv) |
3990 | { |
3991 | char *ptr, *str; |
3992 | int str_len; |
3993 | |
3994 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s" , &str, &str_len) == FAILURE) { |
3995 | RETURN_FALSE; |
3996 | } |
3997 | |
3998 | /* SAPI method returns an emalloc()'d string */ |
3999 | ptr = sapi_getenv(str, str_len TSRMLS_CC); |
4000 | if (ptr) { |
4001 | RETURN_STRING(ptr, 0); |
4002 | } |
4003 | #ifdef PHP_WIN32 |
4004 | { |
4005 | char dummybuf; |
4006 | int size; |
4007 | |
4008 | SetLastError(0); |
4009 | /*If the given bugger is not large enough to hold the data, the return value is |
4010 | the buffer size, in characters, required to hold the string and its terminating |
4011 | null character. We use this return value to alloc the final buffer. */ |
4012 | size = GetEnvironmentVariableA(str, &dummybuf, 0); |
4013 | if (GetLastError() == ERROR_ENVVAR_NOT_FOUND) { |
4014 | /* The environment variable doesn't exist. */ |
4015 | RETURN_FALSE; |
4016 | } |
4017 | |
4018 | if (size == 0) { |
4019 | /* env exists, but it is empty */ |
4020 | RETURN_EMPTY_STRING(); |
4021 | } |
4022 | |
4023 | ptr = emalloc(size); |
4024 | size = GetEnvironmentVariableA(str, ptr, size); |
4025 | if (size == 0) { |
4026 | /* has been removed between the two calls */ |
4027 | efree(ptr); |
4028 | RETURN_EMPTY_STRING(); |
4029 | } else { |
4030 | RETURN_STRING(ptr, 0); |
4031 | } |
4032 | } |
4033 | #else |
4034 | /* system method returns a const */ |
4035 | ptr = getenv(str); |
4036 | if (ptr) { |
4037 | RETURN_STRING(ptr, 1); |
4038 | } |
4039 | #endif |
4040 | RETURN_FALSE; |
4041 | } |
4042 | /* }}} */ |
4043 | |
4044 | #ifdef HAVE_PUTENV |
4045 | /* {{{ proto bool putenv(string setting) |
4046 | Set the value of an environment variable */ |
4047 | PHP_FUNCTION(putenv) |
4048 | { |
4049 | char *setting; |
4050 | int setting_len; |
4051 | char *p, **env; |
4052 | putenv_entry pe; |
4053 | #ifdef PHP_WIN32 |
4054 | char *value = NULL; |
4055 | int equals = 0; |
4056 | int error_code; |
4057 | #endif |
4058 | |
4059 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s" , &setting, &setting_len) == FAILURE) { |
4060 | return; |
4061 | } |
4062 | |
4063 | if(setting_len == 0 || setting[0] == '=') { |
4064 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid parameter syntax" ); |
4065 | RETURN_FALSE; |
4066 | } |
4067 | |
4068 | pe.putenv_string = estrndup(setting, setting_len); |
4069 | pe.key = estrndup(setting, setting_len); |
4070 | if ((p = strchr(pe.key, '='))) { /* nullify the '=' if there is one */ |
4071 | *p = '\0'; |
4072 | #ifdef PHP_WIN32 |
4073 | equals = 1; |
4074 | #endif |
4075 | } |
4076 | |
4077 | pe.key_len = strlen(pe.key); |
4078 | #ifdef PHP_WIN32 |
4079 | if (equals) { |
4080 | if (pe.key_len < setting_len - 1) { |
4081 | value = p + 1; |
4082 | } else { |
4083 | /* empty string*/ |
4084 | value = p; |
4085 | } |
4086 | } |
4087 | #endif |
4088 | |
4089 | zend_hash_del(&BG(putenv_ht), pe.key, pe.key_len+1); |
4090 | |
4091 | /* find previous value */ |
4092 | pe.previous_value = NULL; |
4093 | for (env = environ; env != NULL && *env != NULL; env++) { |
4094 | if (!strncmp(*env, pe.key, pe.key_len) && (*env)[pe.key_len] == '=') { /* found it */ |
4095 | #if defined(PHP_WIN32) |
4096 | /* must copy previous value because MSVCRT's putenv can free the string without notice */ |
4097 | pe.previous_value = estrdup(*env); |
4098 | #else |
4099 | pe.previous_value = *env; |
4100 | #endif |
4101 | break; |
4102 | } |
4103 | } |
4104 | |
4105 | #if HAVE_UNSETENV |
4106 | if (!p) { /* no '=' means we want to unset it */ |
4107 | unsetenv(pe.putenv_string); |
4108 | } |
4109 | if (!p || putenv(pe.putenv_string) == 0) { /* success */ |
4110 | #else |
4111 | # ifndef PHP_WIN32 |
4112 | if (putenv(pe.putenv_string) == 0) { /* success */ |
4113 | # else |
4114 | error_code = SetEnvironmentVariable(pe.key, value); |
4115 | |
4116 | if (error_code != 0 |
4117 | # ifndef ZTS |
4118 | /* We need both SetEnvironmentVariable and _putenv here as some |
4119 | dependency lib could use either way to read the environment. |
4120 | Obviously the CRT version will be useful more often. But |
4121 | generally, doing both brings us on the safe track at least |
4122 | in NTS build. */ |
4123 | && _putenv_s(pe.key, value ? value : "" ) == 0 |
4124 | # endif |
4125 | ) { /* success */ |
4126 | # endif |
4127 | #endif |
4128 | zend_hash_add(&BG(putenv_ht), pe.key, pe.key_len + 1, (void **) &pe, sizeof(putenv_entry), NULL); |
4129 | #ifdef HAVE_TZSET |
4130 | if (!strncmp(pe.key, "TZ" , pe.key_len)) { |
4131 | tzset(); |
4132 | } |
4133 | #endif |
4134 | RETURN_TRUE; |
4135 | } else { |
4136 | efree(pe.putenv_string); |
4137 | efree(pe.key); |
4138 | RETURN_FALSE; |
4139 | } |
4140 | } |
4141 | /* }}} */ |
4142 | #endif |
4143 | |
4144 | /* {{{ free_argv() |
4145 | Free the memory allocated to an argv array. */ |
4146 | static void free_argv(char **argv, int argc) |
4147 | { |
4148 | int i; |
4149 | |
4150 | if (argv) { |
4151 | for (i = 0; i < argc; i++) { |
4152 | if (argv[i]) { |
4153 | efree(argv[i]); |
4154 | } |
4155 | } |
4156 | efree(argv); |
4157 | } |
4158 | } |
4159 | /* }}} */ |
4160 | |
4161 | /* {{{ free_longopts() |
4162 | Free the memory allocated to an longopt array. */ |
4163 | static void free_longopts(opt_struct *longopts) |
4164 | { |
4165 | opt_struct *p; |
4166 | |
4167 | if (longopts) { |
4168 | for (p = longopts; p && p->opt_char != '-'; p++) { |
4169 | if (p->opt_name != NULL) { |
4170 | efree((char *)(p->opt_name)); |
4171 | } |
4172 | } |
4173 | } |
4174 | } |
4175 | /* }}} */ |
4176 | |
4177 | /* {{{ parse_opts() |
4178 | Convert the typical getopt input characters to the php_getopt struct array */ |
4179 | static int parse_opts(char * opts, opt_struct ** result) |
4180 | { |
4181 | opt_struct * paras = NULL; |
4182 | unsigned int i, count = 0; |
4183 | |
4184 | for (i = 0; i < strlen(opts); i++) { |
4185 | if ((opts[i] >= 48 && opts[i] <= 57) || |
4186 | (opts[i] >= 65 && opts[i] <= 90) || |
4187 | (opts[i] >= 97 && opts[i] <= 122) |
4188 | ) { |
4189 | count++; |
4190 | } |
4191 | } |
4192 | |
4193 | paras = safe_emalloc(sizeof(opt_struct), count, 0); |
4194 | memset(paras, 0, sizeof(opt_struct) * count); |
4195 | *result = paras; |
4196 | while ( (*opts >= 48 && *opts <= 57) || /* 0 - 9 */ |
4197 | (*opts >= 65 && *opts <= 90) || /* A - Z */ |
4198 | (*opts >= 97 && *opts <= 122) /* a - z */ |
4199 | ) { |
4200 | paras->opt_char = *opts; |
4201 | paras->need_param = (*(++opts) == ':') ? 1 : 0; |
4202 | paras->opt_name = NULL; |
4203 | if (paras->need_param == 1) { |
4204 | opts++; |
4205 | if (*opts == ':') { |
4206 | paras->need_param++; |
4207 | opts++; |
4208 | } |
4209 | } |
4210 | paras++; |
4211 | } |
4212 | return count; |
4213 | } |
4214 | /* }}} */ |
4215 | |
4216 | /* {{{ proto array getopt(string options [, array longopts]) |
4217 | Get options from the command line argument list */ |
4218 | PHP_FUNCTION(getopt) |
4219 | { |
4220 | char *options = NULL, **argv = NULL; |
4221 | char opt[2] = { '\0' }; |
4222 | char *optname; |
4223 | int argc = 0, options_len = 0, len, o; |
4224 | char *php_optarg = NULL; |
4225 | int php_optind = 1; |
4226 | zval *val, **args = NULL, *p_longopts = NULL; |
4227 | int optname_len = 0; |
4228 | opt_struct *opts, *orig_opts; |
4229 | |
4230 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|a" , &options, &options_len, &p_longopts) == FAILURE) { |
4231 | RETURN_FALSE; |
4232 | } |
4233 | |
4234 | /* Get argv from the global symbol table. We calculate argc ourselves |
4235 | * in order to be on the safe side, even though it is also available |
4236 | * from the symbol table. */ |
4237 | if ((PG(http_globals)[TRACK_VARS_SERVER] || zend_is_auto_global(ZEND_STRL("_SERVER" ) TSRMLS_CC)) && |
4238 | (zend_hash_find(Z_ARRVAL_P((PG(http_globals))[TRACK_VARS_SERVER]), "argv" , sizeof("argv" ), (void **) &args) != FAILURE || |
4239 | zend_hash_find(&EG(symbol_table), "argv" , sizeof("argv" ), (void **) &args) != FAILURE) && Z_TYPE_PP(args) == IS_ARRAY |
4240 | ) { |
4241 | int pos = 0; |
4242 | zval **entry; |
4243 | |
4244 | argc = zend_hash_num_elements(Z_ARRVAL_PP(args)); |
4245 | |
4246 | /* Attempt to allocate enough memory to hold all of the arguments |
4247 | * and a trailing NULL */ |
4248 | argv = (char **) safe_emalloc(sizeof(char *), (argc + 1), 0); |
4249 | |
4250 | /* Reset the array indexes. */ |
4251 | zend_hash_internal_pointer_reset(Z_ARRVAL_PP(args)); |
4252 | |
4253 | /* Iterate over the hash to construct the argv array. */ |
4254 | while (zend_hash_get_current_data(Z_ARRVAL_PP(args), (void **)&entry) == SUCCESS) { |
4255 | zval arg, *arg_ptr = *entry; |
4256 | |
4257 | if (Z_TYPE_PP(entry) != IS_STRING) { |
4258 | arg = **entry; |
4259 | zval_copy_ctor(&arg); |
4260 | convert_to_string(&arg); |
4261 | arg_ptr = &arg; |
4262 | } |
4263 | |
4264 | argv[pos++] = estrdup(Z_STRVAL_P(arg_ptr)); |
4265 | |
4266 | if (arg_ptr != *entry) { |
4267 | zval_dtor(&arg); |
4268 | } |
4269 | |
4270 | zend_hash_move_forward(Z_ARRVAL_PP(args)); |
4271 | } |
4272 | |
4273 | /* The C Standard requires argv[argc] to be NULL - this might |
4274 | * keep some getopt implementations happy. */ |
4275 | argv[argc] = NULL; |
4276 | } else { |
4277 | /* Return false if we can't find argv. */ |
4278 | RETURN_FALSE; |
4279 | } |
4280 | |
4281 | len = parse_opts(options, &opts); |
4282 | |
4283 | if (p_longopts) { |
4284 | int count; |
4285 | zval **entry; |
4286 | |
4287 | count = zend_hash_num_elements(Z_ARRVAL_P(p_longopts)); |
4288 | |
4289 | /* the first <len> slots are filled by the one short ops |
4290 | * we now extend our array and jump to the new added structs */ |
4291 | opts = (opt_struct *) erealloc(opts, sizeof(opt_struct) * (len + count + 1)); |
4292 | orig_opts = opts; |
4293 | opts += len; |
4294 | |
4295 | memset(opts, 0, count * sizeof(opt_struct)); |
4296 | |
4297 | /* Reset the array indexes. */ |
4298 | zend_hash_internal_pointer_reset(Z_ARRVAL_P(p_longopts)); |
4299 | |
4300 | /* Iterate over the hash to construct the argv array. */ |
4301 | while (zend_hash_get_current_data(Z_ARRVAL_P(p_longopts), (void **)&entry) == SUCCESS) { |
4302 | zval arg, *arg_ptr = *entry; |
4303 | |
4304 | if (Z_TYPE_PP(entry) != IS_STRING) { |
4305 | arg = **entry; |
4306 | zval_copy_ctor(&arg); |
4307 | convert_to_string(&arg); |
4308 | arg_ptr = &arg; |
4309 | } |
4310 | |
4311 | opts->need_param = 0; |
4312 | opts->opt_name = estrdup(Z_STRVAL_P(arg_ptr)); |
4313 | len = strlen(opts->opt_name); |
4314 | if ((len > 0) && (opts->opt_name[len - 1] == ':')) { |
4315 | opts->need_param++; |
4316 | opts->opt_name[len - 1] = '\0'; |
4317 | if ((len > 1) && (opts->opt_name[len - 2] == ':')) { |
4318 | opts->need_param++; |
4319 | opts->opt_name[len - 2] = '\0'; |
4320 | } |
4321 | } |
4322 | opts->opt_char = 0; |
4323 | opts++; |
4324 | |
4325 | if (arg_ptr != *entry) { |
4326 | zval_dtor(&arg); |
4327 | } |
4328 | |
4329 | zend_hash_move_forward(Z_ARRVAL_P(p_longopts)); |
4330 | } |
4331 | } else { |
4332 | opts = (opt_struct*) erealloc(opts, sizeof(opt_struct) * (len + 1)); |
4333 | orig_opts = opts; |
4334 | opts += len; |
4335 | } |
4336 | |
4337 | /* php_getopt want to identify the last param */ |
4338 | opts->opt_char = '-'; |
4339 | opts->need_param = 0; |
4340 | opts->opt_name = NULL; |
4341 | |
4342 | /* Initialize the return value as an array. */ |
4343 | array_init(return_value); |
4344 | |
4345 | /* after our pointer arithmetic jump back to the first element */ |
4346 | opts = orig_opts; |
4347 | |
4348 | while ((o = php_getopt(argc, argv, opts, &php_optarg, &php_optind, 0, 1)) != -1) { |
4349 | /* Skip unknown arguments. */ |
4350 | if (o == '?') { |
4351 | continue; |
4352 | } |
4353 | |
4354 | /* Prepare the option character and the argument string. */ |
4355 | if (o == 0) { |
4356 | optname = opts[php_optidx].opt_name; |
4357 | } else { |
4358 | if (o == 1) { |
4359 | o = '-'; |
4360 | } |
4361 | opt[0] = o; |
4362 | optname = opt; |
4363 | } |
4364 | |
4365 | MAKE_STD_ZVAL(val); |
4366 | if (php_optarg != NULL) { |
4367 | /* keep the arg as binary, since the encoding is not known */ |
4368 | ZVAL_STRING(val, php_optarg, 1); |
4369 | } else { |
4370 | ZVAL_FALSE(val); |
4371 | } |
4372 | |
4373 | /* Add this option / argument pair to the result hash. */ |
4374 | optname_len = strlen(optname); |
4375 | if (!(optname_len > 1 && optname[0] == '0') && is_numeric_string(optname, optname_len, NULL, NULL, 0) == IS_LONG) { |
4376 | /* numeric string */ |
4377 | int optname_int = atoi(optname); |
4378 | if (zend_hash_index_find(HASH_OF(return_value), optname_int, (void **)&args) != FAILURE) { |
4379 | if (Z_TYPE_PP(args) != IS_ARRAY) { |
4380 | convert_to_array_ex(args); |
4381 | } |
4382 | zend_hash_next_index_insert(HASH_OF(*args), (void *)&val, sizeof(zval *), NULL); |
4383 | } else { |
4384 | zend_hash_index_update(HASH_OF(return_value), optname_int, &val, sizeof(zval *), NULL); |
4385 | } |
4386 | } else { |
4387 | /* other strings */ |
4388 | if (zend_hash_find(HASH_OF(return_value), optname, strlen(optname)+1, (void **)&args) != FAILURE) { |
4389 | if (Z_TYPE_PP(args) != IS_ARRAY) { |
4390 | convert_to_array_ex(args); |
4391 | } |
4392 | zend_hash_next_index_insert(HASH_OF(*args), (void *)&val, sizeof(zval *), NULL); |
4393 | } else { |
4394 | zend_hash_add(HASH_OF(return_value), optname, strlen(optname)+1, (void *)&val, sizeof(zval *), NULL); |
4395 | } |
4396 | } |
4397 | |
4398 | php_optarg = NULL; |
4399 | } |
4400 | |
4401 | free_longopts(orig_opts); |
4402 | efree(orig_opts); |
4403 | free_argv(argv, argc); |
4404 | } |
4405 | /* }}} */ |
4406 | |
4407 | /* {{{ proto void flush(void) |
4408 | Flush the output buffer */ |
4409 | PHP_FUNCTION(flush) |
4410 | { |
4411 | sapi_flush(TSRMLS_C); |
4412 | } |
4413 | /* }}} */ |
4414 | |
4415 | /* {{{ proto void sleep(int seconds) |
4416 | Delay for a given number of seconds */ |
4417 | PHP_FUNCTION(sleep) |
4418 | { |
4419 | long num; |
4420 | |
4421 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l" , &num) == FAILURE) { |
4422 | RETURN_FALSE; |
4423 | } |
4424 | if (num < 0) { |
4425 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Number of seconds must be greater than or equal to 0" ); |
4426 | RETURN_FALSE; |
4427 | } |
4428 | #ifdef PHP_SLEEP_NON_VOID |
4429 | RETURN_LONG(php_sleep(num)); |
4430 | #else |
4431 | php_sleep(num); |
4432 | #endif |
4433 | |
4434 | } |
4435 | /* }}} */ |
4436 | |
4437 | /* {{{ proto void usleep(int micro_seconds) |
4438 | Delay for a given number of micro seconds */ |
4439 | PHP_FUNCTION(usleep) |
4440 | { |
4441 | #if HAVE_USLEEP |
4442 | long num; |
4443 | |
4444 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l" , &num) == FAILURE) { |
4445 | return; |
4446 | } |
4447 | if (num < 0) { |
4448 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Number of microseconds must be greater than or equal to 0" ); |
4449 | RETURN_FALSE; |
4450 | } |
4451 | usleep(num); |
4452 | #endif |
4453 | } |
4454 | /* }}} */ |
4455 | |
4456 | #if HAVE_NANOSLEEP |
4457 | /* {{{ proto mixed time_nanosleep(long seconds, long nanoseconds) |
4458 | Delay for a number of seconds and nano seconds */ |
4459 | PHP_FUNCTION(time_nanosleep) |
4460 | { |
4461 | long tv_sec, tv_nsec; |
4462 | struct timespec php_req, php_rem; |
4463 | |
4464 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll" , &tv_sec, &tv_nsec) == FAILURE) { |
4465 | return; |
4466 | } |
4467 | |
4468 | if (tv_sec < 0) { |
4469 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "The seconds value must be greater than 0" ); |
4470 | RETURN_FALSE; |
4471 | } |
4472 | if (tv_nsec < 0) { |
4473 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "The nanoseconds value must be greater than 0" ); |
4474 | RETURN_FALSE; |
4475 | } |
4476 | |
4477 | php_req.tv_sec = (time_t) tv_sec; |
4478 | php_req.tv_nsec = tv_nsec; |
4479 | if (!nanosleep(&php_req, &php_rem)) { |
4480 | RETURN_TRUE; |
4481 | } else if (errno == EINTR) { |
4482 | array_init(return_value); |
4483 | add_assoc_long_ex(return_value, "seconds" , sizeof("seconds" ), php_rem.tv_sec); |
4484 | add_assoc_long_ex(return_value, "nanoseconds" , sizeof("nanoseconds" ), php_rem.tv_nsec); |
4485 | return; |
4486 | } else if (errno == EINVAL) { |
4487 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "nanoseconds was not in the range 0 to 999 999 999 or seconds was negative" ); |
4488 | } |
4489 | |
4490 | RETURN_FALSE; |
4491 | } |
4492 | /* }}} */ |
4493 | |
4494 | /* {{{ proto mixed time_sleep_until(float timestamp) |
4495 | Make the script sleep until the specified time */ |
4496 | PHP_FUNCTION(time_sleep_until) |
4497 | { |
4498 | double d_ts, c_ts; |
4499 | struct timeval tm; |
4500 | struct timespec php_req, php_rem; |
4501 | |
4502 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "d" , &d_ts) == FAILURE) { |
4503 | return; |
4504 | } |
4505 | |
4506 | if (gettimeofday((struct timeval *) &tm, NULL) != 0) { |
4507 | RETURN_FALSE; |
4508 | } |
4509 | |
4510 | c_ts = (double)(d_ts - tm.tv_sec - tm.tv_usec / 1000000.00); |
4511 | if (c_ts < 0) { |
4512 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sleep until to time is less than current time" ); |
4513 | RETURN_FALSE; |
4514 | } |
4515 | |
4516 | php_req.tv_sec = (time_t) c_ts; |
4517 | if (php_req.tv_sec > c_ts) { /* rounding up occurred */ |
4518 | php_req.tv_sec--; |
4519 | } |
4520 | /* 1sec = 1000000000 nanoseconds */ |
4521 | php_req.tv_nsec = (long) ((c_ts - php_req.tv_sec) * 1000000000.00); |
4522 | |
4523 | while (nanosleep(&php_req, &php_rem)) { |
4524 | if (errno == EINTR) { |
4525 | php_req.tv_sec = php_rem.tv_sec; |
4526 | php_req.tv_nsec = php_rem.tv_nsec; |
4527 | } else { |
4528 | RETURN_FALSE; |
4529 | } |
4530 | } |
4531 | |
4532 | RETURN_TRUE; |
4533 | } |
4534 | /* }}} */ |
4535 | #endif |
4536 | |
4537 | /* {{{ proto string get_current_user(void) |
4538 | Get the name of the owner of the current PHP script */ |
4539 | PHP_FUNCTION(get_current_user) |
4540 | { |
4541 | if (zend_parse_parameters_none() == FAILURE) { |
4542 | return; |
4543 | } |
4544 | |
4545 | RETURN_STRING(php_get_current_user(TSRMLS_C), 1); |
4546 | } |
4547 | /* }}} */ |
4548 | |
4549 | /* {{{ add_config_entry_cb |
4550 | */ |
4551 | static int add_config_entry_cb(zval *entry TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) |
4552 | { |
4553 | zval *retval = (zval *)va_arg(args, zval*); |
4554 | zval *tmp; |
4555 | |
4556 | if (Z_TYPE_P(entry) == IS_STRING) { |
4557 | if (hash_key->nKeyLength > 0) { |
4558 | add_assoc_stringl_ex(retval, hash_key->arKey, hash_key->nKeyLength, Z_STRVAL_P(entry), Z_STRLEN_P(entry), 1); |
4559 | } else { |
4560 | add_index_stringl(retval, hash_key->h, Z_STRVAL_P(entry), Z_STRLEN_P(entry), 1); |
4561 | } |
4562 | } else if (Z_TYPE_P(entry) == IS_ARRAY) { |
4563 | MAKE_STD_ZVAL(tmp); |
4564 | array_init(tmp); |
4565 | zend_hash_apply_with_arguments(Z_ARRVAL_P(entry) TSRMLS_CC, (apply_func_args_t) add_config_entry_cb, 1, tmp); |
4566 | add_assoc_zval_ex(retval, hash_key->arKey, hash_key->nKeyLength, tmp); |
4567 | } |
4568 | return 0; |
4569 | } |
4570 | /* }}} */ |
4571 | |
4572 | /* {{{ proto mixed get_cfg_var(string option_name) |
4573 | Get the value of a PHP configuration option */ |
4574 | PHP_FUNCTION(get_cfg_var) |
4575 | { |
4576 | char *varname; |
4577 | int varname_len; |
4578 | zval *retval; |
4579 | |
4580 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s" , &varname, &varname_len) == FAILURE) { |
4581 | return; |
4582 | } |
4583 | |
4584 | retval = cfg_get_entry(varname, varname_len + 1); |
4585 | |
4586 | if (retval) { |
4587 | if (Z_TYPE_P(retval) == IS_ARRAY) { |
4588 | array_init(return_value); |
4589 | zend_hash_apply_with_arguments(Z_ARRVAL_P(retval) TSRMLS_CC, (apply_func_args_t) add_config_entry_cb, 1, return_value); |
4590 | return; |
4591 | } else { |
4592 | RETURN_STRING(Z_STRVAL_P(retval), 1); |
4593 | } |
4594 | } else { |
4595 | RETURN_FALSE; |
4596 | } |
4597 | } |
4598 | /* }}} */ |
4599 | |
4600 | /* {{{ proto bool set_magic_quotes_runtime(int new_setting) |
4601 | magic_quotes_runtime is not supported anymore */ |
4602 | PHP_FUNCTION(set_magic_quotes_runtime) |
4603 | { |
4604 | zend_bool new_setting; |
4605 | |
4606 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "b" , &new_setting) == FAILURE) { |
4607 | return; |
4608 | } |
4609 | |
4610 | if (new_setting) { |
4611 | php_error_docref(NULL TSRMLS_CC, E_CORE_ERROR, "magic_quotes_runtime is not supported anymore" ); |
4612 | } |
4613 | RETURN_FALSE; |
4614 | } |
4615 | /* }}} */ |
4616 | |
4617 | /* {{{ proto int get_magic_quotes_runtime(void) |
4618 | Get the current active configuration setting of magic_quotes_runtime */ |
4619 | PHP_FUNCTION(get_magic_quotes_runtime) |
4620 | { |
4621 | if (zend_parse_parameters_none() == FAILURE) { |
4622 | return; |
4623 | } |
4624 | RETURN_FALSE; |
4625 | } |
4626 | /* }}} */ |
4627 | |
4628 | /* {{{ proto int get_magic_quotes_gpc(void) |
4629 | Get the current active configuration setting of magic_quotes_gpc */ |
4630 | PHP_FUNCTION(get_magic_quotes_gpc) |
4631 | { |
4632 | if (zend_parse_parameters_none() == FAILURE) { |
4633 | return; |
4634 | } |
4635 | RETURN_FALSE; |
4636 | } |
4637 | /* }}} */ |
4638 | |
4639 | /* |
4640 | 1st arg = error message |
4641 | 2nd arg = error option |
4642 | 3rd arg = optional parameters (email address or tcp address) |
4643 | 4th arg = used for additional headers if email |
4644 | |
4645 | error options: |
4646 | 0 = send to php_error_log (uses syslog or file depending on ini setting) |
4647 | 1 = send via email to 3rd parameter 4th option = additional headers |
4648 | 2 = send via tcp/ip to 3rd parameter (name or ip:port) |
4649 | 3 = save to file in 3rd parameter |
4650 | 4 = send to SAPI logger directly |
4651 | */ |
4652 | |
4653 | /* {{{ proto bool error_log(string message [, int message_type [, string destination [, string extra_headers]]]) |
4654 | Send an error message somewhere */ |
4655 | PHP_FUNCTION(error_log) |
4656 | { |
4657 | char *message, *opt = NULL, * = NULL; |
4658 | int message_len, opt_len = 0, = 0; |
4659 | int opt_err = 0, argc = ZEND_NUM_ARGS(); |
4660 | long erropt = 0; |
4661 | |
4662 | if (zend_parse_parameters(argc TSRMLS_CC, "s|lps" , &message, &message_len, &erropt, &opt, &opt_len, &headers, &headers_len) == FAILURE) { |
4663 | return; |
4664 | } |
4665 | |
4666 | if (argc > 1) { |
4667 | opt_err = erropt; |
4668 | } |
4669 | |
4670 | if (_php_error_log_ex(opt_err, message, message_len, opt, headers TSRMLS_CC) == FAILURE) { |
4671 | RETURN_FALSE; |
4672 | } |
4673 | |
4674 | RETURN_TRUE; |
4675 | } |
4676 | /* }}} */ |
4677 | |
4678 | /* For BC (not binary-safe!) */ |
4679 | PHPAPI int _php_error_log(int opt_err, char *message, char *opt, char * TSRMLS_DC) /* {{{ */ |
4680 | { |
4681 | return _php_error_log_ex(opt_err, message, (opt_err == 3) ? strlen(message) : 0, opt, headers TSRMLS_CC); |
4682 | } |
4683 | /* }}} */ |
4684 | |
4685 | PHPAPI int _php_error_log_ex(int opt_err, char *message, int message_len, char *opt, char * TSRMLS_DC) /* {{{ */ |
4686 | { |
4687 | php_stream *stream = NULL; |
4688 | |
4689 | switch (opt_err) |
4690 | { |
4691 | case 1: /*send an email */ |
4692 | if (!php_mail(opt, "PHP error_log message" , message, headers, NULL TSRMLS_CC)) { |
4693 | return FAILURE; |
4694 | } |
4695 | break; |
4696 | |
4697 | case 2: /*send to an address */ |
4698 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "TCP/IP option not available!" ); |
4699 | return FAILURE; |
4700 | break; |
4701 | |
4702 | case 3: /*save to a file */ |
4703 | stream = php_stream_open_wrapper(opt, "a" , IGNORE_URL_WIN | REPORT_ERRORS, NULL); |
4704 | if (!stream) { |
4705 | return FAILURE; |
4706 | } |
4707 | php_stream_write(stream, message, message_len); |
4708 | php_stream_close(stream); |
4709 | break; |
4710 | |
4711 | case 4: /* send to SAPI */ |
4712 | if (sapi_module.log_message) { |
4713 | sapi_module.log_message(message TSRMLS_CC); |
4714 | } else { |
4715 | return FAILURE; |
4716 | } |
4717 | break; |
4718 | |
4719 | default: |
4720 | php_log_err(message TSRMLS_CC); |
4721 | break; |
4722 | } |
4723 | return SUCCESS; |
4724 | } |
4725 | /* }}} */ |
4726 | |
4727 | /* {{{ proto array error_get_last() |
4728 | Get the last occurred error as associative array. Returns NULL if there hasn't been an error yet. */ |
4729 | PHP_FUNCTION(error_get_last) |
4730 | { |
4731 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "" ) == FAILURE) { |
4732 | return; |
4733 | } |
4734 | |
4735 | if (PG(last_error_message)) { |
4736 | array_init(return_value); |
4737 | add_assoc_long_ex(return_value, "type" , sizeof("type" ), PG(last_error_type)); |
4738 | add_assoc_string_ex(return_value, "message" , sizeof("message" ), PG(last_error_message), 1); |
4739 | add_assoc_string_ex(return_value, "file" , sizeof("file" ), PG(last_error_file)?PG(last_error_file):"-" , 1 ); |
4740 | add_assoc_long_ex(return_value, "line" , sizeof("line" ), PG(last_error_lineno)); |
4741 | } |
4742 | } |
4743 | /* }}} */ |
4744 | |
4745 | /* {{{ proto mixed call_user_func(mixed function_name [, mixed parmeter] [, mixed ...]) |
4746 | Call a user function which is the first parameter */ |
4747 | PHP_FUNCTION(call_user_func) |
4748 | { |
4749 | zval *retval_ptr = NULL; |
4750 | zend_fcall_info fci; |
4751 | zend_fcall_info_cache fci_cache; |
4752 | |
4753 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "f*" , &fci, &fci_cache, &fci.params, &fci.param_count) == FAILURE) { |
4754 | return; |
4755 | } |
4756 | |
4757 | fci.retval_ptr_ptr = &retval_ptr; |
4758 | |
4759 | if (zend_call_function(&fci, &fci_cache TSRMLS_CC) == SUCCESS && fci.retval_ptr_ptr && *fci.retval_ptr_ptr) { |
4760 | COPY_PZVAL_TO_ZVAL(*return_value, *fci.retval_ptr_ptr); |
4761 | } |
4762 | |
4763 | if (fci.params) { |
4764 | efree(fci.params); |
4765 | } |
4766 | } |
4767 | /* }}} */ |
4768 | |
4769 | /* {{{ proto mixed call_user_func_array(string function_name, array parameters) |
4770 | Call a user function which is the first parameter with the arguments contained in array */ |
4771 | PHP_FUNCTION(call_user_func_array) |
4772 | { |
4773 | zval *params, *retval_ptr = NULL; |
4774 | zend_fcall_info fci; |
4775 | zend_fcall_info_cache fci_cache; |
4776 | |
4777 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "fa/" , &fci, &fci_cache, ¶ms) == FAILURE) { |
4778 | return; |
4779 | } |
4780 | |
4781 | zend_fcall_info_args(&fci, params TSRMLS_CC); |
4782 | fci.retval_ptr_ptr = &retval_ptr; |
4783 | |
4784 | if (zend_call_function(&fci, &fci_cache TSRMLS_CC) == SUCCESS && fci.retval_ptr_ptr && *fci.retval_ptr_ptr) { |
4785 | COPY_PZVAL_TO_ZVAL(*return_value, *fci.retval_ptr_ptr); |
4786 | } |
4787 | |
4788 | zend_fcall_info_args_clear(&fci, 1); |
4789 | } |
4790 | /* }}} */ |
4791 | |
4792 | /* {{{ proto mixed call_user_method(string method_name, mixed object [, mixed parameter] [, mixed ...]) |
4793 | Call a user method on a specific object or class */ |
4794 | PHP_FUNCTION(call_user_method) |
4795 | { |
4796 | zval ***params = NULL; |
4797 | int n_params = 0; |
4798 | zval *retval_ptr; |
4799 | zval *callback, *object; |
4800 | |
4801 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z/z*" , &callback, &object, ¶ms, &n_params) == FAILURE) { |
4802 | return; |
4803 | } |
4804 | |
4805 | if (Z_TYPE_P(object) != IS_OBJECT && |
4806 | Z_TYPE_P(object) != IS_STRING |
4807 | ) { |
4808 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Second argument is not an object or class name" ); |
4809 | if (params) { |
4810 | efree(params); |
4811 | } |
4812 | RETURN_FALSE; |
4813 | } |
4814 | |
4815 | convert_to_string(callback); |
4816 | |
4817 | if (call_user_function_ex(EG(function_table), &object, callback, &retval_ptr, n_params, params, 0, NULL TSRMLS_CC) == SUCCESS) { |
4818 | if (retval_ptr) { |
4819 | COPY_PZVAL_TO_ZVAL(*return_value, retval_ptr); |
4820 | } |
4821 | } else { |
4822 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call %s()" , Z_STRVAL_P(callback)); |
4823 | } |
4824 | if (n_params) { |
4825 | efree(params); |
4826 | } |
4827 | } |
4828 | /* }}} */ |
4829 | |
4830 | /* {{{ proto mixed call_user_method_array(string method_name, mixed object, array params) |
4831 | Call a user method on a specific object or class using a parameter array */ |
4832 | PHP_FUNCTION(call_user_method_array) |
4833 | { |
4834 | zval *params, ***method_args = NULL, *retval_ptr; |
4835 | zval *callback, *object; |
4836 | HashTable *params_ar; |
4837 | int num_elems, element = 0; |
4838 | |
4839 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z/zA/" , &callback, &object, ¶ms) == FAILURE) { |
4840 | return; |
4841 | } |
4842 | |
4843 | if (Z_TYPE_P(object) != IS_OBJECT && |
4844 | Z_TYPE_P(object) != IS_STRING |
4845 | ) { |
4846 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Second argument is not an object or class name" ); |
4847 | RETURN_FALSE; |
4848 | } |
4849 | |
4850 | convert_to_string(callback); |
4851 | |
4852 | params_ar = HASH_OF(params); |
4853 | num_elems = zend_hash_num_elements(params_ar); |
4854 | method_args = (zval ***) safe_emalloc(sizeof(zval **), num_elems, 0); |
4855 | |
4856 | for (zend_hash_internal_pointer_reset(params_ar); |
4857 | zend_hash_get_current_data(params_ar, (void **) &(method_args[element])) == SUCCESS; |
4858 | zend_hash_move_forward(params_ar) |
4859 | ) { |
4860 | element++; |
4861 | } |
4862 | |
4863 | if (call_user_function_ex(EG(function_table), &object, callback, &retval_ptr, num_elems, method_args, 0, NULL TSRMLS_CC) == SUCCESS) { |
4864 | if (retval_ptr) { |
4865 | COPY_PZVAL_TO_ZVAL(*return_value, retval_ptr); |
4866 | } |
4867 | } else { |
4868 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call %s()" , Z_STRVAL_P(callback)); |
4869 | } |
4870 | |
4871 | efree(method_args); |
4872 | } |
4873 | /* }}} */ |
4874 | |
4875 | /* {{{ proto mixed forward_static_call(mixed function_name [, mixed parmeter] [, mixed ...]) U |
4876 | Call a user function which is the first parameter */ |
4877 | PHP_FUNCTION(forward_static_call) |
4878 | { |
4879 | zval *retval_ptr = NULL; |
4880 | zend_fcall_info fci; |
4881 | zend_fcall_info_cache fci_cache; |
4882 | |
4883 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "f*" , &fci, &fci_cache, &fci.params, &fci.param_count) == FAILURE) { |
4884 | return; |
4885 | } |
4886 | |
4887 | if (!EG(active_op_array)->scope) { |
4888 | zend_error(E_ERROR, "Cannot call forward_static_call() when no class scope is active" ); |
4889 | } |
4890 | |
4891 | fci.retval_ptr_ptr = &retval_ptr; |
4892 | |
4893 | if (EG(called_scope) && |
4894 | instanceof_function(EG(called_scope), fci_cache.calling_scope TSRMLS_CC)) { |
4895 | fci_cache.called_scope = EG(called_scope); |
4896 | } |
4897 | |
4898 | if (zend_call_function(&fci, &fci_cache TSRMLS_CC) == SUCCESS && fci.retval_ptr_ptr && *fci.retval_ptr_ptr) { |
4899 | COPY_PZVAL_TO_ZVAL(*return_value, *fci.retval_ptr_ptr); |
4900 | } |
4901 | |
4902 | if (fci.params) { |
4903 | efree(fci.params); |
4904 | } |
4905 | } |
4906 | /* }}} */ |
4907 | |
4908 | /* {{{ proto mixed call_user_func_array(string function_name, array parameters) U |
4909 | Call a user function which is the first parameter with the arguments contained in array */ |
4910 | PHP_FUNCTION(forward_static_call_array) |
4911 | { |
4912 | zval *params, *retval_ptr = NULL; |
4913 | zend_fcall_info fci; |
4914 | zend_fcall_info_cache fci_cache; |
4915 | |
4916 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "fa/" , &fci, &fci_cache, ¶ms) == FAILURE) { |
4917 | return; |
4918 | } |
4919 | |
4920 | zend_fcall_info_args(&fci, params TSRMLS_CC); |
4921 | fci.retval_ptr_ptr = &retval_ptr; |
4922 | |
4923 | if (EG(called_scope) && |
4924 | instanceof_function(EG(called_scope), fci_cache.calling_scope TSRMLS_CC)) { |
4925 | fci_cache.called_scope = EG(called_scope); |
4926 | } |
4927 | |
4928 | if (zend_call_function(&fci, &fci_cache TSRMLS_CC) == SUCCESS && fci.retval_ptr_ptr && *fci.retval_ptr_ptr) { |
4929 | COPY_PZVAL_TO_ZVAL(*return_value, *fci.retval_ptr_ptr); |
4930 | } |
4931 | |
4932 | zend_fcall_info_args_clear(&fci, 1); |
4933 | } |
4934 | /* }}} */ |
4935 | |
4936 | void user_shutdown_function_dtor(php_shutdown_function_entry *shutdown_function_entry) /* {{{ */ |
4937 | { |
4938 | int i; |
4939 | |
4940 | for (i = 0; i < shutdown_function_entry->arg_count; i++) { |
4941 | zval_ptr_dtor(&shutdown_function_entry->arguments[i]); |
4942 | } |
4943 | efree(shutdown_function_entry->arguments); |
4944 | } |
4945 | /* }}} */ |
4946 | |
4947 | void user_tick_function_dtor(user_tick_function_entry *tick_function_entry) /* {{{ */ |
4948 | { |
4949 | int i; |
4950 | |
4951 | for (i = 0; i < tick_function_entry->arg_count; i++) { |
4952 | zval_ptr_dtor(&tick_function_entry->arguments[i]); |
4953 | } |
4954 | efree(tick_function_entry->arguments); |
4955 | } |
4956 | /* }}} */ |
4957 | |
4958 | static int user_shutdown_function_call(php_shutdown_function_entry *shutdown_function_entry TSRMLS_DC) /* {{{ */ |
4959 | { |
4960 | zval retval; |
4961 | char *function_name; |
4962 | |
4963 | if (!zend_is_callable(shutdown_function_entry->arguments[0], 0, &function_name TSRMLS_CC)) { |
4964 | php_error(E_WARNING, "(Registered shutdown functions) Unable to call %s() - function does not exist" , function_name); |
4965 | if (function_name) { |
4966 | efree(function_name); |
4967 | } |
4968 | return 0; |
4969 | } |
4970 | if (function_name) { |
4971 | efree(function_name); |
4972 | } |
4973 | |
4974 | if (call_user_function(EG(function_table), NULL, |
4975 | shutdown_function_entry->arguments[0], |
4976 | &retval, |
4977 | shutdown_function_entry->arg_count - 1, |
4978 | shutdown_function_entry->arguments + 1 |
4979 | TSRMLS_CC ) == SUCCESS) |
4980 | { |
4981 | zval_dtor(&retval); |
4982 | } |
4983 | return 0; |
4984 | } |
4985 | /* }}} */ |
4986 | |
4987 | static void user_tick_function_call(user_tick_function_entry *tick_fe TSRMLS_DC) /* {{{ */ |
4988 | { |
4989 | zval retval; |
4990 | zval *function = tick_fe->arguments[0]; |
4991 | |
4992 | /* Prevent reentrant calls to the same user ticks function */ |
4993 | if (! tick_fe->calling) { |
4994 | tick_fe->calling = 1; |
4995 | |
4996 | if (call_user_function( EG(function_table), NULL, |
4997 | function, |
4998 | &retval, |
4999 | tick_fe->arg_count - 1, |
5000 | tick_fe->arguments + 1 |
5001 | TSRMLS_CC) == SUCCESS) { |
5002 | zval_dtor(&retval); |
5003 | |
5004 | } else { |
5005 | zval **obj, **method; |
5006 | |
5007 | if (Z_TYPE_P(function) == IS_STRING) { |
5008 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call %s() - function does not exist" , Z_STRVAL_P(function)); |
5009 | } else if ( Z_TYPE_P(function) == IS_ARRAY |
5010 | && zend_hash_index_find(Z_ARRVAL_P(function), 0, (void **) &obj) == SUCCESS |
5011 | && zend_hash_index_find(Z_ARRVAL_P(function), 1, (void **) &method) == SUCCESS |
5012 | && Z_TYPE_PP(obj) == IS_OBJECT |
5013 | && Z_TYPE_PP(method) == IS_STRING) { |
5014 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call %s::%s() - function does not exist" , Z_OBJCE_PP(obj)->name, Z_STRVAL_PP(method)); |
5015 | } else { |
5016 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call tick function" ); |
5017 | } |
5018 | } |
5019 | |
5020 | tick_fe->calling = 0; |
5021 | } |
5022 | } |
5023 | /* }}} */ |
5024 | |
5025 | static void run_user_tick_functions(int tick_count) /* {{{ */ |
5026 | { |
5027 | TSRMLS_FETCH(); |
5028 | |
5029 | zend_llist_apply(BG(user_tick_functions), (llist_apply_func_t) user_tick_function_call TSRMLS_CC); |
5030 | } |
5031 | /* }}} */ |
5032 | |
5033 | static int user_tick_function_compare(user_tick_function_entry * tick_fe1, user_tick_function_entry * tick_fe2) /* {{{ */ |
5034 | { |
5035 | zval *func1 = tick_fe1->arguments[0]; |
5036 | zval *func2 = tick_fe2->arguments[0]; |
5037 | int ret; |
5038 | TSRMLS_FETCH(); |
5039 | |
5040 | if (Z_TYPE_P(func1) == IS_STRING && Z_TYPE_P(func2) == IS_STRING) { |
5041 | ret = (zend_binary_zval_strcmp(func1, func2) == 0); |
5042 | } else if (Z_TYPE_P(func1) == IS_ARRAY && Z_TYPE_P(func2) == IS_ARRAY) { |
5043 | zval result; |
5044 | zend_compare_arrays(&result, func1, func2 TSRMLS_CC); |
5045 | ret = (Z_LVAL(result) == 0); |
5046 | } else if (Z_TYPE_P(func1) == IS_OBJECT && Z_TYPE_P(func2) == IS_OBJECT) { |
5047 | zval result; |
5048 | zend_compare_objects(&result, func1, func2 TSRMLS_CC); |
5049 | ret = (Z_LVAL(result) == 0); |
5050 | } else { |
5051 | ret = 0; |
5052 | } |
5053 | |
5054 | if (ret && tick_fe1->calling) { |
5055 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to delete tick function executed at the moment" ); |
5056 | return 0; |
5057 | } |
5058 | return ret; |
5059 | } |
5060 | /* }}} */ |
5061 | |
5062 | PHPAPI void php_call_shutdown_functions(TSRMLS_D) /* {{{ */ |
5063 | { |
5064 | if (BG(user_shutdown_function_names)) { |
5065 | zend_try { |
5066 | zend_hash_apply(BG(user_shutdown_function_names), (apply_func_t) user_shutdown_function_call TSRMLS_CC); |
5067 | } |
5068 | zend_end_try(); |
5069 | php_free_shutdown_functions(TSRMLS_C); |
5070 | } |
5071 | } |
5072 | /* }}} */ |
5073 | |
5074 | PHPAPI void php_free_shutdown_functions(TSRMLS_D) /* {{{ */ |
5075 | { |
5076 | if (BG(user_shutdown_function_names)) |
5077 | zend_try { |
5078 | zend_hash_destroy(BG(user_shutdown_function_names)); |
5079 | FREE_HASHTABLE(BG(user_shutdown_function_names)); |
5080 | BG(user_shutdown_function_names) = NULL; |
5081 | } zend_catch { |
5082 | /* maybe shutdown method call exit, we just ignore it */ |
5083 | FREE_HASHTABLE(BG(user_shutdown_function_names)); |
5084 | BG(user_shutdown_function_names) = NULL; |
5085 | } zend_end_try(); |
5086 | } |
5087 | /* }}} */ |
5088 | |
5089 | /* {{{ proto void register_shutdown_function(callback function) U |
5090 | Register a user-level function to be called on request termination */ |
5091 | PHP_FUNCTION(register_shutdown_function) |
5092 | { |
5093 | php_shutdown_function_entry shutdown_function_entry; |
5094 | char *callback_name = NULL; |
5095 | int i; |
5096 | |
5097 | shutdown_function_entry.arg_count = ZEND_NUM_ARGS(); |
5098 | |
5099 | if (shutdown_function_entry.arg_count < 1) { |
5100 | WRONG_PARAM_COUNT; |
5101 | } |
5102 | |
5103 | shutdown_function_entry.arguments = (zval **) safe_emalloc(sizeof(zval *), shutdown_function_entry.arg_count, 0); |
5104 | |
5105 | if (zend_get_parameters_array(ht, shutdown_function_entry.arg_count, shutdown_function_entry.arguments) == FAILURE) { |
5106 | efree(shutdown_function_entry.arguments); |
5107 | RETURN_FALSE; |
5108 | } |
5109 | |
5110 | /* Prevent entering of anything but valid callback (syntax check only!) */ |
5111 | if (!zend_is_callable(shutdown_function_entry.arguments[0], 0, &callback_name TSRMLS_CC)) { |
5112 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid shutdown callback '%s' passed" , callback_name); |
5113 | efree(shutdown_function_entry.arguments); |
5114 | RETVAL_FALSE; |
5115 | } else { |
5116 | if (!BG(user_shutdown_function_names)) { |
5117 | ALLOC_HASHTABLE(BG(user_shutdown_function_names)); |
5118 | zend_hash_init(BG(user_shutdown_function_names), 0, NULL, (void (*)(void *)) user_shutdown_function_dtor, 0); |
5119 | } |
5120 | |
5121 | for (i = 0; i < shutdown_function_entry.arg_count; i++) { |
5122 | Z_ADDREF_P(shutdown_function_entry.arguments[i]); |
5123 | } |
5124 | zend_hash_next_index_insert(BG(user_shutdown_function_names), &shutdown_function_entry, sizeof(php_shutdown_function_entry), NULL); |
5125 | } |
5126 | if (callback_name) { |
5127 | efree(callback_name); |
5128 | } |
5129 | } |
5130 | /* }}} */ |
5131 | |
5132 | PHPAPI zend_bool register_user_shutdown_function(char *function_name, size_t function_len, php_shutdown_function_entry *shutdown_function_entry TSRMLS_DC) /* {{{ */ |
5133 | { |
5134 | if (!BG(user_shutdown_function_names)) { |
5135 | ALLOC_HASHTABLE(BG(user_shutdown_function_names)); |
5136 | zend_hash_init(BG(user_shutdown_function_names), 0, NULL, (void (*)(void *)) user_shutdown_function_dtor, 0); |
5137 | } |
5138 | |
5139 | return zend_hash_update(BG(user_shutdown_function_names), function_name, function_len, shutdown_function_entry, sizeof(php_shutdown_function_entry), NULL) != FAILURE; |
5140 | } |
5141 | /* }}} */ |
5142 | |
5143 | PHPAPI zend_bool remove_user_shutdown_function(char *function_name, size_t function_len TSRMLS_DC) /* {{{ */ |
5144 | { |
5145 | if (BG(user_shutdown_function_names)) { |
5146 | return zend_hash_del_key_or_index(BG(user_shutdown_function_names), function_name, function_len, 0, HASH_DEL_KEY) != FAILURE; |
5147 | } |
5148 | |
5149 | return 0; |
5150 | } |
5151 | /* }}} */ |
5152 | |
5153 | PHPAPI zend_bool append_user_shutdown_function(php_shutdown_function_entry shutdown_function_entry TSRMLS_DC) /* {{{ */ |
5154 | { |
5155 | if (!BG(user_shutdown_function_names)) { |
5156 | ALLOC_HASHTABLE(BG(user_shutdown_function_names)); |
5157 | zend_hash_init(BG(user_shutdown_function_names), 0, NULL, (void (*)(void *)) user_shutdown_function_dtor, 0); |
5158 | } |
5159 | |
5160 | return zend_hash_next_index_insert(BG(user_shutdown_function_names), &shutdown_function_entry, sizeof(php_shutdown_function_entry), NULL) != FAILURE; |
5161 | } |
5162 | /* }}} */ |
5163 | |
5164 | ZEND_API void php_get_highlight_struct(zend_syntax_highlighter_ini *syntax_highlighter_ini) /* {{{ */ |
5165 | { |
5166 | syntax_highlighter_ini->highlight_comment = INI_STR("highlight.comment" ); |
5167 | syntax_highlighter_ini->highlight_default = INI_STR("highlight.default" ); |
5168 | syntax_highlighter_ini->highlight_html = INI_STR("highlight.html" ); |
5169 | syntax_highlighter_ini->highlight_keyword = INI_STR("highlight.keyword" ); |
5170 | syntax_highlighter_ini->highlight_string = INI_STR("highlight.string" ); |
5171 | } |
5172 | /* }}} */ |
5173 | |
5174 | /* {{{ proto bool highlight_file(string file_name [, bool return] ) |
5175 | Syntax highlight a source file */ |
5176 | PHP_FUNCTION(highlight_file) |
5177 | { |
5178 | char *filename; |
5179 | int filename_len, ret; |
5180 | zend_syntax_highlighter_ini syntax_highlighter_ini; |
5181 | zend_bool i = 0; |
5182 | |
5183 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|b" , &filename, &filename_len, &i) == FAILURE) { |
5184 | RETURN_FALSE; |
5185 | } |
5186 | |
5187 | if (php_check_open_basedir(filename TSRMLS_CC)) { |
5188 | RETURN_FALSE; |
5189 | } |
5190 | |
5191 | if (i) { |
5192 | php_output_start_default(TSRMLS_C); |
5193 | } |
5194 | |
5195 | php_get_highlight_struct(&syntax_highlighter_ini); |
5196 | |
5197 | ret = highlight_file(filename, &syntax_highlighter_ini TSRMLS_CC); |
5198 | |
5199 | if (ret == FAILURE) { |
5200 | if (i) { |
5201 | php_output_end(TSRMLS_C); |
5202 | } |
5203 | RETURN_FALSE; |
5204 | } |
5205 | |
5206 | if (i) { |
5207 | php_output_get_contents(return_value TSRMLS_CC); |
5208 | php_output_discard(TSRMLS_C); |
5209 | } else { |
5210 | RETURN_TRUE; |
5211 | } |
5212 | } |
5213 | /* }}} */ |
5214 | |
5215 | /* {{{ proto string php_strip_whitespace(string file_name) |
5216 | Return source with stripped comments and whitespace */ |
5217 | PHP_FUNCTION(php_strip_whitespace) |
5218 | { |
5219 | char *filename; |
5220 | int filename_len; |
5221 | zend_lex_state original_lex_state; |
5222 | zend_file_handle file_handle = {0}; |
5223 | |
5224 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p" , &filename, &filename_len) == FAILURE) { |
5225 | RETURN_FALSE; |
5226 | } |
5227 | |
5228 | php_output_start_default(TSRMLS_C); |
5229 | |
5230 | file_handle.type = ZEND_HANDLE_FILENAME; |
5231 | file_handle.filename = filename; |
5232 | file_handle.free_filename = 0; |
5233 | file_handle.opened_path = NULL; |
5234 | zend_save_lexical_state(&original_lex_state TSRMLS_CC); |
5235 | if (open_file_for_scanning(&file_handle TSRMLS_CC) == FAILURE) { |
5236 | zend_restore_lexical_state(&original_lex_state TSRMLS_CC); |
5237 | php_output_end(TSRMLS_C); |
5238 | RETURN_EMPTY_STRING(); |
5239 | } |
5240 | |
5241 | zend_strip(TSRMLS_C); |
5242 | |
5243 | zend_destroy_file_handle(&file_handle TSRMLS_CC); |
5244 | zend_restore_lexical_state(&original_lex_state TSRMLS_CC); |
5245 | |
5246 | php_output_get_contents(return_value TSRMLS_CC); |
5247 | php_output_discard(TSRMLS_C); |
5248 | } |
5249 | /* }}} */ |
5250 | |
5251 | /* {{{ proto bool highlight_string(string string [, bool return] ) |
5252 | Syntax highlight a string or optionally return it */ |
5253 | PHP_FUNCTION(highlight_string) |
5254 | { |
5255 | zval **expr; |
5256 | zend_syntax_highlighter_ini syntax_highlighter_ini; |
5257 | char *hicompiled_string_description; |
5258 | zend_bool i = 0; |
5259 | int old_error_reporting = EG(error_reporting); |
5260 | |
5261 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z|b" , &expr, &i) == FAILURE) { |
5262 | RETURN_FALSE; |
5263 | } |
5264 | convert_to_string_ex(expr); |
5265 | |
5266 | if (i) { |
5267 | php_output_start_default(TSRMLS_C); |
5268 | } |
5269 | |
5270 | EG(error_reporting) = E_ERROR; |
5271 | |
5272 | php_get_highlight_struct(&syntax_highlighter_ini); |
5273 | |
5274 | hicompiled_string_description = zend_make_compiled_string_description("highlighted code" TSRMLS_CC); |
5275 | |
5276 | if (highlight_string(*expr, &syntax_highlighter_ini, hicompiled_string_description TSRMLS_CC) == FAILURE) { |
5277 | efree(hicompiled_string_description); |
5278 | EG(error_reporting) = old_error_reporting; |
5279 | if (i) { |
5280 | php_output_end(TSRMLS_C); |
5281 | } |
5282 | RETURN_FALSE; |
5283 | } |
5284 | efree(hicompiled_string_description); |
5285 | |
5286 | EG(error_reporting) = old_error_reporting; |
5287 | |
5288 | if (i) { |
5289 | php_output_get_contents(return_value TSRMLS_CC); |
5290 | php_output_discard(TSRMLS_C); |
5291 | } else { |
5292 | RETURN_TRUE; |
5293 | } |
5294 | } |
5295 | /* }}} */ |
5296 | |
5297 | /* {{{ proto string ini_get(string varname) |
5298 | Get a configuration option */ |
5299 | PHP_FUNCTION(ini_get) |
5300 | { |
5301 | char *varname, *str; |
5302 | int varname_len; |
5303 | |
5304 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s" , &varname, &varname_len) == FAILURE) { |
5305 | return; |
5306 | } |
5307 | |
5308 | str = zend_ini_string(varname, varname_len + 1, 0); |
5309 | |
5310 | if (!str) { |
5311 | RETURN_FALSE; |
5312 | } |
5313 | |
5314 | RETURN_STRING(str, 1); |
5315 | } |
5316 | /* }}} */ |
5317 | |
5318 | static int php_ini_get_option(zend_ini_entry *ini_entry TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) /* {{{ */ |
5319 | { |
5320 | zval *ini_array = va_arg(args, zval *); |
5321 | int module_number = va_arg(args, int); |
5322 | int details = va_arg(args, int); |
5323 | zval *option; |
5324 | |
5325 | if (module_number != 0 && ini_entry->module_number != module_number) { |
5326 | return 0; |
5327 | } |
5328 | |
5329 | if (hash_key->nKeyLength == 0 || |
5330 | hash_key->arKey[0] != 0 |
5331 | ) { |
5332 | if (details) { |
5333 | MAKE_STD_ZVAL(option); |
5334 | array_init(option); |
5335 | |
5336 | if (ini_entry->orig_value) { |
5337 | add_assoc_stringl(option, "global_value" , ini_entry->orig_value, ini_entry->orig_value_length, 1); |
5338 | } else if (ini_entry->value) { |
5339 | add_assoc_stringl(option, "global_value" , ini_entry->value, ini_entry->value_length, 1); |
5340 | } else { |
5341 | add_assoc_null(option, "global_value" ); |
5342 | } |
5343 | |
5344 | if (ini_entry->value) { |
5345 | add_assoc_stringl(option, "local_value" , ini_entry->value, ini_entry->value_length, 1); |
5346 | } else { |
5347 | add_assoc_null(option, "local_value" ); |
5348 | } |
5349 | |
5350 | add_assoc_long(option, "access" , ini_entry->modifiable); |
5351 | |
5352 | add_assoc_zval_ex(ini_array, ini_entry->name, ini_entry->name_length, option); |
5353 | } else { |
5354 | if (ini_entry->value) { |
5355 | add_assoc_stringl(ini_array, ini_entry->name, ini_entry->value, ini_entry->value_length, 1); |
5356 | } else { |
5357 | add_assoc_null(ini_array, ini_entry->name); |
5358 | } |
5359 | } |
5360 | } |
5361 | return 0; |
5362 | } |
5363 | /* }}} */ |
5364 | |
5365 | /* {{{ proto array ini_get_all([string extension[, bool details = true]]) |
5366 | Get all configuration options */ |
5367 | PHP_FUNCTION(ini_get_all) |
5368 | { |
5369 | char *extname = NULL; |
5370 | int extname_len = 0, extnumber = 0; |
5371 | zend_module_entry *module; |
5372 | zend_bool details = 1; |
5373 | |
5374 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s!b" , &extname, &extname_len, &details) == FAILURE) { |
5375 | return; |
5376 | } |
5377 | |
5378 | zend_ini_sort_entries(TSRMLS_C); |
5379 | |
5380 | if (extname) { |
5381 | if (zend_hash_find(&module_registry, extname, extname_len+1, (void **) &module) == FAILURE) { |
5382 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to find extension '%s'" , extname); |
5383 | RETURN_FALSE; |
5384 | } |
5385 | extnumber = module->module_number; |
5386 | } |
5387 | |
5388 | array_init(return_value); |
5389 | zend_hash_apply_with_arguments(EG(ini_directives) TSRMLS_CC, (apply_func_args_t) php_ini_get_option, 2, return_value, extnumber, details); |
5390 | } |
5391 | /* }}} */ |
5392 | |
5393 | static int php_ini_check_path(char *option_name, int option_len, char *new_option_name, int new_option_len) /* {{{ */ |
5394 | { |
5395 | if (option_len != (new_option_len - 1)) { |
5396 | return 0; |
5397 | } |
5398 | |
5399 | return !strncmp(option_name, new_option_name, option_len); |
5400 | } |
5401 | /* }}} */ |
5402 | |
5403 | /* {{{ proto string ini_set(string varname, string newvalue) |
5404 | Set a configuration option, returns false on error and the old value of the configuration option on success */ |
5405 | PHP_FUNCTION(ini_set) |
5406 | { |
5407 | char *varname, *new_value; |
5408 | int varname_len, new_value_len; |
5409 | char *old_value; |
5410 | |
5411 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss" , &varname, &varname_len, &new_value, &new_value_len) == FAILURE) { |
5412 | return; |
5413 | } |
5414 | |
5415 | old_value = zend_ini_string(varname, varname_len + 1, 0); |
5416 | |
5417 | /* copy to return here, because alter might free it! */ |
5418 | if (old_value) { |
5419 | RETVAL_STRING(old_value, 1); |
5420 | } else { |
5421 | RETVAL_FALSE; |
5422 | } |
5423 | |
5424 | #define _CHECK_PATH(var, var_len, ini) php_ini_check_path(var, var_len, ini, sizeof(ini)) |
5425 | /* open basedir check */ |
5426 | if (PG(open_basedir)) { |
5427 | if (_CHECK_PATH(varname, varname_len, "error_log" ) || |
5428 | _CHECK_PATH(varname, varname_len, "java.class.path" ) || |
5429 | _CHECK_PATH(varname, varname_len, "java.home" ) || |
5430 | _CHECK_PATH(varname, varname_len, "mail.log" ) || |
5431 | _CHECK_PATH(varname, varname_len, "java.library.path" ) || |
5432 | _CHECK_PATH(varname, varname_len, "vpopmail.directory" )) { |
5433 | if (php_check_open_basedir(new_value TSRMLS_CC)) { |
5434 | zval_dtor(return_value); |
5435 | RETURN_FALSE; |
5436 | } |
5437 | } |
5438 | } |
5439 | |
5440 | if (zend_alter_ini_entry_ex(varname, varname_len + 1, new_value, new_value_len, PHP_INI_USER, PHP_INI_STAGE_RUNTIME, 0 TSRMLS_CC) == FAILURE) { |
5441 | zval_dtor(return_value); |
5442 | RETURN_FALSE; |
5443 | } |
5444 | } |
5445 | /* }}} */ |
5446 | |
5447 | /* {{{ proto void ini_restore(string varname) |
5448 | Restore the value of a configuration option specified by varname */ |
5449 | PHP_FUNCTION(ini_restore) |
5450 | { |
5451 | char *varname; |
5452 | int varname_len; |
5453 | |
5454 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s" , &varname, &varname_len) == FAILURE) { |
5455 | return; |
5456 | } |
5457 | |
5458 | zend_restore_ini_entry(varname, varname_len+1, PHP_INI_STAGE_RUNTIME); |
5459 | } |
5460 | /* }}} */ |
5461 | |
5462 | /* {{{ proto string set_include_path(string new_include_path) |
5463 | Sets the include_path configuration option */ |
5464 | PHP_FUNCTION(set_include_path) |
5465 | { |
5466 | char *new_value; |
5467 | int new_value_len; |
5468 | char *old_value; |
5469 | |
5470 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p" , &new_value, &new_value_len) == FAILURE) { |
5471 | return; |
5472 | } |
5473 | |
5474 | old_value = zend_ini_string("include_path" , sizeof("include_path" ), 0); |
5475 | /* copy to return here, because alter might free it! */ |
5476 | if (old_value) { |
5477 | RETVAL_STRING(old_value, 1); |
5478 | } else { |
5479 | RETVAL_FALSE; |
5480 | } |
5481 | |
5482 | if (zend_alter_ini_entry_ex("include_path" , sizeof("include_path" ), new_value, new_value_len, PHP_INI_USER, PHP_INI_STAGE_RUNTIME, 0 TSRMLS_CC) == FAILURE) { |
5483 | zval_dtor(return_value); |
5484 | RETURN_FALSE; |
5485 | } |
5486 | } |
5487 | /* }}} */ |
5488 | |
5489 | /* {{{ proto string get_include_path() |
5490 | Get the current include_path configuration option */ |
5491 | PHP_FUNCTION(get_include_path) |
5492 | { |
5493 | char *str; |
5494 | |
5495 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "" ) == FAILURE) { |
5496 | return; |
5497 | } |
5498 | |
5499 | str = zend_ini_string("include_path" , sizeof("include_path" ), 0); |
5500 | |
5501 | if (str == NULL) { |
5502 | RETURN_FALSE; |
5503 | } |
5504 | |
5505 | RETURN_STRING(str, 1); |
5506 | } |
5507 | /* }}} */ |
5508 | |
5509 | /* {{{ proto void restore_include_path() |
5510 | Restore the value of the include_path configuration option */ |
5511 | PHP_FUNCTION(restore_include_path) |
5512 | { |
5513 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "" ) == FAILURE) { |
5514 | return; |
5515 | } |
5516 | zend_restore_ini_entry("include_path" , sizeof("include_path" ), PHP_INI_STAGE_RUNTIME); |
5517 | } |
5518 | /* }}} */ |
5519 | |
5520 | /* {{{ proto mixed print_r(mixed var [, bool return]) |
5521 | Prints out or returns information about the specified variable */ |
5522 | PHP_FUNCTION(print_r) |
5523 | { |
5524 | zval *var; |
5525 | zend_bool do_return = 0; |
5526 | |
5527 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|b" , &var, &do_return) == FAILURE) { |
5528 | RETURN_FALSE; |
5529 | } |
5530 | |
5531 | if (do_return) { |
5532 | php_output_start_default(TSRMLS_C); |
5533 | } |
5534 | |
5535 | zend_print_zval_r(var, 0 TSRMLS_CC); |
5536 | |
5537 | if (do_return) { |
5538 | php_output_get_contents(return_value TSRMLS_CC); |
5539 | php_output_discard(TSRMLS_C); |
5540 | } else { |
5541 | RETURN_TRUE; |
5542 | } |
5543 | } |
5544 | /* }}} */ |
5545 | |
5546 | /* {{{ proto int connection_aborted(void) |
5547 | Returns true if client disconnected */ |
5548 | PHP_FUNCTION(connection_aborted) |
5549 | { |
5550 | RETURN_LONG(PG(connection_status) & PHP_CONNECTION_ABORTED); |
5551 | } |
5552 | /* }}} */ |
5553 | |
5554 | /* {{{ proto int connection_status(void) |
5555 | Returns the connection status bitfield */ |
5556 | PHP_FUNCTION(connection_status) |
5557 | { |
5558 | RETURN_LONG(PG(connection_status)); |
5559 | } |
5560 | /* }}} */ |
5561 | |
5562 | /* {{{ proto int ignore_user_abort([string value]) |
5563 | Set whether we want to ignore a user abort event or not */ |
5564 | PHP_FUNCTION(ignore_user_abort) |
5565 | { |
5566 | char *arg = NULL; |
5567 | int arg_len = 0; |
5568 | int old_setting; |
5569 | |
5570 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s" , &arg, &arg_len) == FAILURE) { |
5571 | return; |
5572 | } |
5573 | |
5574 | old_setting = PG(ignore_user_abort); |
5575 | |
5576 | if (arg) { |
5577 | zend_alter_ini_entry_ex("ignore_user_abort" , sizeof("ignore_user_abort" ), arg, arg_len, PHP_INI_USER, PHP_INI_STAGE_RUNTIME, 0 TSRMLS_CC); |
5578 | } |
5579 | |
5580 | RETURN_LONG(old_setting); |
5581 | } |
5582 | /* }}} */ |
5583 | |
5584 | #if HAVE_GETSERVBYNAME |
5585 | /* {{{ proto int getservbyname(string service, string protocol) |
5586 | Returns port associated with service. Protocol must be "tcp" or "udp" */ |
5587 | PHP_FUNCTION(getservbyname) |
5588 | { |
5589 | char *name, *proto; |
5590 | int name_len, proto_len; |
5591 | struct servent *serv; |
5592 | |
5593 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss" , &name, &name_len, &proto, &proto_len) == FAILURE) { |
5594 | return; |
5595 | } |
5596 | |
5597 | |
5598 | /* empty string behaves like NULL on windows implementation of |
5599 | getservbyname. Let be portable instead. */ |
5600 | #ifdef PHP_WIN32 |
5601 | if (proto_len == 0) { |
5602 | RETURN_FALSE; |
5603 | } |
5604 | #endif |
5605 | |
5606 | serv = getservbyname(name, proto); |
5607 | |
5608 | if (serv == NULL) { |
5609 | RETURN_FALSE; |
5610 | } |
5611 | |
5612 | RETURN_LONG(ntohs(serv->s_port)); |
5613 | } |
5614 | /* }}} */ |
5615 | #endif |
5616 | |
5617 | #if HAVE_GETSERVBYPORT |
5618 | /* {{{ proto string getservbyport(int port, string protocol) |
5619 | Returns service name associated with port. Protocol must be "tcp" or "udp" */ |
5620 | PHP_FUNCTION(getservbyport) |
5621 | { |
5622 | char *proto; |
5623 | int proto_len; |
5624 | long port; |
5625 | struct servent *serv; |
5626 | |
5627 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls" , &port, &proto, &proto_len) == FAILURE) { |
5628 | return; |
5629 | } |
5630 | |
5631 | serv = getservbyport(htons((unsigned short) port), proto); |
5632 | |
5633 | if (serv == NULL) { |
5634 | RETURN_FALSE; |
5635 | } |
5636 | |
5637 | RETURN_STRING(serv->s_name, 1); |
5638 | } |
5639 | /* }}} */ |
5640 | #endif |
5641 | |
5642 | #if HAVE_GETPROTOBYNAME |
5643 | /* {{{ proto int getprotobyname(string name) |
5644 | Returns protocol number associated with name as per /etc/protocols */ |
5645 | PHP_FUNCTION(getprotobyname) |
5646 | { |
5647 | char *name; |
5648 | int name_len; |
5649 | struct protoent *ent; |
5650 | |
5651 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s" , &name, &name_len) == FAILURE) { |
5652 | return; |
5653 | } |
5654 | |
5655 | ent = getprotobyname(name); |
5656 | |
5657 | if (ent == NULL) { |
5658 | RETURN_FALSE; |
5659 | } |
5660 | |
5661 | RETURN_LONG(ent->p_proto); |
5662 | } |
5663 | /* }}} */ |
5664 | #endif |
5665 | |
5666 | #if HAVE_GETPROTOBYNUMBER |
5667 | /* {{{ proto string getprotobynumber(int proto) |
5668 | Returns protocol name associated with protocol number proto */ |
5669 | PHP_FUNCTION(getprotobynumber) |
5670 | { |
5671 | long proto; |
5672 | struct protoent *ent; |
5673 | |
5674 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l" , &proto) == FAILURE) { |
5675 | return; |
5676 | } |
5677 | |
5678 | ent = getprotobynumber(proto); |
5679 | |
5680 | if (ent == NULL) { |
5681 | RETURN_FALSE; |
5682 | } |
5683 | |
5684 | RETURN_STRING(ent->p_name, 1); |
5685 | } |
5686 | /* }}} */ |
5687 | #endif |
5688 | |
5689 | /* {{{ proto bool register_tick_function(string function_name [, mixed arg [, mixed ... ]]) |
5690 | Registers a tick callback function */ |
5691 | PHP_FUNCTION(register_tick_function) |
5692 | { |
5693 | user_tick_function_entry tick_fe; |
5694 | int i; |
5695 | char *function_name = NULL; |
5696 | |
5697 | tick_fe.calling = 0; |
5698 | tick_fe.arg_count = ZEND_NUM_ARGS(); |
5699 | |
5700 | if (tick_fe.arg_count < 1) { |
5701 | WRONG_PARAM_COUNT; |
5702 | } |
5703 | |
5704 | tick_fe.arguments = (zval **) safe_emalloc(sizeof(zval *), tick_fe.arg_count, 0); |
5705 | |
5706 | if (zend_get_parameters_array(ht, tick_fe.arg_count, tick_fe.arguments) == FAILURE) { |
5707 | efree(tick_fe.arguments); |
5708 | RETURN_FALSE; |
5709 | } |
5710 | |
5711 | if (!zend_is_callable(tick_fe.arguments[0], 0, &function_name TSRMLS_CC)) { |
5712 | efree(tick_fe.arguments); |
5713 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid tick callback '%s' passed" , function_name); |
5714 | efree(function_name); |
5715 | RETURN_FALSE; |
5716 | } else if (function_name) { |
5717 | efree(function_name); |
5718 | } |
5719 | |
5720 | if (Z_TYPE_P(tick_fe.arguments[0]) != IS_ARRAY && Z_TYPE_P(tick_fe.arguments[0]) != IS_OBJECT) { |
5721 | convert_to_string_ex(&tick_fe.arguments[0]); |
5722 | } |
5723 | |
5724 | if (!BG(user_tick_functions)) { |
5725 | BG(user_tick_functions) = (zend_llist *) emalloc(sizeof(zend_llist)); |
5726 | zend_llist_init(BG(user_tick_functions), |
5727 | sizeof(user_tick_function_entry), |
5728 | (llist_dtor_func_t) user_tick_function_dtor, 0); |
5729 | php_add_tick_function(run_user_tick_functions); |
5730 | } |
5731 | |
5732 | for (i = 0; i < tick_fe.arg_count; i++) { |
5733 | Z_ADDREF_P(tick_fe.arguments[i]); |
5734 | } |
5735 | |
5736 | zend_llist_add_element(BG(user_tick_functions), &tick_fe); |
5737 | |
5738 | RETURN_TRUE; |
5739 | } |
5740 | /* }}} */ |
5741 | |
5742 | /* {{{ proto void unregister_tick_function(string function_name) |
5743 | Unregisters a tick callback function */ |
5744 | PHP_FUNCTION(unregister_tick_function) |
5745 | { |
5746 | zval *function; |
5747 | user_tick_function_entry tick_fe; |
5748 | |
5749 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z/" , &function) == FAILURE) { |
5750 | return; |
5751 | } |
5752 | |
5753 | if (!BG(user_tick_functions)) { |
5754 | return; |
5755 | } |
5756 | |
5757 | if (Z_TYPE_P(function) != IS_ARRAY && Z_TYPE_P(function) != IS_OBJECT) { |
5758 | convert_to_string(function); |
5759 | } |
5760 | |
5761 | tick_fe.arguments = (zval **) emalloc(sizeof(zval *)); |
5762 | tick_fe.arguments[0] = function; |
5763 | tick_fe.arg_count = 1; |
5764 | zend_llist_del_element(BG(user_tick_functions), &tick_fe, (int (*)(void *, void *)) user_tick_function_compare); |
5765 | efree(tick_fe.arguments); |
5766 | } |
5767 | /* }}} */ |
5768 | |
5769 | /* {{{ proto bool is_uploaded_file(string path) |
5770 | Check if file was created by rfc1867 upload */ |
5771 | PHP_FUNCTION(is_uploaded_file) |
5772 | { |
5773 | char *path; |
5774 | int path_len; |
5775 | |
5776 | if (!SG(rfc1867_uploaded_files)) { |
5777 | RETURN_FALSE; |
5778 | } |
5779 | |
5780 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s" , &path, &path_len) == FAILURE) { |
5781 | return; |
5782 | } |
5783 | |
5784 | if (zend_hash_exists(SG(rfc1867_uploaded_files), path, path_len + 1)) { |
5785 | RETURN_TRUE; |
5786 | } else { |
5787 | RETURN_FALSE; |
5788 | } |
5789 | } |
5790 | /* }}} */ |
5791 | |
5792 | /* {{{ proto bool move_uploaded_file(string path, string new_path) |
5793 | Move a file if and only if it was created by an upload */ |
5794 | PHP_FUNCTION(move_uploaded_file) |
5795 | { |
5796 | char *path, *new_path; |
5797 | int path_len, new_path_len; |
5798 | zend_bool successful = 0; |
5799 | |
5800 | #ifndef PHP_WIN32 |
5801 | int oldmask; int ret; |
5802 | #endif |
5803 | |
5804 | if (!SG(rfc1867_uploaded_files)) { |
5805 | RETURN_FALSE; |
5806 | } |
5807 | |
5808 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sp" , &path, &path_len, &new_path, &new_path_len) == FAILURE) { |
5809 | return; |
5810 | } |
5811 | |
5812 | if (!zend_hash_exists(SG(rfc1867_uploaded_files), path, path_len + 1)) { |
5813 | RETURN_FALSE; |
5814 | } |
5815 | |
5816 | if (php_check_open_basedir(new_path TSRMLS_CC)) { |
5817 | RETURN_FALSE; |
5818 | } |
5819 | |
5820 | if (VCWD_RENAME(path, new_path) == 0) { |
5821 | successful = 1; |
5822 | #ifndef PHP_WIN32 |
5823 | oldmask = umask(077); |
5824 | umask(oldmask); |
5825 | |
5826 | ret = VCWD_CHMOD(new_path, 0666 & ~oldmask); |
5827 | |
5828 | if (ret == -1) { |
5829 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s" , strerror(errno)); |
5830 | } |
5831 | #endif |
5832 | } else if (php_copy_file_ex(path, new_path, STREAM_DISABLE_OPEN_BASEDIR TSRMLS_CC) == SUCCESS) { |
5833 | VCWD_UNLINK(path); |
5834 | successful = 1; |
5835 | } |
5836 | |
5837 | if (successful) { |
5838 | zend_hash_del(SG(rfc1867_uploaded_files), path, path_len + 1); |
5839 | } else { |
5840 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to move '%s' to '%s'" , path, new_path); |
5841 | } |
5842 | |
5843 | RETURN_BOOL(successful); |
5844 | } |
5845 | /* }}} */ |
5846 | |
5847 | /* {{{ php_simple_ini_parser_cb |
5848 | */ |
5849 | static void php_simple_ini_parser_cb(zval *arg1, zval *arg2, zval *arg3, int callback_type, zval *arr TSRMLS_DC) |
5850 | { |
5851 | zval *element; |
5852 | |
5853 | switch (callback_type) { |
5854 | |
5855 | case ZEND_INI_PARSER_ENTRY: |
5856 | if (!arg2) { |
5857 | /* bare string - nothing to do */ |
5858 | break; |
5859 | } |
5860 | ALLOC_ZVAL(element); |
5861 | MAKE_COPY_ZVAL(&arg2, element); |
5862 | zend_symtable_update(Z_ARRVAL_P(arr), Z_STRVAL_P(arg1), Z_STRLEN_P(arg1) + 1, &element, sizeof(zval *), NULL); |
5863 | break; |
5864 | |
5865 | case ZEND_INI_PARSER_POP_ENTRY: |
5866 | { |
5867 | zval *hash, **find_hash; |
5868 | |
5869 | if (!arg2) { |
5870 | /* bare string - nothing to do */ |
5871 | break; |
5872 | } |
5873 | |
5874 | if (!(Z_STRLEN_P(arg1) > 1 && Z_STRVAL_P(arg1)[0] == '0') && is_numeric_string(Z_STRVAL_P(arg1), Z_STRLEN_P(arg1), NULL, NULL, 0) == IS_LONG) { |
5875 | ulong key = (ulong) zend_atol(Z_STRVAL_P(arg1), Z_STRLEN_P(arg1)); |
5876 | if (zend_hash_index_find(Z_ARRVAL_P(arr), key, (void **) &find_hash) == FAILURE) { |
5877 | ALLOC_ZVAL(hash); |
5878 | INIT_PZVAL(hash); |
5879 | array_init(hash); |
5880 | |
5881 | zend_hash_index_update(Z_ARRVAL_P(arr), key, &hash, sizeof(zval *), NULL); |
5882 | } else { |
5883 | hash = *find_hash; |
5884 | } |
5885 | } else { |
5886 | if (zend_hash_find(Z_ARRVAL_P(arr), Z_STRVAL_P(arg1), Z_STRLEN_P(arg1) + 1, (void **) &find_hash) == FAILURE) { |
5887 | ALLOC_ZVAL(hash); |
5888 | INIT_PZVAL(hash); |
5889 | array_init(hash); |
5890 | |
5891 | zend_hash_update(Z_ARRVAL_P(arr), Z_STRVAL_P(arg1), Z_STRLEN_P(arg1) + 1, &hash, sizeof(zval *), NULL); |
5892 | } else { |
5893 | hash = *find_hash; |
5894 | } |
5895 | } |
5896 | |
5897 | if (Z_TYPE_P(hash) != IS_ARRAY) { |
5898 | zval_dtor(hash); |
5899 | INIT_PZVAL(hash); |
5900 | array_init(hash); |
5901 | } |
5902 | |
5903 | ALLOC_ZVAL(element); |
5904 | MAKE_COPY_ZVAL(&arg2, element); |
5905 | |
5906 | if (arg3 && Z_STRLEN_P(arg3) > 0) { |
5907 | add_assoc_zval_ex(hash, Z_STRVAL_P(arg3), Z_STRLEN_P(arg3) + 1, element); |
5908 | } else { |
5909 | add_next_index_zval(hash, element); |
5910 | } |
5911 | } |
5912 | break; |
5913 | |
5914 | case ZEND_INI_PARSER_SECTION: |
5915 | break; |
5916 | } |
5917 | } |
5918 | /* }}} */ |
5919 | |
5920 | /* {{{ php_ini_parser_cb_with_sections |
5921 | */ |
5922 | static void php_ini_parser_cb_with_sections(zval *arg1, zval *arg2, zval *arg3, int callback_type, zval *arr TSRMLS_DC) |
5923 | { |
5924 | if (callback_type == ZEND_INI_PARSER_SECTION) { |
5925 | MAKE_STD_ZVAL(BG(active_ini_file_section)); |
5926 | array_init(BG(active_ini_file_section)); |
5927 | zend_symtable_update(Z_ARRVAL_P(arr), Z_STRVAL_P(arg1), Z_STRLEN_P(arg1) + 1, &BG(active_ini_file_section), sizeof(zval *), NULL); |
5928 | } else if (arg2) { |
5929 | zval *active_arr; |
5930 | |
5931 | if (BG(active_ini_file_section)) { |
5932 | active_arr = BG(active_ini_file_section); |
5933 | } else { |
5934 | active_arr = arr; |
5935 | } |
5936 | |
5937 | php_simple_ini_parser_cb(arg1, arg2, arg3, callback_type, active_arr TSRMLS_CC); |
5938 | } |
5939 | } |
5940 | /* }}} */ |
5941 | |
5942 | /* {{{ proto array parse_ini_file(string filename [, bool process_sections [, int scanner_mode]]) |
5943 | Parse configuration file */ |
5944 | PHP_FUNCTION(parse_ini_file) |
5945 | { |
5946 | char *filename = NULL; |
5947 | int filename_len = 0; |
5948 | zend_bool process_sections = 0; |
5949 | long scanner_mode = ZEND_INI_SCANNER_NORMAL; |
5950 | zend_file_handle fh; |
5951 | zend_ini_parser_cb_t ini_parser_cb; |
5952 | |
5953 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|bl" , &filename, &filename_len, &process_sections, &scanner_mode) == FAILURE) { |
5954 | RETURN_FALSE; |
5955 | } |
5956 | |
5957 | if (filename_len == 0) { |
5958 | php_error_docref(NULL TSRMLS_CC, E_WARNING, "Filename cannot be empty!" ); |
5959 | RETURN_FALSE; |
5960 | } |
5961 | |
5962 | /* Set callback function */ |
5963 | if (process_sections) { |
5964 | BG(active_ini_file_section) = NULL; |
5965 | ini_parser_cb = (zend_ini_parser_cb_t) php_ini_parser_cb_with_sections; |
5966 | } else { |
5967 | ini_parser_cb = (zend_ini_parser_cb_t) php_simple_ini_parser_cb; |
5968 | } |
5969 | |
5970 | /* Setup filehandle */ |
5971 | memset(&fh, 0, sizeof(fh)); |
5972 | fh.filename = filename; |
5973 | fh.type = ZEND_HANDLE_FILENAME; |
5974 | |
5975 | array_init(return_value); |
5976 | if (zend_parse_ini_file(&fh, 0, scanner_mode, ini_parser_cb, return_value TSRMLS_CC) == FAILURE) { |
5977 | zend_hash_destroy(Z_ARRVAL_P(return_value)); |
5978 | efree(Z_ARRVAL_P(return_value)); |
5979 | RETURN_FALSE; |
5980 | } |
5981 | } |
5982 | /* }}} */ |
5983 | |
5984 | /* {{{ proto array parse_ini_string(string ini_string [, bool process_sections [, int scanner_mode]]) |
5985 | Parse configuration string */ |
5986 | PHP_FUNCTION(parse_ini_string) |
5987 | { |
5988 | char *string = NULL, *str = NULL; |
5989 | int str_len = 0; |
5990 | zend_bool process_sections = 0; |
5991 | long scanner_mode = ZEND_INI_SCANNER_NORMAL; |
5992 | zend_ini_parser_cb_t ini_parser_cb; |
5993 | |
5994 | if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|bl" , &str, &str_len, &process_sections, &scanner_mode) == FAILURE) { |
5995 | RETURN_FALSE; |
5996 | } |
5997 | |
5998 | if (INT_MAX - str_len < ZEND_MMAP_AHEAD) { |
5999 | RETVAL_FALSE; |
6000 | } |
6001 | |
6002 | /* Set callback function */ |
6003 | if (process_sections) { |
6004 | BG(active_ini_file_section) = NULL; |
6005 | ini_parser_cb = (zend_ini_parser_cb_t) php_ini_parser_cb_with_sections; |
6006 | } else { |
6007 | ini_parser_cb = (zend_ini_parser_cb_t) php_simple_ini_parser_cb; |
6008 | } |
6009 | |
6010 | /* Setup string */ |
6011 | string = (char *) emalloc(str_len + ZEND_MMAP_AHEAD); |
6012 | memcpy(string, str, str_len); |
6013 | memset(string + str_len, 0, ZEND_MMAP_AHEAD); |
6014 | |
6015 | array_init(return_value); |
6016 | if (zend_parse_ini_string(string, 0, scanner_mode, ini_parser_cb, return_value TSRMLS_CC) == FAILURE) { |
6017 | zend_hash_destroy(Z_ARRVAL_P(return_value)); |
6018 | efree(Z_ARRVAL_P(return_value)); |
6019 | RETVAL_FALSE; |
6020 | } |
6021 | efree(string); |
6022 | } |
6023 | /* }}} */ |
6024 | |
6025 | #if ZEND_DEBUG |
6026 | /* This function returns an array of ALL valid ini options with values and |
6027 | * is not the same as ini_get_all() which returns only registered ini options. Only useful for devs to debug php.ini scanner/parser! */ |
6028 | PHP_FUNCTION(config_get_hash) /* {{{ */ |
6029 | { |
6030 | HashTable *hash = php_ini_get_configuration_hash(); |
6031 | |
6032 | array_init(return_value); |
6033 | zend_hash_apply_with_arguments(hash TSRMLS_CC, (apply_func_args_t) add_config_entry_cb, 1, return_value); |
6034 | } |
6035 | /* }}} */ |
6036 | #endif |
6037 | |
6038 | #ifdef HAVE_GETLOADAVG |
6039 | /* {{{ proto array sys_getloadavg() |
6040 | */ |
6041 | PHP_FUNCTION(sys_getloadavg) |
6042 | { |
6043 | double load[3]; |
6044 | |
6045 | if (zend_parse_parameters_none() == FAILURE) { |
6046 | return; |
6047 | } |
6048 | |
6049 | if (getloadavg(load, 3) == -1) { |
6050 | RETURN_FALSE; |
6051 | } else { |
6052 | array_init(return_value); |
6053 | add_index_double(return_value, 0, load[0]); |
6054 | add_index_double(return_value, 1, load[1]); |
6055 | add_index_double(return_value, 2, load[2]); |
6056 | } |
6057 | } |
6058 | /* }}} */ |
6059 | #endif |
6060 | |
6061 | /* |
6062 | * Local variables: |
6063 | * tab-width: 4 |
6064 | * c-basic-offset: 4 |
6065 | * End: |
6066 | * vim600: fdm=marker |
6067 | * vim: noet sw=4 ts=4 |
6068 | */ |
6069 | |