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