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