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