File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / basic_functions.c
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:34:43 2012 UTC (12 years, 2 months ago) by misho
Branches: php, MAIN
CVS tags: v5_4_3elwix, v5_4_17p0, HEAD
php 5.4.3+patches

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>