Annotation of embedaddon/php/ext/standard/basic_functions.c, revision 1.1.1.1

1.1       misho       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 321634 2012-01-01 13:15:04Z felipe $ */
                     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, &params) == 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, &params, &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, &params) == 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, &params) == 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>