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