Annotation of embedaddon/php/ext/standard/basic_functions.c, revision 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>