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