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