Return to basic_functions.c CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard |
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: */