2000-12-19 03:23:50 +08:00
/*
1999-04-17 08:37:12 +08:00
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
2004-01-08 16:18:22 +08:00
| PHP Version 5 |
1999-04-17 08:37:12 +08:00
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
2006-01-01 21:10:10 +08:00
| Copyright ( c ) 1997 - 2006 The PHP Group |
1999-04-17 08:37:12 +08:00
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
2006-01-01 21:10:10 +08:00
| This source file is subject to version 3.01 of the PHP license , |
1999-07-16 21:13:16 +08:00
| that is bundled with this package in the file LICENSE , and is |
2003-06-11 04:04:29 +08:00
| available through the world - wide - web at the following url : |
2006-01-01 21:10:10 +08:00
| http : //www.php.net/license/3_01.txt |
1999-07-16 21:13:16 +08:00
| If you did not receive a copy of the PHP license and are unable to |
| obtain it through the world - wide - web , please send a note to |
| license @ php . net so we can mail you a copy immediately . |
1999-04-17 08:37:12 +08:00
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
| Authors : Andi Gutmans < andi @ zend . com > |
| Zeev Suraski < zeev @ zend . com > |
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
*/
2000-07-24 09:40:02 +08:00
/* $Id$ */
1999-04-17 08:37:12 +08:00
# include "php.h"
2002-03-16 05:03:08 +08:00
# include "php_streams.h"
2000-06-06 07:24:42 +08:00
# include "php_main.h"
2000-10-13 17:13:01 +08:00
# include "php_globals.h"
1999-04-17 08:37:12 +08:00
# include "php_ini.h"
1999-12-05 03:19:57 +08:00
# include "php_standard.h"
2001-09-06 03:47:55 +08:00
# include "php_math.h"
2003-09-06 22:52:10 +08:00
# include "php_http.h"
2001-08-06 21:36:08 +08:00
# include "php_incomplete_class.h"
2000-04-06 05:43:03 +08:00
# include "ext/standard/info.h"
2001-08-25 23:57:42 +08:00
# include "ext/session/php_session.h"
1999-04-17 08:37:12 +08:00
# include "zend_operators.h"
2002-11-19 10:34:13 +08:00
# include "ext/standard/dns.h"
2003-10-27 13:35:41 +08:00
# include "ext/standard/php_uuencode.h"
2001-08-30 00:00:30 +08:00
2004-07-29 10:59:44 +08:00
# ifdef PHP_WIN32
# include "win32/php_win32_globals.h"
# endif
2003-11-24 09:17:27 +08:00
typedef struct yy_buffer_state * YY_BUFFER_STATE ;
# include "zend.h"
# include "zend_language_scanner.h"
2004-12-30 23:18:24 +08:00
# include <zend_language_parser.h>
2003-11-24 09:17:27 +08:00
1999-04-17 08:37:12 +08:00
# include <stdarg.h>
# include <stdlib.h>
# include <math.h>
# include <time.h>
# include <stdio.h>
2002-09-05 20:03:43 +08:00
2004-09-25 21:19:45 +08:00
# ifdef NETWARE
2002-09-05 20:03:43 +08:00
# include <netinet/in.h>
# endif
2001-08-30 00:00:30 +08:00
2004-09-25 21:19:45 +08:00
# include <netdb.h>
2001-01-22 01:29:15 +08:00
# if HAVE_ARPA_INET_H
2001-08-30 00:00:30 +08:00
# include <arpa / inet.h>
2001-01-22 01:29:15 +08:00
# endif
2001-08-30 00:00:30 +08:00
1999-04-17 08:37:12 +08:00
# if HAVE_UNISTD_H
2001-08-30 00:00:30 +08:00
# include <unistd.h>
1999-04-17 08:37:12 +08:00
# endif
2001-08-30 00:00:30 +08:00
1999-04-17 08:37:12 +08:00
# if HAVE_STRING_H
2001-08-30 00:00:30 +08:00
# include <string.h>
1999-04-17 08:37:12 +08:00
# else
2001-08-30 00:00:30 +08:00
# include <strings.h>
1999-04-17 08:37:12 +08:00
# endif
2001-08-30 00:00:30 +08:00
1999-10-08 10:10:57 +08:00
# if HAVE_LOCALE_H
2001-08-30 00:00:30 +08:00
# include <locale.h>
1999-10-08 10:10:57 +08:00
# endif
2001-08-30 00:00:30 +08:00
2001-05-19 07:38:46 +08:00
# if HAVE_SYS_MMAN_H
2001-08-30 00:00:30 +08:00
# include <sys / mman.h>
2001-05-19 07:38:46 +08:00
# endif
2001-08-30 00:00:30 +08:00
2002-10-30 23:11:11 +08:00
# ifdef HARTMUT_0
2002-10-22 00:07:21 +08:00
# include <getopt.h>
# endif
2000-02-11 23:59:30 +08:00
# ifdef PHP_WIN32
2001-08-30 00:00:30 +08:00
# include "win32 / unistd.h"
1999-04-17 08:37:12 +08:00
# endif
2003-12-23 00:00:52 +08:00
# ifndef INADDR_NONE
# define INADDR_NONE ((unsigned long int) -1)
# endif
2001-08-30 00:00:30 +08:00
# include "zend_globals.h"
1999-04-17 08:37:12 +08:00
# include "php_globals.h"
1999-04-27 01:26:37 +08:00
# include "SAPI.h"
2000-09-02 00:10:17 +08:00
# include "php_ticks.h"
2001-08-30 00:00:30 +08:00
1999-11-28 08:31:02 +08:00
# ifdef ZTS
2006-01-28 14:18:18 +08:00
PHPAPI int basic_globals_id ;
1999-11-28 08:31:02 +08:00
# else
php_basic_globals basic_globals ;
1999-08-06 16:56:15 +08:00
# endif
2000-10-13 08:09:31 +08:00
# include "php_fopen_wrappers.h"
2003-03-01 03:53:21 +08:00
# include "streamsfuncs.h"
2000-10-13 08:09:31 +08:00
2005-12-01 19:49:51 +08:00
static zend_class_entry * incomplete_class_entry = NULL ;
2006-06-26 03:17:20 +08:00
typedef struct _php_shutdown_function_entry {
zval * * arguments ;
int arg_count ;
} php_shutdown_function_entry ;
typedef struct _user_tick_function_entry {
zval * * arguments ;
int arg_count ;
int calling ;
} user_tick_function_entry ;
/* some prototypes for local functions */
static void user_shutdown_function_dtor ( php_shutdown_function_entry * shutdown_function_entry ) ;
static void user_tick_function_dtor ( user_tick_function_entry * tick_function_entry ) ;
# undef sprintf
/* {{{ arginfo */
/* {{{ main/main.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_set_time_limit , 0 )
ZEND_ARG_INFO ( 0 , seconds )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ main/output.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_ob_start , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , user_function )
ZEND_ARG_INFO ( 0 , chunk_size )
ZEND_ARG_INFO ( 0 , flags )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ob_flush , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ob_clean , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ob_end_flush , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ob_end_clean , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ob_get_flush , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ob_get_clean , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ob_get_contents , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ob_get_level , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ob_get_length , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ob_list_handlers , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_ob_get_status , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , full_status )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_ob_implicit_flush , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , flag )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_output_reset_rewrite_vars , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_output_add_rewrite_var , 0 )
ZEND_ARG_INFO ( 0 , name )
ZEND_ARG_INFO ( 0 , value )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ main/streams/userspace.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_wrapper_register , 0 )
ZEND_ARG_INFO ( 0 , protocol )
ZEND_ARG_INFO ( 0 , classname )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_wrapper_unregister , 0 )
ZEND_ARG_INFO ( 0 , protocol )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_wrapper_restore , 0 )
ZEND_ARG_INFO ( 0 , protocol )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ array.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_krsort , 0 , 0 , 1 )
ZEND_ARG_INFO ( 1 , arg ) /* ARRAY_INFO(1, arg, 0) */
ZEND_ARG_INFO ( 0 , sort_flags )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_ksort , 0 , 0 , 1 )
ZEND_ARG_INFO ( 1 , arg ) /* ARRAY_INFO(1, arg, 0) */
ZEND_ARG_INFO ( 0 , sort_flags )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_count , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , var )
ZEND_ARG_INFO ( 0 , mode )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_natsort , 0 )
ZEND_ARG_INFO ( 1 , arg ) /* ARRAY_INFO(1, arg, 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_natcasesort , 0 )
ZEND_ARG_INFO ( 1 , arg ) /* ARRAY_INFO(1, arg, 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_asort , 0 , 0 , 1 )
ZEND_ARG_INFO ( 1 , arg ) /* ARRAY_INFO(1, arg, 0) */
ZEND_ARG_INFO ( 0 , sort_flags )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_arsort , 0 , 0 , 1 )
ZEND_ARG_INFO ( 1 , arg ) /* ARRAY_INFO(1, arg, 0) */
ZEND_ARG_INFO ( 0 , sort_flags )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_sort , 0 , 0 , 1 )
ZEND_ARG_INFO ( 1 , arg ) /* ARRAY_INFO(1, arg, 0) */
ZEND_ARG_INFO ( 0 , sort_flags )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_rsort , 0 , 0 , 1 )
ZEND_ARG_INFO ( 1 , arg ) /* ARRAY_INFO(1, arg, 0) */
ZEND_ARG_INFO ( 0 , sort_flags )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_usort , 0 )
ZEND_ARG_INFO ( 1 , arg ) /* ARRAY_INFO(1, arg, 0) */
ZEND_ARG_INFO ( 0 , cmp_function )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_uasort , 0 )
ZEND_ARG_INFO ( 1 , arg ) /* ARRAY_INFO(1, arg, 0) */
ZEND_ARG_INFO ( 0 , cmp_function )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_uksort , 0 )
ZEND_ARG_INFO ( 1 , arg ) /* ARRAY_INFO(1, arg, 0) */
ZEND_ARG_INFO ( 0 , cmp_function )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_end , 0 )
ZEND_ARG_INFO ( 1 , arg )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_prev , 0 )
ZEND_ARG_INFO ( 1 , arg )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_next , 0 )
ZEND_ARG_INFO ( 1 , arg )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_reset , 0 )
ZEND_ARG_INFO ( 1 , arg )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_current , ZEND_SEND_PREFER_REF )
2006-07-01 02:16:50 +08:00
ZEND_ARG_INFO ( ZEND_SEND_PREFER_REF , arg )
2006-06-26 03:17:20 +08:00
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_key , ZEND_SEND_PREFER_REF )
2006-07-01 02:16:50 +08:00
ZEND_ARG_INFO ( ZEND_SEND_PREFER_REF , arg )
2006-06-26 03:17:20 +08:00
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_min , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , arg1 )
ZEND_ARG_INFO ( 0 , arg2 )
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_max , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , arg1 )
ZEND_ARG_INFO ( 0 , arg2 )
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_walk , 0 , 0 , 2 )
ZEND_ARG_INFO ( 1 , input ) /* ARRAY_INFO(1, arg, 0) */
ZEND_ARG_INFO ( 0 , funcname )
ZEND_ARG_INFO ( 0 , userdata )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_walk_recursive , 0 , 0 , 2 )
ZEND_ARG_INFO ( 1 , input ) /* ARRAY_INFO(1, arg, 0) */
ZEND_ARG_INFO ( 0 , funcname )
ZEND_ARG_INFO ( 0 , userdata )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_in_array , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , needle )
ZEND_ARG_INFO ( 0 , haystack ) /* ARRAY_INFO(0, haystack, 0) */
ZEND_ARG_INFO ( 0 , strict )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_search , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , needle )
ZEND_ARG_INFO ( 0 , haystack ) /* ARRAY_INFO(0, haystack, 0) */
ZEND_ARG_INFO ( 0 , strict )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_extract , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , arg ) /* ARRAY_INFO(0, arg, 0) */
ZEND_ARG_INFO ( 0 , extract_type )
ZEND_ARG_INFO ( 0 , prefix )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_compact , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , var_names )
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_fill , 0 )
ZEND_ARG_INFO ( 0 , start_key )
ZEND_ARG_INFO ( 0 , num )
ZEND_ARG_INFO ( 0 , val )
ZEND_END_ARG_INFO ( )
2006-07-15 18:10:47 +08:00
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_fill_keys , 0 )
ZEND_ARG_INFO ( 0 , keys ) /* ARRAY_INFO(0, keys, 0) */
ZEND_ARG_INFO ( 0 , val )
ZEND_END_ARG_INFO ( )
2006-06-26 03:17:20 +08:00
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_range , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , low )
ZEND_ARG_INFO ( 0 , high )
ZEND_ARG_INFO ( 0 , step )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_shuffle , 0 )
ZEND_ARG_INFO ( 1 , arg ) /* ARRAY_INFO(1, arg, 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_push , 0 , 0 , 2 )
ZEND_ARG_INFO ( 1 , stack ) /* ARRAY_INFO(1, stack, 0) */
ZEND_ARG_INFO ( 0 , var )
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_pop , 0 )
ZEND_ARG_INFO ( 1 , stack ) /* ARRAY_INFO(1, stack, 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_shift , 0 )
ZEND_ARG_INFO ( 1 , stack ) /* ARRAY_INFO(1, stack, 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_unshift , 0 , 0 , 2 )
ZEND_ARG_INFO ( 1 , stack ) /* ARRAY_INFO(1, stack, 0) */
ZEND_ARG_INFO ( 0 , var )
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_splice , 0 , 0 , 2 )
ZEND_ARG_INFO ( 1 , arg ) /* ARRAY_INFO(1, arg, 0) */
ZEND_ARG_INFO ( 0 , offset )
ZEND_ARG_INFO ( 0 , length )
ZEND_ARG_INFO ( 0 , replacement ) /* ARRAY_INFO(0, arg, 1) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_slice , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , arg ) /* ARRAY_INFO(1, arg, 0) */
ZEND_ARG_INFO ( 0 , offset )
ZEND_ARG_INFO ( 0 , length )
ZEND_ARG_INFO ( 0 , preserve_keys )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_merge , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg, 0) */
ZEND_ARG_INFO ( 0 , . . . ) /* ARRAY_INFO(0, ..., 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_merge_recursive , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg, 0) */
ZEND_ARG_INFO ( 0 , . . . ) /* ARRAY_INFO(0, arg, 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_keys , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , arg ) /* ARRAY_INFO(0, arg, 0) */
ZEND_ARG_INFO ( 0 , search_value )
ZEND_ARG_INFO ( 0 , strict )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_values , 0 )
ZEND_ARG_INFO ( 0 , arg ) /* ARRAY_INFO(0, arg, 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_count_values , 0 )
ZEND_ARG_INFO ( 0 , arg ) /* ARRAY_INFO(0, arg, 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_reverse , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , input ) /* ARRAY_INFO(0, arg, 0) */
ZEND_ARG_INFO ( 0 , preserve_keys )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_pad , 0 )
ZEND_ARG_INFO ( 0 , arg ) /* ARRAY_INFO(0, arg, 0) */
ZEND_ARG_INFO ( 0 , pad_size )
ZEND_ARG_INFO ( 0 , pad_value )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_flip , 0 )
ZEND_ARG_INFO ( 0 , arg ) /* ARRAY_INFO(0, arg, 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_change_key_case , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , input ) /* ARRAY_INFO(0, arg, 0) */
ZEND_ARG_INFO ( 0 , case )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_unique , 0 )
ZEND_ARG_INFO ( 0 , arg ) /* ARRAY_INFO(0, arg, 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_intersect_key , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , . . . ) /* ARRAY_INFO(0, ..., 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_intersect_ukey , 0 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , callback_key_compare_func )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_intersect , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , . . . ) /* ARRAY_INFO(0, ..., 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_uintersect , 0 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , callback_data_compare_func )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_intersect_assoc , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , . . . ) /* ARRAY_INFO(0, ..., 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_uintersect_assoc , 0 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , callback_data_compare_func )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_intersect_uassoc , 0 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , callback_key_compare_func )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_uintersect_uassoc , 0 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , callback_data_compare_func )
ZEND_ARG_INFO ( 0 , callback_key_compare_func )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_diff_key , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , . . . ) /* ARRAY_INFO(0, ..., 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_diff_ukey , 0 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , callback_key_comp_func )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_diff , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , . . . ) /* ARRAY_INFO(0, ..., 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_udiff , 0 )
ZEND_ARG_INFO ( 0 , arr1 )
ZEND_ARG_INFO ( 0 , arr2 )
ZEND_ARG_INFO ( 0 , callback_data_comp_func )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_diff_assoc , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , . . . ) /* ARRAY_INFO(0, ..., 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_diff_uassoc , 0 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , callback_data_comp_func )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_udiff_assoc , 0 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , callback_key_comp_func )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_udiff_uassoc , 0 )
ZEND_ARG_INFO ( 0 , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arr2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , callback_data_comp_func )
ZEND_ARG_INFO ( 0 , callback_key_comp_func )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_multisort , ZEND_SEND_PREFER_REF , 0 , 1 )
2006-07-01 02:16:50 +08:00
ZEND_ARG_INFO ( ZEND_SEND_PREFER_REF , arr1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( ZEND_SEND_PREFER_REF , SORT_ASC_or_SORT_DESC )
ZEND_ARG_INFO ( ZEND_SEND_PREFER_REF , SORT_REGULAR_or_SORT_NUMERIC_or_SORT_STRING )
ZEND_ARG_INFO ( ZEND_SEND_PREFER_REF , arr2 )
ZEND_ARG_INFO ( ZEND_SEND_PREFER_REF , SORT_ASC_or_SORT_DESC )
ZEND_ARG_INFO ( ZEND_SEND_PREFER_REF , SORT_REGULAR_or_SORT_NUMERIC_or_SORT_STRING )
2006-06-26 03:17:20 +08:00
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_rand , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , arg ) /* ARRAY_INFO(0, arg, 0) */
ZEND_ARG_INFO ( 0 , num_req )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_sum , 0 )
ZEND_ARG_INFO ( 0 , arg ) /* ARRAY_INFO(0, arg, 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_product , 0 )
ZEND_ARG_INFO ( 0 , arg ) /* ARRAY_INFO(0, arg, 0) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_reduce , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , arg ) /* ARRAY_INFO(0, arg, 0) */
ZEND_ARG_INFO ( 0 , callback )
ZEND_ARG_INFO ( 0 , initial )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_filter , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , arg ) /* ARRAY_INFO(0, arg, 0) */
ZEND_ARG_INFO ( 0 , callback )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_map , 0 , 0 , 3 )
ZEND_ARG_INFO ( 0 , callback )
ZEND_ARG_INFO ( 0 , arg1 ) /* ARRAY_INFO(0, arg1, 0) */
ZEND_ARG_INFO ( 0 , arg2 ) /* ARRAY_INFO(0, arg2, 0) */
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_key_exists , ZEND_SEND_PREFER_REF )
2006-07-01 02:16:50 +08:00
ZEND_ARG_INFO ( ZEND_SEND_PREFER_REF , key )
ZEND_ARG_INFO ( ZEND_SEND_PREFER_REF , search )
2006-06-26 03:17:20 +08:00
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_array_chunk , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , arg ) /* ARRAY_INFO(0, arg, 0) */
ZEND_ARG_INFO ( 0 , size )
ZEND_ARG_INFO ( 0 , preserve_keys )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_array_combine , 0 )
ZEND_ARG_INFO ( 0 , keys ) /* ARRAY_INFO(0, keys, 0) */
ZEND_ARG_INFO ( 0 , values ) /* ARRAY_INFO(0, values, 0) */
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ basic_functions.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_constant , 0 )
ZEND_ARG_INFO ( 0 , const_name )
ZEND_END_ARG_INFO ( )
# ifdef HAVE_INET_NTOP
static
ZEND_BEGIN_ARG_INFO ( arginfo_inet_ntop , 0 )
ZEND_ARG_INFO ( 0 , in_addr )
ZEND_END_ARG_INFO ( )
# endif
# ifdef HAVE_INET_PTON
static
ZEND_BEGIN_ARG_INFO ( arginfo_inet_pton , 0 )
ZEND_ARG_INFO ( 0 , ip_address )
ZEND_END_ARG_INFO ( )
# endif
static
ZEND_BEGIN_ARG_INFO ( arginfo_ip2long , 0 )
ZEND_ARG_INFO ( 0 , ip_address )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_long2ip , 0 )
ZEND_ARG_INFO ( 0 , proper_address )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_getenv , 0 )
ZEND_ARG_INFO ( 0 , varname )
ZEND_END_ARG_INFO ( )
# ifdef HAVE_PUTENV
static
ZEND_BEGIN_ARG_INFO ( arginfo_putenv , 0 )
ZEND_ARG_INFO ( 0 , setting )
ZEND_END_ARG_INFO ( )
# endif
# ifdef HAVE_GETOPT
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_getopt , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , options )
ZEND_ARG_INFO ( 0 , opts ) /* ARRAY_INFO(0, opts, 1) */
ZEND_END_ARG_INFO ( )
# endif
static
ZEND_BEGIN_ARG_INFO ( arginfo_flush , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_sleep , 0 )
ZEND_ARG_INFO ( 0 , seconds )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_usleep , 0 )
ZEND_ARG_INFO ( 0 , micro_seconds )
ZEND_END_ARG_INFO ( )
# if HAVE_NANOSLEEP
static
ZEND_BEGIN_ARG_INFO ( arginfo_time_nanosleep , 0 )
ZEND_ARG_INFO ( 0 , seconds )
ZEND_ARG_INFO ( 0 , nanoseconds )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_time_sleep_until , 0 )
ZEND_ARG_INFO ( 0 , timestamp )
ZEND_END_ARG_INFO ( )
# endif
static
ZEND_BEGIN_ARG_INFO ( arginfo_get_current_user , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_get_cfg_var , 0 )
ZEND_ARG_INFO ( 0 , option_name )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_error_log , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , message )
ZEND_ARG_INFO ( 0 , message_type )
ZEND_ARG_INFO ( 0 , destination )
ZEND_ARG_INFO ( 0 , extra_headers )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_call_user_func , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , function_name )
ZEND_ARG_INFO ( 0 , parmeter )
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_call_user_func_array , 0 )
ZEND_ARG_INFO ( 0 , function_name )
ZEND_ARG_INFO ( 0 , parameters ) /* ARRAY_INFO(0, parameters, 1) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_call_user_method , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , method_name )
ZEND_ARG_INFO ( 1 , object )
ZEND_ARG_INFO ( 0 , parameter )
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_call_user_method_array , 0 )
ZEND_ARG_INFO ( 0 , method_name )
ZEND_ARG_INFO ( 1 , object )
ZEND_ARG_INFO ( 0 , params ) /* ARRAY_INFO(0, params, 1) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_register_shutdown_function , 0 )
ZEND_ARG_INFO ( 0 , function_name )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_highlight_file , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , file_name )
ZEND_ARG_INFO ( 0 , return )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_php_strip_whitespace , 0 )
ZEND_ARG_INFO ( 0 , file_name )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_highlight_string , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , string )
ZEND_ARG_INFO ( 0 , return )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ini_get , 0 )
ZEND_ARG_INFO ( 0 , varname )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_ini_get_all , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , extension )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ini_set , 0 )
ZEND_ARG_INFO ( 0 , varname )
ZEND_ARG_INFO ( 0 , newvalue )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ini_restore , 0 )
ZEND_ARG_INFO ( 0 , varname )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_set_include_path , 0 )
ZEND_ARG_INFO ( 0 , new_include_path )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_get_include_path , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_restore_include_path , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_print_r , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , var )
ZEND_ARG_INFO ( 0 , return )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_connection_aborted , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_connection_status , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_ignore_user_abort , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , value )
ZEND_END_ARG_INFO ( )
# if HAVE_GETSERVBYNAME
static
ZEND_BEGIN_ARG_INFO ( arginfo_getservbyname , 0 )
ZEND_ARG_INFO ( 0 , service )
ZEND_ARG_INFO ( 0 , protocol )
ZEND_END_ARG_INFO ( )
# endif
# if HAVE_GETSERVBYPORT
static
ZEND_BEGIN_ARG_INFO ( arginfo_getservbyport , 0 )
ZEND_ARG_INFO ( 0 , port )
ZEND_ARG_INFO ( 0 , protocol )
ZEND_END_ARG_INFO ( )
# endif
# if HAVE_GETPROTOBYNAME
static
ZEND_BEGIN_ARG_INFO ( arginfo_getprotobyname , 0 )
ZEND_ARG_INFO ( 0 , name )
ZEND_END_ARG_INFO ( )
# endif
# if HAVE_GETPROTOBYNUMBER
static
ZEND_BEGIN_ARG_INFO ( arginfo_getprotobynumber , 0 )
ZEND_ARG_INFO ( 0 , proto )
ZEND_END_ARG_INFO ( )
# endif
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_register_tick_function , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , function_name )
ZEND_ARG_INFO ( 0 , arg )
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_unregister_tick_function , 0 )
ZEND_ARG_INFO ( 0 , function_name )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_uploaded_file , 0 )
ZEND_ARG_INFO ( 0 , path )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_move_uploaded_file , 0 )
ZEND_ARG_INFO ( 0 , path )
ZEND_ARG_INFO ( 0 , new_path )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_parse_ini_file , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , process_sections )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_import_request_variables , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , types )
ZEND_ARG_INFO ( 0 , prefix )
ZEND_END_ARG_INFO ( )
2006-06-27 06:19:04 +08:00
# ifdef HAVE_GETLOADAVG
static
ZEND_BEGIN_ARG_INFO ( arginfo_sys_getloadavg , 0 )
ZEND_END_ARG_INFO ( )
# endif
2006-06-26 03:17:20 +08:00
/* }}} */
/* {{{ assert.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_assert , 0 )
ZEND_ARG_INFO ( 0 , assertion )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_assert_options , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , what )
ZEND_ARG_INFO ( 0 , value )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ base64.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_base64_encode , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
2006-06-27 06:19:04 +08:00
ZEND_BEGIN_ARG_INFO_EX ( arginfo_base64_decode , 0 , 0 , 1 )
2006-06-26 03:17:20 +08:00
ZEND_ARG_INFO ( 0 , str )
2006-06-27 06:19:04 +08:00
ZEND_ARG_INFO ( 0 , strict )
2006-06-26 03:17:20 +08:00
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ browscap.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_get_browser , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , browser_name )
ZEND_ARG_INFO ( 0 , return_array )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ crc32.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_crc32 , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ crypt.c */
# if HAVE_CRYPT
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_crypt , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , salt )
ZEND_END_ARG_INFO ( )
# endif
/* }}} */
/* {{{ cyr_convert.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_convert_cyr_string , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , from )
ZEND_ARG_INFO ( 0 , to )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ datetime.c */
# if HAVE_STRPTIME
static
ZEND_BEGIN_ARG_INFO ( arginfo_strptime , 0 )
ZEND_ARG_INFO ( 0 , timestamp )
ZEND_ARG_INFO ( 0 , format )
ZEND_END_ARG_INFO ( )
# endif
/* }}} */
/* {{{ dir.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_opendir , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , path )
ZEND_ARG_INFO ( 0 , context )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_dir , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , directory )
ZEND_ARG_INFO ( 0 , context )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_closedir , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , dir_handle )
ZEND_END_ARG_INFO ( )
# if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC
static
ZEND_BEGIN_ARG_INFO ( arginfo_chroot , 0 )
ZEND_ARG_INFO ( 0 , directory )
ZEND_END_ARG_INFO ( )
# endif
static
ZEND_BEGIN_ARG_INFO ( arginfo_chdir , 0 )
ZEND_ARG_INFO ( 0 , directory )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_getcwd , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_rewinddir , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , dir_handle )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_readdir , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , dir_handle )
ZEND_END_ARG_INFO ( )
# ifdef HAVE_GLOB
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_glob , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , pattern )
ZEND_ARG_INFO ( 0 , flags )
ZEND_END_ARG_INFO ( )
# endif
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_scandir , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , dir )
ZEND_ARG_INFO ( 0 , sorting_order )
ZEND_ARG_INFO ( 0 , context )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ dns.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_gethostbyaddr , 0 )
ZEND_ARG_INFO ( 0 , ip_address )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_gethostbyname , 0 )
ZEND_ARG_INFO ( 0 , hostname )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_gethostbynamel , 0 )
ZEND_ARG_INFO ( 0 , hostname )
ZEND_END_ARG_INFO ( )
# if HAVE_RES_SEARCH && !(defined(__BEOS__)||defined(PHP_WIN32) || defined(NETWARE))
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_dns_check_record , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , host )
ZEND_ARG_INFO ( 0 , type )
ZEND_END_ARG_INFO ( )
# if HAVE_DNS_FUNCS
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_dns_get_record , 1 , 0 , 1 )
ZEND_ARG_INFO ( 0 , hostname )
ZEND_ARG_INFO ( 0 , type )
ZEND_ARG_INFO ( 1 , authns ) /* ARRAY_INFO(1, authns, 1) */
ZEND_ARG_INFO ( 1 , addtl ) /* ARRAY_INFO(1, addtl, 1) */
ZEND_END_ARG_INFO ( )
# endif
# if HAVE_DN_SKIPNAME && HAVE_DN_EXPAND
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_dns_get_mx , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , hostname )
ZEND_ARG_INFO ( 1 , mxhosts ) /* ARRAY_INFO(1, mxhosts, 1) */
ZEND_ARG_INFO ( 1 , weight ) /* ARRAY_INFO(1, weight, 1) */
ZEND_END_ARG_INFO ( )
# endif
# endif /* HAVE_RES_SEARCH && !(defined(__BEOS__)||defined(PHP_WIN32) || defined(NETWARE)) */
/* }}} */
/* {{{ exec.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_exec , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , command )
ZEND_ARG_INFO ( 1 , output ) /* ARRAY_INFO(1, output, 1) */
ZEND_ARG_INFO ( 1 , return_value )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_system , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , command )
ZEND_ARG_INFO ( 1 , return_value )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_passthru , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , command )
ZEND_ARG_INFO ( 1 , return_value )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_escapeshellcmd , 0 )
ZEND_ARG_INFO ( 0 , command )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_escapeshellarg , 0 )
ZEND_ARG_INFO ( 0 , arg )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_shell_exec , 0 )
ZEND_ARG_INFO ( 0 , cmd )
ZEND_END_ARG_INFO ( )
# ifdef HAVE_NICE
static
ZEND_BEGIN_ARG_INFO ( arginfo_proc_nice , 0 )
ZEND_ARG_INFO ( 0 , priority )
ZEND_END_ARG_INFO ( )
# endif
/* }}} */
/* {{{ file.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_flock , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_ARG_INFO ( 0 , operation )
ZEND_ARG_INFO ( 1 , wouldblock )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_get_meta_tags , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , use_include_path )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_file_get_contents , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , flags )
ZEND_ARG_INFO ( 0 , context )
ZEND_ARG_INFO ( 0 , offset )
ZEND_ARG_INFO ( 0 , maxlen )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_file_put_contents , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , data )
ZEND_ARG_INFO ( 0 , flags )
ZEND_ARG_INFO ( 0 , context )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_file , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , flags )
ZEND_ARG_INFO ( 0 , context )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_tempnam , 0 )
ZEND_ARG_INFO ( 0 , dir )
ZEND_ARG_INFO ( 0 , prefix )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_tmpfile , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_fopen , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , mode )
ZEND_ARG_INFO ( 0 , use_include_path )
ZEND_ARG_INFO ( 0 , context )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_fclose , 0 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_popen , 0 )
ZEND_ARG_INFO ( 0 , command )
ZEND_ARG_INFO ( 0 , mode )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_pclose , 0 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_feof , 0 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_fgets , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_ARG_INFO ( 0 , length )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_fgetc , 0 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_fgetss , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_ARG_INFO ( 0 , length )
ZEND_ARG_INFO ( 0 , allowable_tags )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_fscanf , 1 , 0 , 2 )
ZEND_ARG_INFO ( 0 , stream )
ZEND_ARG_INFO ( 0 , format )
ZEND_ARG_INFO ( 1 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_fwrite , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , length )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_fflush , 0 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_rewind , 0 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ftell , 0 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_fseek , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_ARG_INFO ( 0 , offset )
ZEND_ARG_INFO ( 0 , whence )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_mkdir , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , pathname )
ZEND_ARG_INFO ( 0 , mode )
ZEND_ARG_INFO ( 0 , recursive )
ZEND_ARG_INFO ( 0 , context )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_rmdir , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , dirname )
ZEND_ARG_INFO ( 0 , context )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_readfile , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , flags )
ZEND_ARG_INFO ( 0 , context )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_umask , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , mask )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_fpassthru , 0 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_rename , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , old_name )
ZEND_ARG_INFO ( 0 , new_name )
ZEND_ARG_INFO ( 0 , context )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_unlink , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , context )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ftruncate , 0 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_ARG_INFO ( 0 , size )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_fstat , 0 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_copy , 0 )
ZEND_ARG_INFO ( 0 , source_file )
ZEND_ARG_INFO ( 0 , destination_file )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_fread , 0 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_ARG_INFO ( 0 , length )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_fputcsv , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_ARG_INFO ( 0 , fields ) /* ARRAY_INFO(0, fields, 1) */
ZEND_ARG_INFO ( 0 , delimiter )
ZEND_ARG_INFO ( 0 , enclosure )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_fgetcsv , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_ARG_INFO ( 0 , length )
ZEND_ARG_INFO ( 0 , delimiter )
ZEND_ARG_INFO ( 0 , enclosure )
ZEND_END_ARG_INFO ( )
# if (!defined(__BEOS__) && !defined(NETWARE) && HAVE_REALPATH) || defined(ZTS)
static
ZEND_BEGIN_ARG_INFO ( arginfo_realpath , 0 )
ZEND_ARG_INFO ( 0 , path )
ZEND_END_ARG_INFO ( )
# endif
# ifdef HAVE_FNMATCH
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_fnmatch , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , pattern )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , flags )
ZEND_END_ARG_INFO ( )
# endif
static
ZEND_BEGIN_ARG_INFO ( arginfo_sys_get_temp_dir , 0 )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ filestat.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_disk_total_space , 0 )
ZEND_ARG_INFO ( 0 , path )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_disk_free_space , 0 )
ZEND_ARG_INFO ( 0 , path )
ZEND_END_ARG_INFO ( )
# ifndef NETWARE
static
ZEND_BEGIN_ARG_INFO ( arginfo_chgrp , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , group )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_chown , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , user )
ZEND_END_ARG_INFO ( )
# endif
# if HAVE_LCHOWN
static
ZEND_BEGIN_ARG_INFO ( arginfo_lchgrp , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , group )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_lchown , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , user )
ZEND_END_ARG_INFO ( )
# endif
static
ZEND_BEGIN_ARG_INFO ( arginfo_chmod , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , mode )
ZEND_END_ARG_INFO ( )
# if HAVE_UTIME
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_touch , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , time )
ZEND_ARG_INFO ( 0 , atime )
ZEND_END_ARG_INFO ( )
# endif
static
ZEND_BEGIN_ARG_INFO ( arginfo_clearstatcache , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_fileperms , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_fileinode , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_filesize , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_fileowner , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_filegroup , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_fileatime , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_filemtime , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_filectime , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_filetype , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_writable , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_readable , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_executable , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_file , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_dir , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_link , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_file_exists , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_lstat , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stat , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ formatted_print.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_sprintf , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , format )
ZEND_ARG_INFO ( 0 , arg1 )
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_vsprintf , 0 )
ZEND_ARG_INFO ( 0 , format )
ZEND_ARG_INFO ( 0 , args ) /* ARRAY_INFO(0, args, 1) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_printf , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , format )
ZEND_ARG_INFO ( 0 , arg1 )
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_vprintf , 0 )
ZEND_ARG_INFO ( 0 , format )
ZEND_ARG_INFO ( 0 , args ) /* ARRAY_INFO(0, args, 1) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_fprintf , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , stream )
ZEND_ARG_INFO ( 0 , format )
ZEND_ARG_INFO ( 0 , arg1 )
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_vfprintf , 0 )
ZEND_ARG_INFO ( 0 , stream )
ZEND_ARG_INFO ( 0 , format )
ZEND_ARG_INFO ( 0 , args ) /* ARRAY_INFO(0, args, 1) */
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ fsock.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_fsockopen , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , hostname )
ZEND_ARG_INFO ( 0 , port )
ZEND_ARG_INFO ( 1 , errno )
ZEND_ARG_INFO ( 1 , errstr )
ZEND_ARG_INFO ( 0 , timeout )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_pfsockopen , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , hostname )
ZEND_ARG_INFO ( 0 , port )
ZEND_ARG_INFO ( 1 , errno )
ZEND_ARG_INFO ( 1 , errstr )
ZEND_ARG_INFO ( 0 , timeout )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ ftok.c */
# if HAVE_FTOK
static
ZEND_BEGIN_ARG_INFO ( arginfo_ftok , 0 )
ZEND_ARG_INFO ( 0 , pathname )
ZEND_ARG_INFO ( 0 , proj )
ZEND_END_ARG_INFO ( )
# endif
/* }}} */
/* {{{ head.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_header , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , header )
ZEND_ARG_INFO ( 0 , replace )
ZEND_ARG_INFO ( 0 , http_response_code )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_setcookie , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , name )
ZEND_ARG_INFO ( 0 , value )
ZEND_ARG_INFO ( 0 , expires )
ZEND_ARG_INFO ( 0 , path )
ZEND_ARG_INFO ( 0 , domain )
ZEND_ARG_INFO ( 0 , secure )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_setrawcookie , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , name )
ZEND_ARG_INFO ( 0 , value )
ZEND_ARG_INFO ( 0 , expires )
ZEND_ARG_INFO ( 0 , path )
ZEND_ARG_INFO ( 0 , domain )
ZEND_ARG_INFO ( 0 , secure )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_headers_sent , 0 , 0 , 0 )
ZEND_ARG_INFO ( 1 , file )
ZEND_ARG_INFO ( 1 , line )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_headers_list , 0 )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ html.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_htmlspecialchars , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , string )
ZEND_ARG_INFO ( 0 , quote_style )
ZEND_ARG_INFO ( 0 , charset )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_htmlspecialchars_decode , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , string )
ZEND_ARG_INFO ( 0 , quote_style )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_html_entity_decode , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , string )
ZEND_ARG_INFO ( 0 , quote_style )
ZEND_ARG_INFO ( 0 , charset )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_htmlentities , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , string )
ZEND_ARG_INFO ( 0 , quote_style )
ZEND_ARG_INFO ( 0 , charset )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_get_html_translation_table , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , table )
ZEND_ARG_INFO ( 0 , quote_style )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ http.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_http_build_query , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , formdata )
ZEND_ARG_INFO ( 0 , prefix )
ZEND_ARG_INFO ( 0 , arg_separator )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ image.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_image_type_to_mime_type , 0 )
ZEND_ARG_INFO ( 0 , imagetype )
ZEND_END_ARG_INFO ( )
2006-06-26 04:52:34 +08:00
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_image_type_to_extension , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , imagetype )
ZEND_ARG_INFO ( 0 , include_dot )
ZEND_END_ARG_INFO ( )
2006-06-26 03:17:20 +08:00
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_getimagesize , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , imagefile )
ZEND_ARG_INFO ( 1 , info ) /* ARRAY_INFO(1, info, 1) */
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ info.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_phpinfo , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , what )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_phpversion , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , extension )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_phpcredits , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , flag )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_php_logo_guid , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_php_real_logo_guid , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_php_egg_logo_guid , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_zend_logo_guid , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_php_sapi_name , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_php_uname , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_php_ini_scanned_files , 0 )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ iptc.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_iptcembed , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , iptcdata )
ZEND_ARG_INFO ( 0 , jpeg_file_name )
ZEND_ARG_INFO ( 0 , spool )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_iptcparse , 0 )
ZEND_ARG_INFO ( 0 , iptcdata )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ lcg.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_lcg_value , 0 )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ levenshtein.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_levenshtein , 0 )
ZEND_ARG_INFO ( 0 , str1 )
ZEND_ARG_INFO ( 0 , str2 )
ZEND_ARG_INFO ( 0 , cost_ins )
ZEND_ARG_INFO ( 0 , cost_rep )
ZEND_ARG_INFO ( 0 , cost_del )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ link.c */
# ifdef HAVE_SYMLINK
static
ZEND_BEGIN_ARG_INFO ( arginfo_readlink , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_linkinfo , 0 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_symlink , 0 )
ZEND_ARG_INFO ( 0 , target )
ZEND_ARG_INFO ( 0 , link )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_link , 0 )
ZEND_ARG_INFO ( 0 , target )
ZEND_ARG_INFO ( 0 , link )
ZEND_END_ARG_INFO ( )
# endif
/* }}} */
/* {{{ mail.c */
# ifdef HAVE_SENDMAIL
static
ZEND_BEGIN_ARG_INFO ( arginfo_ezmlm_hash , 0 )
ZEND_ARG_INFO ( 0 , addr )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_mail , 0 , 0 , 3 )
ZEND_ARG_INFO ( 0 , to )
ZEND_ARG_INFO ( 0 , subject )
ZEND_ARG_INFO ( 0 , message )
ZEND_ARG_INFO ( 0 , additional_headers )
ZEND_ARG_INFO ( 0 , additional_parameters )
ZEND_END_ARG_INFO ( )
# endif
/* }}} */
/* {{{ math.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_abs , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ceil , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_floor , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_round , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , number )
ZEND_ARG_INFO ( 0 , precision )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_sin , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_cos , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_tan , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_asin , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_acos , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_atan , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_atan2 , 0 )
ZEND_ARG_INFO ( 0 , y )
ZEND_ARG_INFO ( 0 , x )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_sinh , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_cosh , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_tanh , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
# ifdef HAVE_ASINH
static
ZEND_BEGIN_ARG_INFO ( arginfo_asinh , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
# endif
# ifdef HAVE_ACOSH
static
ZEND_BEGIN_ARG_INFO ( arginfo_acosh , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
# endif
# ifdef HAVE_ATANH
static
ZEND_BEGIN_ARG_INFO ( arginfo_atanh , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
# endif
static
ZEND_BEGIN_ARG_INFO ( arginfo_pi , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_finite , 0 )
ZEND_ARG_INFO ( 0 , val )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_infinite , 0 )
ZEND_ARG_INFO ( 0 , val )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_nan , 0 )
ZEND_ARG_INFO ( 0 , val )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_pow , 0 )
ZEND_ARG_INFO ( 0 , base )
ZEND_ARG_INFO ( 0 , exponent )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_exp , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
# if !defined(PHP_WIN32) && !defined(NETWARE)
static
ZEND_BEGIN_ARG_INFO ( arginfo_expm1 , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
# ifdef HAVE_LOG1P
static
ZEND_BEGIN_ARG_INFO ( arginfo_log1p , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
# endif
# endif /* !defined(PHP_WIN32) && !defined(NETWARE) */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_log , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , number )
ZEND_ARG_INFO ( 0 , base )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_log10 , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_sqrt , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_hypot , 0 )
ZEND_ARG_INFO ( 0 , num1 )
ZEND_ARG_INFO ( 0 , num2 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_deg2rad , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_rad2deg , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_bindec , 0 )
ZEND_ARG_INFO ( 0 , binary_number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_hexdec , 0 )
ZEND_ARG_INFO ( 0 , hexadecimal_number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_octdec , 0 )
ZEND_ARG_INFO ( 0 , octal_number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_decbin , 0 )
ZEND_ARG_INFO ( 0 , decimal_number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_decoct , 0 )
ZEND_ARG_INFO ( 0 , decimal_number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_dechex , 0 )
ZEND_ARG_INFO ( 0 , decimal_number )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_base_convert , 0 )
ZEND_ARG_INFO ( 0 , number )
ZEND_ARG_INFO ( 0 , frombase )
ZEND_ARG_INFO ( 0 , tobase )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_number_format , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , number )
ZEND_ARG_INFO ( 0 , num_decimal_places )
ZEND_ARG_INFO ( 0 , dec_seperator )
ZEND_ARG_INFO ( 0 , thousands_seperator )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_fmod , 0 )
ZEND_ARG_INFO ( 0 , x )
ZEND_ARG_INFO ( 0 , y )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ md5.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_md5 , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , raw_output )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_md5_file , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , raw_output )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ metaphone.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_metaphone , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , text )
ZEND_ARG_INFO ( 0 , phones )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ microtime.c */
# ifdef HAVE_GETTIMEOFDAY
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_microtime , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , get_as_float )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_gettimeofday , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , get_as_float )
ZEND_END_ARG_INFO ( )
# endif
# ifdef HAVE_GETRUSAGE
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_getrusage , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , who )
ZEND_END_ARG_INFO ( )
# endif
/* }}} */
/* {{{ pack.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_pack , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , format )
2006-07-02 08:10:36 +08:00
ZEND_ARG_INFO ( 0 , arg1 )
ZEND_ARG_INFO ( 0 , . . . )
2006-06-26 03:17:20 +08:00
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_unpack , 0 )
ZEND_ARG_INFO ( 0 , format )
ZEND_ARG_INFO ( 0 , input )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ pageinfo.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_getmyuid , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_getmygid , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_getmypid , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_getmyinode , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_getlastmod , 0 )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ proc_open.c */
# ifdef PHP_CAN_SUPPORT_PROC_OPEN
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_proc_terminate , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , process )
ZEND_ARG_INFO ( 0 , signal )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_proc_close , 0 )
ZEND_ARG_INFO ( 0 , process )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_proc_get_status , 0 )
ZEND_ARG_INFO ( 0 , process )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_proc_open , 0 , 0 , 3 )
ZEND_ARG_INFO ( 0 , command )
ZEND_ARG_INFO ( 0 , descriptorspec ) /* ARRAY_INFO(0, descriptorspec, 1) */
ZEND_ARG_INFO ( 1 , pipes ) /* ARRAY_INFO(1, pipes, 1) */
ZEND_ARG_INFO ( 0 , cwd )
ZEND_ARG_INFO ( 0 , env ) /* ARRAY_INFO(0, env, 1) */
ZEND_ARG_INFO ( 0 , other_options ) /* ARRAY_INFO(0, other_options, 1) */
ZEND_END_ARG_INFO ( )
# endif
/* }}} */
/* {{{ quot_print.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_quoted_printable_decode , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ rand.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_srand , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , seed )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_mt_srand , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , seed )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_rand , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , min )
ZEND_ARG_INFO ( 0 , max )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_mt_rand , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , min )
ZEND_ARG_INFO ( 0 , max )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_getrandmax , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_mt_getrandmax , 0 )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ reg.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_ereg , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , pattern )
ZEND_ARG_INFO ( 0 , string )
ZEND_ARG_INFO ( 1 , registers ) /* ARRAY_INFO(1, registers, 1) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_eregi , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , pattern )
ZEND_ARG_INFO ( 0 , string )
ZEND_ARG_INFO ( 1 , registers ) /* ARRAY_INFO(1, registers, 1) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ereg_replace , 0 )
ZEND_ARG_INFO ( 0 , pattern )
ZEND_ARG_INFO ( 0 , replacement )
ZEND_ARG_INFO ( 0 , string )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_eregi_replace , 0 )
ZEND_ARG_INFO ( 0 , pattern )
ZEND_ARG_INFO ( 0 , replacement )
ZEND_ARG_INFO ( 0 , string )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_split , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , pattern )
ZEND_ARG_INFO ( 0 , string )
ZEND_ARG_INFO ( 0 , limit )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_spliti , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , pattern )
ZEND_ARG_INFO ( 0 , string )
ZEND_ARG_INFO ( 0 , limit )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_sql_regcase , 0 )
ZEND_ARG_INFO ( 0 , string )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ sha1.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_sha1 , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , raw_output )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_sha1_file , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , filename )
ZEND_ARG_INFO ( 0 , raw_output )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ soundex.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_soundex , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ streamsfuncs.c */
# if HAVE_SOCKETPAIR
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_socket_pair , 0 )
ZEND_ARG_INFO ( 0 , domain )
ZEND_ARG_INFO ( 0 , type )
ZEND_ARG_INFO ( 0 , protocol )
ZEND_END_ARG_INFO ( )
# endif
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stream_socket_client , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , remoteaddress )
ZEND_ARG_INFO ( 1 , errcode )
ZEND_ARG_INFO ( 1 , errstring )
ZEND_ARG_INFO ( 0 , timeout )
ZEND_ARG_INFO ( 0 , flags )
ZEND_ARG_INFO ( 0 , context )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stream_socket_server , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , localaddress )
ZEND_ARG_INFO ( 1 , errcode )
ZEND_ARG_INFO ( 1 , errstring )
ZEND_ARG_INFO ( 0 , flags )
ZEND_ARG_INFO ( 0 , context )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stream_socket_accept , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , serverstream )
ZEND_ARG_INFO ( 0 , timeout )
ZEND_ARG_INFO ( 1 , peername )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_socket_get_name , 0 )
ZEND_ARG_INFO ( 0 , stream )
ZEND_ARG_INFO ( 0 , want_peer )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stream_socket_sendto , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , stream )
ZEND_ARG_INFO ( 0 , data )
ZEND_ARG_INFO ( 0 , flags )
ZEND_ARG_INFO ( 0 , target_addr )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stream_socket_recvfrom , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , stream )
ZEND_ARG_INFO ( 0 , amount )
ZEND_ARG_INFO ( 0 , flags )
ZEND_ARG_INFO ( 1 , remote_addr )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stream_get_contents , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , source )
ZEND_ARG_INFO ( 0 , maxlen )
ZEND_ARG_INFO ( 0 , offset )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stream_copy_to_stream , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , source )
ZEND_ARG_INFO ( 0 , dest )
ZEND_ARG_INFO ( 0 , maxlen )
ZEND_ARG_INFO ( 0 , pos )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_get_meta_data , 0 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_get_transports , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_get_wrappers , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stream_select , 0 , 0 , 4 )
ZEND_ARG_INFO ( 1 , read_streams ) /* ARRAY_INFO(1, read_streams, 1) */
ZEND_ARG_INFO ( 1 , write_streams ) /* ARRAY_INFO(1, write_streams, 1) */
ZEND_ARG_INFO ( 1 , except_streams ) /* ARRAY_INFO(1, except_streams, 1) */
ZEND_ARG_INFO ( 0 , tv_sec )
ZEND_ARG_INFO ( 0 , tv_usec )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_context_get_options , 0 )
ZEND_ARG_INFO ( 0 , stream_or_context )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_context_set_option , 0 )
ZEND_ARG_INFO ( 0 , stream_or_context )
ZEND_ARG_INFO ( 0 , wrappername )
ZEND_ARG_INFO ( 0 , optionname )
ZEND_ARG_INFO ( 0 , value )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_context_set_params , 0 )
ZEND_ARG_INFO ( 0 , stream_or_context )
ZEND_ARG_INFO ( 0 , options ) /* ARRAY_INFO(0, options, 1) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stream_context_get_default , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , options ) /* ARRAY_INFO(0, options, 1) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stream_context_create , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , options ) /* ARRAY_INFO(0, options, 1) */
ZEND_ARG_INFO ( 0 , params ) /* ARRAY_INFO(0, params, 1) */
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stream_filter_prepend , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , stream )
ZEND_ARG_INFO ( 0 , filtername )
ZEND_ARG_INFO ( 0 , read_write )
ZEND_ARG_INFO ( 0 , filterparams )
ZEND_END_ARG_INFO ( )
2003-08-04 01:44:39 +08:00
static
2006-06-26 03:17:20 +08:00
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stream_filter_append , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , stream )
ZEND_ARG_INFO ( 0 , filtername )
ZEND_ARG_INFO ( 0 , read_write )
ZEND_ARG_INFO ( 0 , filterparams )
ZEND_END_ARG_INFO ( )
2003-08-04 01:44:39 +08:00
static
2006-06-26 03:17:20 +08:00
ZEND_BEGIN_ARG_INFO ( arginfo_stream_filter_remove , 0 )
ZEND_ARG_INFO ( 0 , stream_filter )
ZEND_END_ARG_INFO ( )
2003-08-04 01:44:39 +08:00
2006-06-26 03:17:20 +08:00
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stream_get_line , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , stream )
ZEND_ARG_INFO ( 0 , maxlen )
ZEND_ARG_INFO ( 0 , ending )
ZEND_END_ARG_INFO ( )
2003-08-04 01:44:39 +08:00
static
2006-06-26 03:17:20 +08:00
ZEND_BEGIN_ARG_INFO ( arginfo_stream_set_blocking , 0 )
ZEND_ARG_INFO ( 0 , socket )
ZEND_ARG_INFO ( 0 , mode )
ZEND_END_ARG_INFO ( )
2003-08-04 01:44:39 +08:00
2006-06-26 03:17:20 +08:00
# if HAVE_SYS_TIME_H || defined(PHP_WIN32)
2005-08-10 20:02:14 +08:00
static
2006-06-26 03:17:20 +08:00
ZEND_BEGIN_ARG_INFO ( arginfo_stream_set_timeout , 0 )
ZEND_ARG_INFO ( 0 , stream )
ZEND_ARG_INFO ( 0 , seconds )
ZEND_ARG_INFO ( 0 , microseconds )
ZEND_END_ARG_INFO ( )
# endif
2005-08-10 20:02:14 +08:00
2006-06-26 03:17:20 +08:00
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_set_write_buffer , 0 )
ZEND_ARG_INFO ( 0 , fp )
ZEND_ARG_INFO ( 0 , buffer )
ZEND_END_ARG_INFO ( )
1999-08-06 23:25:11 +08:00
2006-06-26 03:17:20 +08:00
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stream_socket_enable_crypto , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , stream )
ZEND_ARG_INFO ( 0 , enable )
ZEND_ARG_INFO ( 0 , cryptokind )
ZEND_ARG_INFO ( 0 , sessionstream )
ZEND_END_ARG_INFO ( )
2000-09-02 00:10:17 +08:00
2006-06-26 03:17:20 +08:00
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stream_encoding , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , stream )
ZEND_ARG_INFO ( 0 , encoding )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ string.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_bin2hex , 0 )
ZEND_ARG_INFO ( 0 , data )
ZEND_END_ARG_INFO ( )
2001-08-30 00:00:30 +08:00
2006-06-26 03:17:20 +08:00
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_strspn , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , mask )
ZEND_ARG_INFO ( 0 , start )
ZEND_ARG_INFO ( 0 , len )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_strcspn , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , mask )
ZEND_ARG_INFO ( 0 , start )
ZEND_ARG_INFO ( 0 , len )
ZEND_END_ARG_INFO ( )
# if HAVE_NL_LANGINFO
static
ZEND_BEGIN_ARG_INFO ( arginfo_nl_langinfo , 0 )
ZEND_ARG_INFO ( 0 , item )
ZEND_END_ARG_INFO ( )
# endif
# ifdef HAVE_STRCOLL
static
ZEND_BEGIN_ARG_INFO ( arginfo_strcoll , 0 )
ZEND_ARG_INFO ( 0 , str1 )
ZEND_ARG_INFO ( 0 , str2 )
ZEND_END_ARG_INFO ( )
# endif
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_trim , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , character_mask )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_rtrim , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , character_mask )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_ltrim , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , character_mask )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_wordwrap , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , width )
ZEND_ARG_INFO ( 0 , break )
ZEND_ARG_INFO ( 0 , cut )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_explode , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , separator )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , limit )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_implode , 0 )
ZEND_ARG_INFO ( 0 , glue )
ZEND_ARG_INFO ( 0 , pieces )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_strtok , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , token )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_strtoupper , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_strtolower , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_strtotitle , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_basename , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , path )
ZEND_ARG_INFO ( 0 , suffix )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_dirname , 0 )
ZEND_ARG_INFO ( 0 , path )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_pathinfo , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , path )
ZEND_ARG_INFO ( 0 , options )
ZEND_END_ARG_INFO ( )
static
2006-06-28 06:14:07 +08:00
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stristr , 0 , 0 , 2 )
2006-06-26 03:17:20 +08:00
ZEND_ARG_INFO ( 0 , haystack )
ZEND_ARG_INFO ( 0 , needle )
ZEND_ARG_INFO ( 0 , part )
ZEND_END_ARG_INFO ( )
2006-06-28 06:14:07 +08:00
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_strstr , 0 , 0 , 2 )
2006-06-26 03:17:20 +08:00
ZEND_ARG_INFO ( 0 , haystack )
ZEND_ARG_INFO ( 0 , needle )
ZEND_ARG_INFO ( 0 , part )
ZEND_END_ARG_INFO ( )
2006-06-28 06:14:07 +08:00
static
2006-06-26 03:17:20 +08:00
ZEND_BEGIN_ARG_INFO_EX ( arginfo_strpos , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , haystack )
ZEND_ARG_INFO ( 0 , needle )
ZEND_ARG_INFO ( 0 , offset )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_stripos , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , haystack )
ZEND_ARG_INFO ( 0 , needle )
ZEND_ARG_INFO ( 0 , offset )
ZEND_END_ARG_INFO ( )
2006-06-28 06:14:07 +08:00
static
2006-06-26 03:17:20 +08:00
ZEND_BEGIN_ARG_INFO_EX ( arginfo_strrpos , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , haystack )
ZEND_ARG_INFO ( 0 , needle )
ZEND_ARG_INFO ( 0 , offset )
ZEND_END_ARG_INFO ( )
2006-06-28 06:14:07 +08:00
static
2006-06-26 03:17:20 +08:00
ZEND_BEGIN_ARG_INFO_EX ( arginfo_strripos , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , haystack )
ZEND_ARG_INFO ( 0 , needle )
ZEND_ARG_INFO ( 0 , offset )
ZEND_END_ARG_INFO ( )
2006-06-28 06:14:07 +08:00
static
2006-06-26 03:17:20 +08:00
ZEND_BEGIN_ARG_INFO ( arginfo_strrchr , 0 )
ZEND_ARG_INFO ( 0 , haystack )
ZEND_ARG_INFO ( 0 , needle )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_chunk_split , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , chunklen )
ZEND_ARG_INFO ( 0 , ending )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_substr , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , start )
ZEND_ARG_INFO ( 0 , length )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_substr_replace , 0 , 0 , 3 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , replace )
ZEND_ARG_INFO ( 0 , start )
ZEND_ARG_INFO ( 0 , length )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_quotemeta , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ord , 0 )
ZEND_ARG_INFO ( 0 , character )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_chr , 0 )
ZEND_ARG_INFO ( 0 , codepoint )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ucfirst , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_ucwords , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_strtr , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , from )
ZEND_ARG_INFO ( 0 , to )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_strrev , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_similar_text , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , str1 )
ZEND_ARG_INFO ( 0 , str2 )
ZEND_ARG_INFO ( 1 , percent )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_addcslashes , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , charlist )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_addslashes , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stripcslashes , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stripslashes , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_str_replace , 0 , 0 , 3 )
ZEND_ARG_INFO ( 0 , search )
ZEND_ARG_INFO ( 0 , replace )
ZEND_ARG_INFO ( 0 , subject )
ZEND_ARG_INFO ( 1 , replace_count )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_str_ireplace , 0 , 0 , 3 )
ZEND_ARG_INFO ( 0 , search )
ZEND_ARG_INFO ( 0 , replace )
ZEND_ARG_INFO ( 0 , subject )
ZEND_ARG_INFO ( 1 , replace_count )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_hebrev , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , max_chars_per_line )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_hebrevc , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , max_chars_per_line )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_nl2br , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_strip_tags , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , allowable_tags )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_setlocale , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , category )
ZEND_ARG_INFO ( 0 , locale )
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_parse_str , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , encoded_string )
ZEND_ARG_INFO ( 1 , result )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_str_repeat , 0 )
ZEND_ARG_INFO ( 0 , input )
ZEND_ARG_INFO ( 0 , mult )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_count_chars , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , input )
ZEND_ARG_INFO ( 0 , mode )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_strnatcmp , 0 )
ZEND_ARG_INFO ( 0 , s1 )
ZEND_ARG_INFO ( 0 , s2 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_localeconv , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_strnatcasecmp , 0 )
ZEND_ARG_INFO ( 0 , s1 )
ZEND_ARG_INFO ( 0 , s2 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_substr_count , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , haystack )
ZEND_ARG_INFO ( 0 , needle )
ZEND_ARG_INFO ( 0 , offset )
ZEND_ARG_INFO ( 0 , length )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_str_pad , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , input )
ZEND_ARG_INFO ( 0 , pad_length )
ZEND_ARG_INFO ( 0 , pad_string )
ZEND_ARG_INFO ( 0 , pad_type )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_sscanf , 1 , 0 , 2 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , format )
ZEND_ARG_INFO ( 1 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_str_rot13 , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_str_shuffle , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_str_word_count , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , format )
ZEND_ARG_INFO ( 0 , charlist )
ZEND_END_ARG_INFO ( )
# ifdef HAVE_STRFMON
static
ZEND_BEGIN_ARG_INFO ( arginfo_money_format , 0 )
ZEND_ARG_INFO ( 0 , format )
ZEND_ARG_INFO ( 0 , value )
ZEND_END_ARG_INFO ( )
# endif
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_str_split , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , split_length )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_strpbrk , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , haystack )
ZEND_ARG_INFO ( 0 , char_list )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_substr_compare , 0 , 0 , 3 )
ZEND_ARG_INFO ( 0 , main_str )
ZEND_ARG_INFO ( 0 , str )
ZEND_ARG_INFO ( 0 , offset )
ZEND_ARG_INFO ( 0 , length )
ZEND_ARG_INFO ( 0 , case_sensitivity )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ syslog.c */
# ifdef HAVE_SYSLOG_H
static
ZEND_BEGIN_ARG_INFO ( arginfo_define_syslog_variables , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_openlog , 0 )
ZEND_ARG_INFO ( 0 , ident )
ZEND_ARG_INFO ( 0 , option )
ZEND_ARG_INFO ( 0 , facility )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_closelog , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_syslog , 0 )
ZEND_ARG_INFO ( 0 , priority )
ZEND_ARG_INFO ( 0 , message )
ZEND_END_ARG_INFO ( )
# endif
/* }}} */
/* {{{ type.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_gettype , 0 )
ZEND_ARG_INFO ( 0 , var )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_settype , 0 )
ZEND_ARG_INFO ( 1 , var )
ZEND_ARG_INFO ( 0 , type )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_intval , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , var )
ZEND_ARG_INFO ( 0 , base )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_floatval , 0 )
ZEND_ARG_INFO ( 0 , var )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_strval , 0 )
ZEND_ARG_INFO ( 0 , var )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_null , 0 )
ZEND_ARG_INFO ( 0 , var )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_resource , 0 )
ZEND_ARG_INFO ( 0 , var )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_bool , 0 )
ZEND_ARG_INFO ( 0 , var )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_long , 0 )
ZEND_ARG_INFO ( 0 , var )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_float , 0 )
ZEND_ARG_INFO ( 0 , var )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_binary , 0 )
ZEND_ARG_INFO ( 0 , var )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_string , 0 )
ZEND_ARG_INFO ( 0 , var )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_unicode , 0 )
ZEND_ARG_INFO ( 0 , var )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_buffer , 0 )
ZEND_ARG_INFO ( 0 , var )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_array , 0 )
ZEND_ARG_INFO ( 0 , var )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_object , 0 )
ZEND_ARG_INFO ( 0 , var )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_numeric , 0 )
ZEND_ARG_INFO ( 0 , value )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_is_scalar , 0 )
ZEND_ARG_INFO ( 0 , value )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_is_callable , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , var )
ZEND_ARG_INFO ( 0 , syntax_only )
ZEND_ARG_INFO ( 1 , callable_name )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ uniqid.c */
# ifdef HAVE_GETTIMEOFDAY
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_uniqid , 0 , 0 , 0 )
ZEND_ARG_INFO ( 0 , prefix )
ZEND_ARG_INFO ( 0 , more_entropy )
ZEND_END_ARG_INFO ( )
# endif
/* }}} */ /* {{{ url.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_parse_url , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , url )
ZEND_ARG_INFO ( 0 , component )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_urlencode , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_urldecode , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_rawurlencode , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_rawurldecode , 0 )
ZEND_ARG_INFO ( 0 , str )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_get_headers , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , url )
ZEND_ARG_INFO ( 0 , format )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ user_filters.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_bucket_make_writeable , 0 )
ZEND_ARG_INFO ( 0 , brigade )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_bucket_prepend , 0 )
ZEND_ARG_INFO ( 0 , brigade )
ZEND_ARG_INFO ( 0 , bucket )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_bucket_append , 0 )
ZEND_ARG_INFO ( 0 , brigade )
ZEND_ARG_INFO ( 0 , bucket )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_bucket_new , 0 )
ZEND_ARG_INFO ( 0 , stream )
ZEND_ARG_INFO ( 0 , buffer )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_get_filters , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_stream_filter_register , 0 )
ZEND_ARG_INFO ( 0 , filtername )
ZEND_ARG_INFO ( 0 , classname )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ uuencode.c */
static
ZEND_BEGIN_ARG_INFO ( arginfo_convert_uuencode , 0 )
ZEND_ARG_INFO ( 0 , data )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_convert_uudecode , 0 )
ZEND_ARG_INFO ( 0 , data )
ZEND_END_ARG_INFO ( )
/* }}} */
/* {{{ var.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_var_dump , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , var )
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_var_inspect , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , var )
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_debug_zval_dump , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , var )
ZEND_ARG_INFO ( 0 , . . . )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_var_export , 0 , 0 , 1 )
ZEND_ARG_INFO ( 0 , var )
ZEND_ARG_INFO ( 0 , return )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_serialize , 0 )
ZEND_ARG_INFO ( 0 , var )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_unserialize , 0 )
ZEND_ARG_INFO ( 0 , variable_representation )
ZEND_END_ARG_INFO ( )
# if MEMORY_LIMIT
static
ZEND_BEGIN_ARG_INFO ( arginfo_memory_get_usage , 0 )
ZEND_END_ARG_INFO ( )
static
ZEND_BEGIN_ARG_INFO ( arginfo_memory_get_peak_usage , 0 )
ZEND_END_ARG_INFO ( )
# endif
/* }}} */
/* {{{ versioning.c */
static
ZEND_BEGIN_ARG_INFO_EX ( arginfo_version_compare , 0 , 0 , 2 )
ZEND_ARG_INFO ( 0 , ver1 )
ZEND_ARG_INFO ( 0 , ver2 )
ZEND_ARG_INFO ( 0 , oper )
ZEND_END_ARG_INFO ( )
/* }}} */
/* }}} */
2001-08-30 07:53:22 +08:00
2005-12-06 06:53:34 +08:00
zend_function_entry basic_functions [ ] = {
2006-06-26 03:17:20 +08:00
PHP_FE ( constant , arginfo_constant )
PHP_FE ( bin2hex , arginfo_bin2hex )
PHP_FE ( sleep , arginfo_sleep )
PHP_FE ( usleep , arginfo_usleep )
2003-11-13 07:43:46 +08:00
# if HAVE_NANOSLEEP
2006-06-26 03:17:20 +08:00
PHP_FE ( time_nanosleep , arginfo_time_nanosleep )
PHP_FE ( time_sleep_until , arginfo_time_sleep_until )
2003-11-13 07:43:46 +08:00
# endif
2005-07-04 04:45:08 +08:00
2004-09-29 12:57:19 +08:00
# if HAVE_STRPTIME
2006-06-26 03:17:20 +08:00
PHP_FE ( strptime , arginfo_strptime )
# endif
PHP_FE ( flush , arginfo_flush )
PHP_FE ( wordwrap , arginfo_wordwrap )
PHP_FE ( htmlspecialchars , arginfo_htmlspecialchars )
PHP_FE ( htmlentities , arginfo_htmlentities )
PHP_FE ( html_entity_decode , arginfo_html_entity_decode )
PHP_FE ( htmlspecialchars_decode , arginfo_htmlspecialchars_decode )
PHP_FE ( get_html_translation_table , arginfo_get_html_translation_table )
PHP_FE ( sha1 , arginfo_sha1 )
PHP_FE ( sha1_file , arginfo_sha1_file )
PHP_NAMED_FE ( md5 , php_if_md5 , arginfo_md5 )
PHP_NAMED_FE ( md5_file , php_if_md5_file , arginfo_md5_file )
PHP_NAMED_FE ( crc32 , php_if_crc32 , arginfo_crc32 )
PHP_FE ( iptcparse , arginfo_iptcparse )
PHP_FE ( iptcembed , arginfo_iptcembed )
PHP_FE ( getimagesize , arginfo_getimagesize )
PHP_FE ( image_type_to_mime_type , arginfo_image_type_to_mime_type )
2006-06-26 04:52:34 +08:00
PHP_FE ( image_type_to_extension , arginfo_image_type_to_extension )
2006-06-26 03:17:20 +08:00
PHP_FE ( phpinfo , arginfo_phpinfo )
PHP_FE ( phpversion , arginfo_phpversion )
PHP_FE ( phpcredits , arginfo_phpcredits )
PHP_FE ( php_logo_guid , arginfo_php_logo_guid )
PHP_FE ( php_real_logo_guid , arginfo_php_real_logo_guid )
PHP_FE ( php_egg_logo_guid , arginfo_php_egg_logo_guid )
PHP_FE ( zend_logo_guid , arginfo_zend_logo_guid )
PHP_FE ( php_sapi_name , arginfo_php_sapi_name )
PHP_FE ( php_uname , arginfo_php_uname )
PHP_FE ( php_ini_scanned_files , arginfo_php_ini_scanned_files )
PHP_FE ( strnatcmp , arginfo_strnatcmp )
PHP_FE ( strnatcasecmp , arginfo_strnatcasecmp )
PHP_FE ( substr_count , arginfo_substr_count )
PHP_FE ( strspn , arginfo_strspn )
PHP_FE ( strcspn , arginfo_strcspn )
PHP_FE ( strtok , arginfo_strtok )
PHP_FE ( strtoupper , arginfo_strtoupper )
PHP_FE ( strtolower , arginfo_strtolower )
PHP_FE ( strtotitle , arginfo_strtotitle )
PHP_FE ( strpos , arginfo_strpos )
PHP_FE ( stripos , arginfo_stripos )
PHP_FE ( strrpos , arginfo_strrpos )
PHP_FE ( strripos , arginfo_strripos )
PHP_FE ( strrev , arginfo_strrev )
PHP_FE ( hebrev , arginfo_hebrev )
PHP_FE ( hebrevc , arginfo_hebrevc )
PHP_FE ( nl2br , arginfo_nl2br )
PHP_FE ( basename , arginfo_basename )
PHP_FE ( dirname , arginfo_dirname )
PHP_FE ( pathinfo , arginfo_pathinfo )
PHP_FE ( stripslashes , arginfo_stripslashes )
PHP_FE ( stripcslashes , arginfo_stripcslashes )
PHP_FE ( strstr , arginfo_strstr )
PHP_FE ( stristr , arginfo_stristr )
PHP_FE ( strrchr , arginfo_strrchr )
PHP_FE ( str_shuffle , arginfo_str_shuffle )
PHP_FE ( str_word_count , arginfo_str_word_count )
PHP_FE ( str_split , arginfo_str_split )
PHP_FE ( strpbrk , arginfo_strpbrk )
PHP_FE ( substr_compare , arginfo_substr_compare )
2001-08-30 00:00:30 +08:00
2001-01-17 09:10:50 +08:00
# ifdef HAVE_STRCOLL
2006-06-26 03:17:20 +08:00
PHP_FE ( strcoll , arginfo_strcoll )
2001-01-17 09:10:50 +08:00
# endif
2001-08-30 00:00:30 +08:00
2002-08-02 18:08:53 +08:00
# ifdef HAVE_STRFMON
2006-06-26 03:17:20 +08:00
PHP_FE ( money_format , arginfo_money_format )
# endif
PHP_FE ( substr , arginfo_substr )
PHP_FE ( substr_replace , arginfo_substr_replace )
PHP_FE ( quotemeta , arginfo_quotemeta )
PHP_FE ( ucfirst , arginfo_ucfirst )
PHP_FE ( ucwords , arginfo_ucwords )
PHP_FE ( strtr , arginfo_strtr )
PHP_FE ( addslashes , arginfo_addslashes )
PHP_FE ( addcslashes , arginfo_addcslashes )
PHP_FE ( rtrim , arginfo_rtrim )
PHP_FE ( str_replace , arginfo_str_replace )
PHP_FE ( str_ireplace , arginfo_str_ireplace )
PHP_FE ( str_repeat , arginfo_str_repeat )
PHP_FE ( count_chars , arginfo_count_chars )
PHP_FE ( chunk_split , arginfo_chunk_split )
PHP_FE ( trim , arginfo_trim )
PHP_FE ( ltrim , arginfo_ltrim )
PHP_FE ( strip_tags , arginfo_strip_tags )
PHP_FE ( similar_text , arginfo_similar_text )
PHP_FE ( explode , arginfo_explode )
PHP_FE ( implode , arginfo_implode )
PHP_FE ( setlocale , arginfo_setlocale )
PHP_FE ( localeconv , arginfo_localeconv )
2001-08-30 00:00:30 +08:00
2001-07-04 18:10:30 +08:00
# if HAVE_NL_LANGINFO
2006-06-26 03:17:20 +08:00
PHP_FE ( nl_langinfo , arginfo_nl_langinfo )
# endif
PHP_FE ( soundex , arginfo_soundex )
PHP_FE ( levenshtein , arginfo_levenshtein )
PHP_FE ( chr , arginfo_chr )
PHP_FE ( ord , arginfo_ord )
PHP_FE ( parse_str , arginfo_parse_str )
PHP_FE ( str_pad , arginfo_str_pad )
PHP_FALIAS ( chop , rtrim , arginfo_rtrim )
PHP_FALIAS ( strchr , strstr , arginfo_strstr )
PHP_NAMED_FE ( sprintf , PHP_FN ( user_sprintf ) , arginfo_sprintf )
PHP_NAMED_FE ( printf , PHP_FN ( user_printf ) , arginfo_printf )
PHP_FE ( vprintf , arginfo_vprintf )
PHP_FE ( vsprintf , arginfo_vsprintf )
PHP_FE ( fprintf , arginfo_fprintf )
PHP_FE ( vfprintf , arginfo_vfprintf )
PHP_FE ( sscanf , arginfo_sscanf )
PHP_FE ( fscanf , arginfo_fscanf )
PHP_FE ( parse_url , arginfo_parse_url )
PHP_FE ( urlencode , arginfo_urlencode )
PHP_FE ( urldecode , arginfo_urldecode )
PHP_FE ( rawurlencode , arginfo_rawurlencode )
PHP_FE ( rawurldecode , arginfo_rawurldecode )
PHP_FE ( http_build_query , arginfo_http_build_query )
1999-07-28 21:59:35 +08:00
2000-06-14 02:07:19 +08:00
# ifdef HAVE_SYMLINK
2006-06-26 03:17:20 +08:00
PHP_FE ( readlink , arginfo_readlink )
PHP_FE ( linkinfo , arginfo_linkinfo )
PHP_FE ( symlink , arginfo_symlink )
PHP_FE ( link , arginfo_link )
# endif
PHP_FE ( unlink , arginfo_unlink )
PHP_FE ( exec , arginfo_exec )
PHP_FE ( system , arginfo_system )
PHP_FE ( escapeshellcmd , arginfo_escapeshellcmd )
PHP_FE ( escapeshellarg , arginfo_escapeshellarg )
PHP_FE ( passthru , arginfo_passthru )
PHP_FE ( shell_exec , arginfo_shell_exec )
2003-01-16 00:29:00 +08:00
# ifdef PHP_CAN_SUPPORT_PROC_OPEN
2006-06-26 03:17:20 +08:00
PHP_FE ( proc_open , arginfo_proc_open )
PHP_FE ( proc_close , arginfo_proc_close )
PHP_FE ( proc_terminate , arginfo_proc_terminate )
PHP_FE ( proc_get_status , arginfo_proc_get_status )
2003-01-16 00:29:00 +08:00
# endif
2001-08-30 00:00:30 +08:00
2003-02-18 09:07:57 +08:00
# ifdef HAVE_NICE
2006-06-26 03:17:20 +08:00
PHP_FE ( proc_nice , arginfo_proc_nice )
2003-02-18 09:07:57 +08:00
# endif
2006-06-26 03:17:20 +08:00
PHP_FE ( rand , arginfo_rand )
PHP_FE ( srand , arginfo_srand )
PHP_FE ( getrandmax , arginfo_getrandmax )
PHP_FE ( mt_rand , arginfo_mt_rand )
PHP_FE ( mt_srand , arginfo_mt_srand )
PHP_FE ( mt_getrandmax , arginfo_mt_getrandmax )
2001-05-20 06:21:40 +08:00
# if HAVE_GETSERVBYNAME
2006-06-26 03:17:20 +08:00
PHP_FE ( getservbyname , arginfo_getservbyname )
2001-05-20 06:21:40 +08:00
# endif
2001-08-30 00:00:30 +08:00
2001-01-22 01:29:15 +08:00
# if HAVE_GETSERVBYPORT
2006-06-26 03:17:20 +08:00
PHP_FE ( getservbyport , arginfo_getservbyport )
2001-01-22 01:29:15 +08:00
# endif
2001-08-30 00:00:30 +08:00
2001-01-22 01:29:15 +08:00
# if HAVE_GETPROTOBYNAME
2006-06-26 03:17:20 +08:00
PHP_FE ( getprotobyname , arginfo_getprotobyname )
2001-01-22 01:29:15 +08:00
# endif
2001-08-30 00:00:30 +08:00
2001-01-22 01:29:15 +08:00
# if HAVE_GETPROTOBYNUMBER
2006-06-26 03:17:20 +08:00
PHP_FE ( getprotobynumber , arginfo_getprotobynumber )
# endif
PHP_FE ( getmyuid , arginfo_getmyuid )
PHP_FE ( getmygid , arginfo_getmygid )
PHP_FE ( getmypid , arginfo_getmypid )
PHP_FE ( getmyinode , arginfo_getmyinode )
PHP_FE ( getlastmod , arginfo_getlastmod )
PHP_FE ( base64_decode , arginfo_base64_decode )
PHP_FE ( base64_encode , arginfo_base64_encode )
PHP_FE ( convert_uuencode , arginfo_convert_uuencode )
PHP_FE ( convert_uudecode , arginfo_convert_uudecode )
PHP_FE ( abs , arginfo_abs )
PHP_FE ( ceil , arginfo_ceil )
PHP_FE ( floor , arginfo_floor )
PHP_FE ( round , arginfo_round )
PHP_FE ( sin , arginfo_sin )
PHP_FE ( cos , arginfo_cos )
PHP_FE ( tan , arginfo_tan )
PHP_FE ( asin , arginfo_asin )
PHP_FE ( acos , arginfo_acos )
PHP_FE ( atan , arginfo_atan )
PHP_FE ( atan2 , arginfo_atan2 )
PHP_FE ( sinh , arginfo_sinh )
PHP_FE ( cosh , arginfo_cosh )
PHP_FE ( tanh , arginfo_tanh )
2001-08-30 00:00:30 +08:00
2002-11-08 23:49:32 +08:00
# ifdef HAVE_ASINH
2006-06-26 03:17:20 +08:00
PHP_FE ( asinh , arginfo_asinh )
2002-11-08 23:49:32 +08:00
# endif
# ifdef HAVE_ACOSH
2006-06-26 03:17:20 +08:00
PHP_FE ( acosh , arginfo_acosh )
2002-11-08 23:49:32 +08:00
# endif
# ifdef HAVE_ATANH
2006-06-26 03:17:20 +08:00
PHP_FE ( atanh , arginfo_atanh )
2002-11-08 23:49:32 +08:00
# endif
# if !defined(PHP_WIN32) && !defined(NETWARE)
2006-06-26 03:17:20 +08:00
PHP_FE ( expm1 , arginfo_expm1 )
2006-01-13 21:04:01 +08:00
# ifdef HAVE_LOG1P
2006-06-26 03:17:20 +08:00
PHP_FE ( log1p , arginfo_log1p )
2006-01-13 21:04:01 +08:00
# endif
2001-08-02 00:55:24 +08:00
# endif
2001-08-30 00:00:30 +08:00
2006-06-26 03:17:20 +08:00
PHP_FE ( pi , arginfo_pi )
PHP_FE ( is_finite , arginfo_is_finite )
PHP_FE ( is_nan , arginfo_is_nan )
PHP_FE ( is_infinite , arginfo_is_infinite )
PHP_FE ( pow , arginfo_pow )
PHP_FE ( exp , arginfo_exp )
PHP_FE ( log , arginfo_log )
PHP_FE ( log10 , arginfo_log10 )
PHP_FE ( sqrt , arginfo_sqrt )
PHP_FE ( hypot , arginfo_hypot )
PHP_FE ( deg2rad , arginfo_deg2rad )
PHP_FE ( rad2deg , arginfo_rad2deg )
PHP_FE ( bindec , arginfo_bindec )
PHP_FE ( hexdec , arginfo_hexdec )
PHP_FE ( octdec , arginfo_octdec )
PHP_FE ( decbin , arginfo_decbin )
PHP_FE ( decoct , arginfo_decoct )
PHP_FE ( dechex , arginfo_dechex )
PHP_FE ( base_convert , arginfo_base_convert )
PHP_FE ( number_format , arginfo_number_format )
PHP_FE ( fmod , arginfo_fmod )
2004-08-07 12:50:24 +08:00
# ifdef HAVE_INET_NTOP
2006-06-26 03:17:20 +08:00
PHP_NAMED_FE ( inet_ntop , php_inet_ntop , arginfo_inet_ntop )
2004-08-07 12:50:24 +08:00
# endif
# ifdef HAVE_INET_PTON
2006-06-26 03:17:20 +08:00
PHP_NAMED_FE ( inet_pton , php_inet_pton , arginfo_inet_pton )
2004-08-07 12:50:24 +08:00
# endif
2006-06-26 03:17:20 +08:00
PHP_FE ( ip2long , arginfo_ip2long )
PHP_FE ( long2ip , arginfo_long2ip )
2001-08-30 00:00:30 +08:00
2006-06-26 03:17:20 +08:00
PHP_FE ( getenv , arginfo_getenv )
2000-05-28 03:27:20 +08:00
# ifdef HAVE_PUTENV
2006-06-26 03:17:20 +08:00
PHP_FE ( putenv , arginfo_putenv )
2000-05-28 03:27:20 +08:00
# endif
1999-07-25 06:16:54 +08:00
2002-09-30 11:02:52 +08:00
# ifdef HAVE_GETOPT
2006-06-26 03:17:20 +08:00
PHP_FE ( getopt , arginfo_getopt )
2002-09-30 11:02:52 +08:00
# endif
2006-06-27 04:28:30 +08:00
# ifdef HAVE_GETLOADAVG
2006-06-27 06:19:04 +08:00
PHP_FE ( sys_getloadavg , arginfo_sys_getloadavg )
2006-06-27 04:28:30 +08:00
# endif
2002-10-30 07:35:49 +08:00
# ifdef HAVE_GETTIMEOFDAY
2006-06-26 03:17:20 +08:00
PHP_FE ( microtime , arginfo_microtime )
PHP_FE ( gettimeofday , arginfo_gettimeofday )
2002-10-30 07:35:49 +08:00
# endif
2001-08-30 00:00:30 +08:00
2000-05-28 03:27:20 +08:00
# ifdef HAVE_GETRUSAGE
2006-06-26 03:17:20 +08:00
PHP_FE ( getrusage , arginfo_getrusage )
2000-05-28 03:27:20 +08:00
# endif
2000-12-19 03:23:50 +08:00
2002-12-21 00:34:42 +08:00
# ifdef HAVE_GETTIMEOFDAY
2006-06-26 03:17:20 +08:00
PHP_FE ( uniqid , arginfo_uniqid )
# endif
PHP_FE ( quoted_printable_decode , arginfo_quoted_printable_decode )
PHP_FE ( convert_cyr_string , arginfo_convert_cyr_string )
PHP_FE ( get_current_user , arginfo_get_current_user )
PHP_FE ( set_time_limit , arginfo_set_time_limit )
PHP_FE ( get_cfg_var , arginfo_get_cfg_var )
PHP_DEP_FALIAS ( magic_quotes_runtime , set_magic_quotes_runtime , NULL )
PHP_DEP_FE ( set_magic_quotes_runtime , NULL )
PHP_DEP_FE ( get_magic_quotes_gpc , NULL )
PHP_DEP_FE ( get_magic_quotes_runtime , NULL )
2006-03-08 08:43:32 +08:00
2006-06-26 03:17:20 +08:00
PHP_FE ( import_request_variables , arginfo_import_request_variables )
PHP_FE ( error_log , arginfo_error_log )
PHP_FE ( call_user_func , arginfo_call_user_func )
PHP_FE ( call_user_func_array , arginfo_call_user_func_array )
2006-06-26 19:31:19 +08:00
PHP_DEP_FE ( call_user_method , arginfo_call_user_method )
PHP_DEP_FE ( call_user_method_array , arginfo_call_user_method_array )
2006-06-26 03:17:20 +08:00
PHP_FE ( serialize , arginfo_serialize )
PHP_FE ( unserialize , arginfo_unserialize )
PHP_FE ( var_dump , arginfo_var_dump )
PHP_FE ( var_inspect , arginfo_var_inspect )
PHP_FE ( var_export , arginfo_var_export )
PHP_FE ( debug_zval_dump , arginfo_debug_zval_dump )
PHP_FE ( print_r , arginfo_print_r )
2003-01-15 02:26:47 +08:00
# if MEMORY_LIMIT
2006-06-26 03:17:20 +08:00
PHP_FE ( memory_get_usage , arginfo_memory_get_usage )
PHP_FE ( memory_get_peak_usage , arginfo_memory_get_peak_usage )
# endif
PHP_FE ( register_shutdown_function , arginfo_register_shutdown_function )
PHP_FE ( register_tick_function , arginfo_register_tick_function )
PHP_FE ( unregister_tick_function , arginfo_unregister_tick_function )
PHP_FE ( highlight_file , arginfo_highlight_file )
PHP_FALIAS ( show_source , highlight_file , arginfo_highlight_file )
PHP_FE ( highlight_string , arginfo_highlight_string )
PHP_FE ( php_strip_whitespace , arginfo_php_strip_whitespace )
PHP_FE ( ini_get , arginfo_ini_get )
PHP_FE ( ini_get_all , arginfo_ini_get_all )
PHP_FE ( ini_set , arginfo_ini_set )
PHP_FALIAS ( ini_alter , ini_set , arginfo_ini_set )
PHP_FE ( ini_restore , arginfo_ini_restore )
PHP_FE ( get_include_path , arginfo_get_include_path )
PHP_FE ( set_include_path , arginfo_set_include_path )
PHP_FE ( restore_include_path , arginfo_restore_include_path )
PHP_FE ( setcookie , arginfo_setcookie )
PHP_FE ( setrawcookie , arginfo_setrawcookie )
PHP_FE ( header , arginfo_header )
PHP_FE ( headers_sent , arginfo_headers_sent )
PHP_FE ( headers_list , arginfo_headers_list )
PHP_FE ( connection_aborted , arginfo_connection_aborted )
PHP_FE ( connection_status , arginfo_connection_status )
PHP_FE ( ignore_user_abort , arginfo_ignore_user_abort )
PHP_FE ( parse_ini_file , arginfo_parse_ini_file )
PHP_FE ( is_uploaded_file , arginfo_is_uploaded_file )
PHP_FE ( move_uploaded_file , arginfo_move_uploaded_file )
2000-09-09 05:56:47 +08:00
2002-11-19 10:34:13 +08:00
/* functions from dns.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( gethostbyaddr , arginfo_gethostbyaddr )
PHP_FE ( gethostbyname , arginfo_gethostbyname )
PHP_FE ( gethostbynamel , arginfo_gethostbynamel )
2002-11-19 10:34:13 +08:00
# if HAVE_RES_SEARCH && !(defined(__BEOS__) || defined(PHP_WIN32) || defined(NETWARE))
2006-06-26 03:17:20 +08:00
PHP_FE ( dns_check_record , arginfo_dns_check_record )
PHP_FALIAS ( checkdnsrr , dns_check_record , arginfo_dns_check_record )
2003-02-24 08:09:18 +08:00
# if HAVE_DN_SKIPNAME && HAVE_DN_EXPAND
2006-06-26 03:17:20 +08:00
PHP_FE ( dns_get_mx , arginfo_dns_get_mx )
PHP_FALIAS ( getmxrr , dns_get_mx , arginfo_dns_get_mx )
2003-02-24 08:09:18 +08:00
# endif
2002-11-19 10:34:13 +08:00
# if HAVE_DNS_FUNCS
2006-06-26 03:17:20 +08:00
PHP_FE ( dns_get_record , arginfo_dns_get_record )
2002-11-19 10:34:13 +08:00
# endif
# endif
2002-01-10 07:47:46 +08:00
/* functions from type.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( intval , arginfo_intval )
PHP_FE ( floatval , arginfo_floatval )
PHP_FALIAS ( doubleval , floatval , arginfo_floatval )
PHP_FE ( strval , arginfo_strval )
PHP_FE ( gettype , arginfo_gettype )
PHP_FE ( settype , arginfo_settype )
PHP_FE ( is_null , arginfo_is_null )
PHP_FE ( is_resource , arginfo_is_resource )
PHP_FE ( is_bool , arginfo_is_bool )
PHP_FE ( is_long , arginfo_is_long )
PHP_FE ( is_float , arginfo_is_float )
PHP_FALIAS ( is_int , is_long , arginfo_is_long )
PHP_FALIAS ( is_integer , is_long , arginfo_is_long )
PHP_FALIAS ( is_double , is_float , arginfo_is_float )
PHP_FALIAS ( is_real , is_float , arginfo_is_float )
PHP_FE ( is_numeric , arginfo_is_numeric )
PHP_FE ( is_binary , arginfo_is_binary )
PHP_FE ( is_string , arginfo_is_string )
PHP_FE ( is_unicode , arginfo_is_unicode )
PHP_FE ( is_buffer , arginfo_is_buffer )
PHP_FE ( is_array , arginfo_is_array )
PHP_FE ( is_object , arginfo_is_object )
PHP_FE ( is_scalar , arginfo_is_scalar )
PHP_FE ( is_callable , arginfo_is_callable )
2002-01-10 07:47:46 +08:00
2000-03-07 04:37:11 +08:00
/* functions from reg.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( ereg , arginfo_ereg )
PHP_FE ( ereg_replace , arginfo_ereg_replace )
PHP_FE ( eregi , arginfo_eregi )
PHP_FE ( eregi_replace , arginfo_eregi_replace )
PHP_FE ( split , arginfo_split )
PHP_FE ( spliti , arginfo_spliti )
PHP_FALIAS ( join , implode , arginfo_implode )
PHP_FE ( sql_regcase , arginfo_sql_regcase )
2000-03-07 04:37:11 +08:00
/* functions from file.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( pclose , arginfo_pclose )
PHP_FE ( popen , arginfo_popen )
PHP_FE ( readfile , arginfo_readfile )
PHP_FE ( rewind , arginfo_rewind )
PHP_FE ( rmdir , arginfo_rmdir )
PHP_FE ( umask , arginfo_umask )
PHP_FE ( fclose , arginfo_fclose )
PHP_FE ( feof , arginfo_feof )
PHP_FE ( fgetc , arginfo_fgetc )
PHP_FE ( fgets , arginfo_fgets )
PHP_FE ( fgetss , arginfo_fgetss )
PHP_FE ( fread , arginfo_fread )
PHP_NAMED_FE ( fopen , php_if_fopen , arginfo_fopen )
PHP_FE ( fpassthru , arginfo_fpassthru )
PHP_NAMED_FE ( ftruncate , php_if_ftruncate , arginfo_ftruncate )
PHP_NAMED_FE ( fstat , php_if_fstat , arginfo_fstat )
PHP_FE ( fseek , arginfo_fseek )
PHP_FE ( ftell , arginfo_ftell )
PHP_FE ( fflush , arginfo_fflush )
PHP_FE ( fwrite , arginfo_fwrite )
PHP_FALIAS ( fputs , fwrite , arginfo_fwrite )
PHP_FE ( mkdir , arginfo_mkdir )
PHP_FE ( rename , arginfo_rename )
PHP_FE ( copy , arginfo_copy )
PHP_FE ( tempnam , arginfo_tempnam )
PHP_NAMED_FE ( tmpfile , php_if_tmpfile , arginfo_tmpfile )
PHP_FE ( file , arginfo_file )
PHP_FE ( file_get_contents , arginfo_file_get_contents )
PHP_FE ( file_put_contents , arginfo_file_put_contents )
PHP_FE ( stream_select , arginfo_stream_select )
PHP_FE ( stream_context_create , arginfo_stream_context_create )
PHP_FE ( stream_context_set_params , arginfo_stream_context_set_params )
PHP_FE ( stream_context_set_option , arginfo_stream_context_set_option )
PHP_FE ( stream_context_get_options , arginfo_stream_context_get_options )
PHP_FE ( stream_context_get_default , arginfo_stream_context_get_default )
PHP_FE ( stream_filter_prepend , arginfo_stream_filter_prepend )
PHP_FE ( stream_filter_append , arginfo_stream_filter_append )
PHP_FE ( stream_filter_remove , arginfo_stream_filter_remove )
PHP_FE ( stream_encoding , arginfo_stream_encoding )
PHP_FE ( stream_socket_client , arginfo_stream_socket_client )
PHP_FE ( stream_socket_server , arginfo_stream_socket_server )
PHP_FE ( stream_socket_accept , arginfo_stream_socket_accept )
PHP_FE ( stream_socket_get_name , arginfo_stream_socket_get_name )
PHP_FE ( stream_socket_recvfrom , arginfo_stream_socket_recvfrom )
PHP_FE ( stream_socket_sendto , arginfo_stream_socket_sendto )
PHP_FE ( stream_socket_enable_crypto , arginfo_stream_socket_enable_crypto )
2004-12-13 00:10:35 +08:00
# if HAVE_SOCKETPAIR
2006-06-26 03:17:20 +08:00
PHP_FE ( stream_socket_pair , arginfo_stream_socket_pair )
# endif
PHP_FE ( stream_copy_to_stream , arginfo_stream_copy_to_stream )
PHP_FE ( stream_get_contents , arginfo_stream_get_contents )
PHP_FE ( fgetcsv , arginfo_fgetcsv )
PHP_FE ( fputcsv , arginfo_fputcsv )
PHP_FE ( flock , arginfo_flock )
PHP_FE ( get_meta_tags , arginfo_get_meta_tags )
PHP_FE ( stream_set_write_buffer , arginfo_stream_set_write_buffer )
PHP_FALIAS ( set_file_buffer , stream_set_write_buffer , arginfo_stream_set_write_buffer )
2006-06-26 19:31:19 +08:00
PHP_DEP_FALIAS ( set_socket_blocking , stream_set_blocking , arginfo_stream_set_blocking )
2006-06-26 03:17:20 +08:00
PHP_FE ( stream_set_blocking , arginfo_stream_set_blocking )
PHP_FALIAS ( socket_set_blocking , stream_set_blocking , arginfo_stream_set_blocking )
PHP_FE ( stream_get_meta_data , arginfo_stream_get_meta_data )
PHP_FE ( stream_get_line , arginfo_stream_get_line )
PHP_FE ( stream_wrapper_register , arginfo_stream_wrapper_register )
PHP_FALIAS ( stream_register_wrapper , stream_wrapper_register , arginfo_stream_wrapper_register )
PHP_FE ( stream_wrapper_unregister , arginfo_stream_wrapper_unregister )
PHP_FE ( stream_wrapper_restore , arginfo_stream_wrapper_restore )
PHP_FE ( stream_get_wrappers , arginfo_stream_get_wrappers )
PHP_FE ( stream_get_transports , arginfo_stream_get_transports )
PHP_FE ( get_headers , arginfo_get_headers )
2001-08-30 00:00:30 +08:00
2002-07-10 23:23:47 +08:00
# if HAVE_SYS_TIME_H || defined(PHP_WIN32)
2006-06-26 03:17:20 +08:00
PHP_FE ( stream_set_timeout , arginfo_stream_set_timeout )
PHP_FALIAS ( socket_set_timeout , stream_set_timeout , arginfo_stream_set_timeout )
2000-05-28 03:27:20 +08:00
# endif
2001-08-30 00:00:30 +08:00
2006-06-26 03:17:20 +08:00
PHP_FALIAS ( socket_get_status , stream_get_meta_data , arginfo_stream_get_meta_data )
2001-08-30 00:00:30 +08:00
2003-09-30 17:52:11 +08:00
# if (!defined(__BEOS__) && !defined(NETWARE) && HAVE_REALPATH) || defined(ZTS)
2006-06-26 03:17:20 +08:00
PHP_FE ( realpath , arginfo_realpath )
2000-08-20 02:01:04 +08:00
# endif
2000-03-07 04:37:11 +08:00
2002-03-22 03:18:13 +08:00
# ifdef HAVE_FNMATCH
2006-06-26 03:17:20 +08:00
PHP_FE ( fnmatch , arginfo_fnmatch )
2002-03-22 03:18:13 +08:00
# endif
2000-03-07 04:37:11 +08:00
/* functions from fsock.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( fsockopen , arginfo_fsockopen )
PHP_FE ( pfsockopen , arginfo_pfsockopen )
2000-03-07 04:37:11 +08:00
/* functions from pack.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( pack , arginfo_pack )
PHP_FE ( unpack , arginfo_unpack )
2000-03-07 04:37:11 +08:00
/* functions from browscap.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( get_browser , arginfo_get_browser )
2000-03-07 04:37:11 +08:00
2000-05-28 03:27:20 +08:00
# if HAVE_CRYPT
2000-03-07 04:37:11 +08:00
/* functions from crypt.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( crypt , arginfo_crypt )
2000-05-28 03:27:20 +08:00
# endif
2000-03-07 04:37:11 +08:00
/* functions from dir.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( opendir , arginfo_opendir )
PHP_FE ( closedir , arginfo_closedir )
PHP_FE ( chdir , arginfo_chdir )
2001-08-30 00:00:30 +08:00
2001-09-12 10:07:46 +08:00
# if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC
2006-06-26 03:17:20 +08:00
PHP_FE ( chroot , arginfo_chroot )
2001-02-15 08:43:44 +08:00
# endif
2001-08-30 00:00:30 +08:00
2006-06-26 03:17:20 +08:00
PHP_FE ( getcwd , arginfo_getcwd )
PHP_FE ( rewinddir , arginfo_rewinddir )
PHP_NAMED_FE ( readdir , php_if_readdir , arginfo_readdir )
PHP_FALIAS ( dir , getdir , arginfo_dir )
PHP_FE ( scandir , arginfo_scandir )
2002-03-22 03:18:13 +08:00
# ifdef HAVE_GLOB
2006-06-26 03:17:20 +08:00
PHP_FE ( glob , arginfo_glob )
2002-03-22 03:18:13 +08:00
# endif
2000-03-07 04:37:11 +08:00
/* functions from filestat.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( fileatime , arginfo_fileatime )
PHP_FE ( filectime , arginfo_filectime )
PHP_FE ( filegroup , arginfo_filegroup )
PHP_FE ( fileinode , arginfo_fileinode )
PHP_FE ( filemtime , arginfo_filemtime )
PHP_FE ( fileowner , arginfo_fileowner )
PHP_FE ( fileperms , arginfo_fileperms )
PHP_FE ( filesize , arginfo_filesize )
PHP_FE ( filetype , arginfo_filetype )
PHP_FE ( file_exists , arginfo_file_exists )
PHP_FE ( is_writable , arginfo_is_writable )
PHP_FALIAS ( is_writeable , is_writable , arginfo_is_writable )
PHP_FE ( is_readable , arginfo_is_readable )
PHP_FE ( is_executable , arginfo_is_executable )
PHP_FE ( is_file , arginfo_is_file )
PHP_FE ( is_dir , arginfo_is_dir )
PHP_FE ( is_link , arginfo_is_link )
PHP_NAMED_FE ( stat , php_if_stat , arginfo_stat )
PHP_NAMED_FE ( lstat , php_if_lstat , arginfo_lstat )
2004-09-25 21:19:45 +08:00
# ifndef NETWARE
2006-06-26 03:17:20 +08:00
PHP_FE ( chown , arginfo_chown )
PHP_FE ( chgrp , arginfo_chgrp )
2006-01-04 20:22:23 +08:00
# endif
# if HAVE_LCHOWN
2006-06-26 03:17:20 +08:00
PHP_FE ( lchown , arginfo_lchown )
2006-01-04 20:22:23 +08:00
# endif
# if HAVE_LCHOWN
2006-06-26 03:17:20 +08:00
PHP_FE ( lchgrp , arginfo_lchgrp )
2004-09-25 21:19:45 +08:00
# endif
2006-06-26 03:17:20 +08:00
PHP_FE ( chmod , arginfo_chmod )
2002-04-27 07:46:51 +08:00
# if HAVE_UTIME
2006-06-26 03:17:20 +08:00
PHP_FE ( touch , arginfo_touch )
2002-04-27 07:46:51 +08:00
# endif
2006-06-26 03:17:20 +08:00
PHP_FE ( clearstatcache , arginfo_clearstatcache )
PHP_FE ( disk_total_space , arginfo_disk_total_space )
PHP_FE ( disk_free_space , arginfo_disk_free_space )
PHP_FALIAS ( diskfreespace , disk_free_space , arginfo_disk_free_space )
2000-03-07 04:37:11 +08:00
/* functions from mail.c */
2001-02-27 04:26:07 +08:00
# ifdef HAVE_SENDMAIL
2006-06-26 03:17:20 +08:00
PHP_FE ( mail , arginfo_mail )
PHP_FE ( ezmlm_hash , arginfo_ezmlm_hash )
2001-02-27 04:26:07 +08:00
# endif
2000-03-07 04:37:11 +08:00
/* functions from syslog.c */
2001-02-25 05:08:15 +08:00
# ifdef HAVE_SYSLOG_H
2006-06-26 03:17:20 +08:00
PHP_FE ( openlog , arginfo_openlog )
PHP_FE ( syslog , arginfo_syslog )
PHP_FE ( closelog , arginfo_closelog )
PHP_FE ( define_syslog_variables , arginfo_define_syslog_variables )
2001-02-25 05:08:15 +08:00
# endif
2000-03-07 04:37:11 +08:00
/* functions from lcg.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( lcg_value , arginfo_lcg_value )
2000-03-07 04:37:11 +08:00
/* functions from metaphone.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( metaphone , arginfo_metaphone )
2000-03-07 04:37:11 +08:00
/* functions from output.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( ob_start , arginfo_ob_start )
PHP_FE ( ob_flush , arginfo_ob_flush )
PHP_FE ( ob_clean , arginfo_ob_clean )
PHP_FE ( ob_end_flush , arginfo_ob_end_flush )
PHP_FE ( ob_end_clean , arginfo_ob_end_clean )
PHP_FE ( ob_get_flush , arginfo_ob_get_flush )
PHP_FE ( ob_get_clean , arginfo_ob_get_clean )
PHP_FE ( ob_get_length , arginfo_ob_get_length )
PHP_FE ( ob_get_level , arginfo_ob_get_level )
PHP_FE ( ob_get_status , arginfo_ob_get_status )
PHP_FE ( ob_get_contents , arginfo_ob_get_contents )
PHP_FE ( ob_implicit_flush , arginfo_ob_implicit_flush )
PHP_FE ( ob_list_handlers , arginfo_ob_list_handlers )
2000-03-07 04:37:11 +08:00
/* functions from array.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( ksort , arginfo_ksort )
PHP_FE ( krsort , arginfo_krsort )
PHP_FE ( natsort , arginfo_natsort )
PHP_FE ( natcasesort , arginfo_natcasesort )
PHP_FE ( asort , arginfo_asort )
PHP_FE ( arsort , arginfo_arsort )
PHP_FE ( sort , arginfo_sort )
PHP_FE ( rsort , arginfo_rsort )
PHP_FE ( usort , arginfo_usort )
PHP_FE ( uasort , arginfo_uasort )
PHP_FE ( uksort , arginfo_uksort )
PHP_FE ( shuffle , arginfo_shuffle )
PHP_FE ( array_walk , arginfo_array_walk )
PHP_FE ( array_walk_recursive , arginfo_array_walk_recursive )
PHP_FE ( count , arginfo_count )
PHP_FE ( end , arginfo_end )
PHP_FE ( prev , arginfo_prev )
PHP_FE ( next , arginfo_next )
PHP_FE ( reset , arginfo_reset )
PHP_FE ( current , arginfo_current )
PHP_FE ( key , arginfo_key )
PHP_FE ( min , arginfo_min )
PHP_FE ( max , arginfo_max )
PHP_FE ( in_array , arginfo_in_array )
PHP_FE ( array_search , arginfo_array_search )
PHP_FE ( extract , arginfo_extract )
PHP_FE ( compact , arginfo_compact )
PHP_FE ( array_fill , arginfo_array_fill )
2006-07-15 18:10:47 +08:00
PHP_FE ( array_fill_keys , arginfo_array_fill_keys )
2006-06-26 03:17:20 +08:00
PHP_FE ( range , arginfo_range )
PHP_FE ( array_multisort , arginfo_array_multisort )
PHP_FE ( array_push , arginfo_array_push )
PHP_FE ( array_pop , arginfo_array_pop )
PHP_FE ( array_shift , arginfo_array_shift )
PHP_FE ( array_unshift , arginfo_array_unshift )
PHP_FE ( array_splice , arginfo_array_splice )
PHP_FE ( array_slice , arginfo_array_slice )
PHP_FE ( array_merge , arginfo_array_merge )
PHP_FE ( array_merge_recursive , arginfo_array_merge_recursive )
PHP_FE ( array_keys , arginfo_array_keys )
PHP_FE ( array_values , arginfo_array_values )
PHP_FE ( array_count_values , arginfo_array_count_values )
PHP_FE ( array_reverse , arginfo_array_reverse )
PHP_FE ( array_reduce , arginfo_array_reduce )
PHP_FE ( array_pad , arginfo_array_pad )
PHP_FE ( array_flip , arginfo_array_flip )
PHP_FE ( array_change_key_case , arginfo_array_change_key_case )
PHP_FE ( array_rand , arginfo_array_rand )
PHP_FE ( array_unique , arginfo_array_unique )
PHP_FE ( array_intersect , arginfo_array_intersect )
PHP_FE ( array_intersect_key , arginfo_array_intersect_key )
PHP_FE ( array_intersect_ukey , arginfo_array_intersect_ukey )
PHP_FE ( array_uintersect , arginfo_array_uintersect )
PHP_FE ( array_intersect_assoc , arginfo_array_intersect_assoc )
PHP_FE ( array_uintersect_assoc , arginfo_array_uintersect_assoc )
PHP_FE ( array_intersect_uassoc , arginfo_array_intersect_uassoc )
PHP_FE ( array_uintersect_uassoc , arginfo_array_uintersect_uassoc )
PHP_FE ( array_diff , arginfo_array_diff )
PHP_FE ( array_diff_key , arginfo_array_diff_key )
PHP_FE ( array_diff_ukey , arginfo_array_diff_ukey )
PHP_FE ( array_udiff , arginfo_array_udiff )
PHP_FE ( array_diff_assoc , arginfo_array_diff_assoc )
PHP_FE ( array_udiff_assoc , arginfo_array_udiff_assoc )
PHP_FE ( array_diff_uassoc , arginfo_array_diff_uassoc )
PHP_FE ( array_udiff_uassoc , arginfo_array_udiff_uassoc )
PHP_FE ( array_sum , arginfo_array_sum )
PHP_FE ( array_product , arginfo_array_product )
PHP_FE ( array_filter , arginfo_array_filter )
PHP_FE ( array_map , arginfo_array_map )
PHP_FE ( array_chunk , arginfo_array_chunk )
PHP_FE ( array_combine , arginfo_array_combine )
PHP_FE ( array_key_exists , arginfo_array_key_exists )
2000-06-11 02:58:45 +08:00
2000-03-07 04:37:11 +08:00
/* aliases from array.c */
2006-06-26 03:17:20 +08:00
PHP_FALIAS ( pos , current , arginfo_current )
PHP_FALIAS ( sizeof , count , arginfo_count )
PHP_FALIAS ( key_exists , array_key_exists , arginfo_array_key_exists )
2000-12-19 03:23:50 +08:00
2000-03-07 04:37:11 +08:00
/* functions from assert.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( assert , arginfo_assert )
PHP_FE ( assert_options , arginfo_assert_options )
2000-03-07 04:37:11 +08:00
2001-10-06 07:56:19 +08:00
/* functions from versioning.c */
2006-06-26 03:17:20 +08:00
PHP_FE ( version_compare , arginfo_version_compare )
2001-10-06 07:56:19 +08:00
2001-11-15 17:53:40 +08:00
/* functions from ftok.c*/
2002-10-20 21:35:56 +08:00
# if HAVE_FTOK
2006-06-26 03:17:20 +08:00
PHP_FE ( ftok , arginfo_ftok )
2002-10-20 21:35:56 +08:00
# endif
2001-11-15 17:53:40 +08:00
2006-06-26 03:17:20 +08:00
PHP_FE ( str_rot13 , arginfo_str_rot13 )
PHP_FE ( stream_get_filters , arginfo_stream_get_filters )
PHP_FE ( stream_filter_register , arginfo_stream_filter_register )
PHP_FE ( stream_bucket_make_writeable , arginfo_stream_bucket_make_writeable )
PHP_FE ( stream_bucket_prepend , arginfo_stream_bucket_prepend )
PHP_FE ( stream_bucket_append , arginfo_stream_bucket_append )
PHP_FE ( stream_bucket_new , arginfo_stream_bucket_new )
2002-02-21 11:32:42 +08:00
2006-06-26 03:17:20 +08:00
PHP_FE ( output_add_rewrite_var , arginfo_output_add_rewrite_var )
PHP_FE ( output_reset_rewrite_vars , arginfo_output_reset_rewrite_vars )
2002-05-03 16:00:41 +08:00
2006-06-26 03:17:20 +08:00
PHP_FE ( sys_get_temp_dir , arginfo_sys_get_temp_dir )
2006-05-06 17:59:02 +08:00
1999-04-17 08:37:12 +08:00
{ NULL , NULL , NULL }
} ;
1999-12-18 04:55:31 +08:00
zend_module_entry basic_functions_module = {
2001-10-12 07:33:59 +08:00
STANDARD_MODULE_HEADER ,
2000-03-07 02:44:01 +08:00
" standard " , /* extension name */
1999-04-17 08:37:12 +08:00
basic_functions , /* function list */
1999-07-27 04:09:08 +08:00
PHP_MINIT ( basic ) , /* process startup */
PHP_MSHUTDOWN ( basic ) , /* process shutdown */
PHP_RINIT ( basic ) , /* request startup */
PHP_RSHUTDOWN ( basic ) , /* request shutdown */
2000-03-07 04:37:11 +08:00
PHP_MINFO ( basic ) , /* extension info */
2001-10-12 07:33:59 +08:00
PHP_VERSION , /* extension version */
2001-05-23 03:19:04 +08:00
STANDARD_MODULE_PROPERTIES
1999-04-17 08:37:12 +08:00
} ;
2001-08-30 00:00:30 +08:00
# if defined(HAVE_PUTENV)
2000-01-18 01:33:37 +08:00
static void php_putenv_destructor ( putenv_entry * pe )
1999-04-17 08:37:12 +08:00
{
if ( pe - > previous_value ) {
2004-04-22 22:26:03 +08:00
# if _MSC_VER >= 1300
/* VS.Net has a bug in putenv() when setting a variable that
* is already set ; if the SetEnvironmentVariable ( ) API call
* fails , the Crt will double free ( ) a string .
* We try to avoid this by setting our own value first */
SetEnvironmentVariable ( pe - > key , " bugbug " ) ;
# endif
1999-04-17 08:37:12 +08:00
putenv ( pe - > previous_value ) ;
} else {
# if HAVE_UNSETENV
unsetenv ( pe - > key ) ;
2003-07-24 16:02:08 +08:00
# elif defined(PHP_WIN32)
SetEnvironmentVariable ( pe - > key , NULL ) ;
1999-04-17 08:37:12 +08:00
# else
char * * env ;
2000-12-19 03:23:50 +08:00
1999-04-17 08:37:12 +08:00
for ( env = environ ; env ! = NULL & & * env ! = NULL ; env + + ) {
2001-08-30 00:00:30 +08:00
if ( ! strncmp ( * env , pe - > key , pe - > key_len ) & & ( * env ) [ pe - > key_len ] = = ' = ' ) { /* found it */
1999-04-17 08:37:12 +08:00
* env = " " ;
break ;
}
}
# endif
}
2003-10-15 08:18:53 +08:00
# ifdef HAVE_TZSET
/* don't forget to reset the various libc globals that
* we might have changed by an earlier call to tzset ( ) . */
if ( ! strncmp ( pe - > key , " TZ " , pe - > key_len ) ) {
tzset ( ) ;
}
# endif
1999-04-17 08:37:12 +08:00
efree ( pe - > putenv_string ) ;
efree ( pe - > key ) ;
}
# endif
2001-07-28 19:36:37 +08:00
static void basic_globals_ctor ( php_basic_globals * basic_globals_p TSRMLS_DC )
1999-12-14 02:31:29 +08:00
{
2004-01-20 03:01:17 +08:00
BG ( rand_is_seeded ) = 0 ;
BG ( mt_rand_is_seeded ) = 0 ;
2006-03-06 22:27:45 +08:00
BG ( umask ) = - 1 ;
2004-01-20 03:01:17 +08:00
1999-12-14 02:31:29 +08:00
BG ( next ) = NULL ;
BG ( left ) = - 1 ;
2000-09-02 23:54:18 +08:00
BG ( user_tick_functions ) = NULL ;
2003-01-01 02:39:36 +08:00
BG ( user_filter_map ) = NULL ;
2006-07-18 04:52:12 +08:00
BG ( user_compare_fci ) = empty_fcall_info ;
2003-08-05 18:29:03 +08:00
BG ( user_compare_fci_cache ) = empty_fcall_info_cache ;
2000-02-01 06:31:00 +08:00
zend_hash_init ( & BG ( sm_protected_env_vars ) , 5 , NULL , NULL , 1 ) ;
BG ( sm_allowed_env_vars ) = NULL ;
2000-09-20 01:37:34 +08:00
2001-08-26 09:09:20 +08:00
memset ( & BG ( url_adapt_state ) , 0 , sizeof ( BG ( url_adapt_state ) ) ) ;
memset ( & BG ( url_adapt_state_ex ) , 0 , sizeof ( BG ( url_adapt_state_ex ) ) ) ;
2005-11-21 02:06:09 +08:00
# if defined(_REENTRANT) && defined(HAVE_MBRLEN) && defined(HAVE_MBSTATE_T)
memset ( & BG ( mblen_state ) , 0 , sizeof ( BG ( mblen_state ) ) ) ;
# endif
2001-08-26 09:09:20 +08:00
2005-12-01 19:49:51 +08:00
BG ( incomplete_class ) = incomplete_class_entry ;
1999-12-14 02:31:29 +08:00
}
2001-08-30 00:00:30 +08:00
2001-07-28 19:36:37 +08:00
static void basic_globals_dtor ( php_basic_globals * basic_globals_p TSRMLS_DC )
2000-01-31 04:49:16 +08:00
{
2000-02-01 06:31:00 +08:00
zend_hash_destroy ( & BG ( sm_protected_env_vars ) ) ;
if ( BG ( sm_allowed_env_vars ) ) {
free ( BG ( sm_allowed_env_vars ) ) ;
}
2004-05-12 18:17:12 +08:00
if ( BG ( url_adapt_state_ex ) . tags ) {
zend_hash_destroy ( BG ( url_adapt_state_ex ) . tags ) ;
free ( BG ( url_adapt_state_ex ) . tags ) ;
}
2000-01-31 04:49:16 +08:00
}
2004-03-26 06:36:36 +08:00
# define PHP_DOUBLE_INFINITY_HIGH 0x7ff00000
# define PHP_DOUBLE_QUIET_NAN_HIGH 0xfff80000
2004-05-10 15:23:38 +08:00
PHPAPI double php_get_nan ( void )
2004-03-26 06:36:36 +08:00
{
2004-03-30 02:51:47 +08:00
# if HAVE_HUGE_VAL_NAN
return HUGE_VAL + - HUGE_VAL ;
# elif defined(__i386__) || defined(_X86_) || defined(ALPHA) || defined(_ALPHA) || defined(__alpha)
2004-04-03 17:51:57 +08:00
double val = 0.0 ;
2004-03-26 06:36:36 +08:00
( ( php_uint32 * ) & val ) [ 1 ] = PHP_DOUBLE_QUIET_NAN_HIGH ;
( ( php_uint32 * ) & val ) [ 0 ] = 0 ;
return val ;
2004-03-30 02:51:47 +08:00
# elif HAVE_ATOF_ACCEPTS_NAN
2004-03-26 06:36:36 +08:00
return atof ( " NAN " ) ;
2004-03-29 05:46:43 +08:00
# else
return 0.0 / 0.0 ;
2004-03-26 06:36:36 +08:00
# endif
}
2004-05-10 15:23:38 +08:00
PHPAPI double php_get_inf ( void )
2004-03-26 06:36:36 +08:00
{
2004-05-10 15:23:38 +08:00
# if HAVE_HUGE_VAL_INF
2004-03-30 02:51:47 +08:00
return HUGE_VAL ;
# elif defined(__i386__) || defined(_X86_) || defined(ALPHA) || defined(_ALPHA) || defined(__alpha)
2004-04-03 17:51:57 +08:00
double val = 0.0 ;
2004-03-27 03:53:07 +08:00
( ( php_uint32 * ) & val ) [ 1 ] = PHP_DOUBLE_INFINITY_HIGH ;
2004-03-26 06:36:36 +08:00
( ( php_uint32 * ) & val ) [ 0 ] = 0 ;
return val ;
2004-03-30 02:51:47 +08:00
# elif HAVE_ATOF_ACCEPTS_INF
2004-03-26 06:36:36 +08:00
return atof ( " INF " ) ;
2004-03-29 05:46:43 +08:00
# else
return 1.0 / 0.0 ;
2004-03-26 06:36:36 +08:00
# endif
}
1999-07-27 04:09:08 +08:00
PHP_MINIT_FUNCTION ( basic )
1999-04-17 08:37:12 +08:00
{
1999-11-28 08:31:02 +08:00
# ifdef ZTS
2001-07-27 18:16:41 +08:00
ts_allocate_id ( & basic_globals_id , sizeof ( php_basic_globals ) , ( ts_allocate_ctor ) basic_globals_ctor , ( ts_allocate_dtor ) basic_globals_dtor ) ;
2004-07-29 10:59:44 +08:00
# ifdef PHP_WIN32
ts_allocate_id ( & php_win32_core_globals_id , sizeof ( php_win32_core_globals ) , ( ts_allocate_ctor ) php_win32_core_globals_ctor , NULL ) ;
# endif
1999-12-14 02:31:29 +08:00
# else
2001-07-28 19:36:37 +08:00
basic_globals_ctor ( & basic_globals TSRMLS_CC ) ;
2004-07-29 10:59:44 +08:00
# ifdef PHP_WIN32
2004-08-01 01:28:27 +08:00
php_win32_core_globals_ctor ( & the_php_win32_core_globals TSRMLS_CC ) ;
2004-07-29 10:59:44 +08:00
# endif
1999-11-28 08:31:02 +08:00
# endif
2000-12-19 03:23:50 +08:00
2005-12-01 19:49:51 +08:00
BG ( incomplete_class ) = incomplete_class_entry = php_create_incomplete_class ( TSRMLS_C ) ;
2001-05-23 11:37:53 +08:00
REGISTER_LONG_CONSTANT ( " CONNECTION_ABORTED " , PHP_CONNECTION_ABORTED , CONST_CS | CONST_PERSISTENT ) ;
REGISTER_LONG_CONSTANT ( " CONNECTION_NORMAL " , PHP_CONNECTION_NORMAL , CONST_CS | CONST_PERSISTENT ) ;
REGISTER_LONG_CONSTANT ( " CONNECTION_TIMEOUT " , PHP_CONNECTION_TIMEOUT , CONST_CS | CONST_PERSISTENT ) ;
2001-08-30 00:00:30 +08:00
2001-08-31 01:47:04 +08:00
REGISTER_LONG_CONSTANT ( " INI_USER " , ZEND_INI_USER , CONST_CS | CONST_PERSISTENT ) ;
REGISTER_LONG_CONSTANT ( " INI_PERDIR " , ZEND_INI_PERDIR , CONST_CS | CONST_PERSISTENT ) ;
REGISTER_LONG_CONSTANT ( " INI_SYSTEM " , ZEND_INI_SYSTEM , CONST_CS | CONST_PERSISTENT ) ;
REGISTER_LONG_CONSTANT ( " INI_ALL " , ZEND_INI_ALL , CONST_CS | CONST_PERSISTENT ) ;
2003-11-30 05:46:50 +08:00
2005-08-09 22:40:59 +08:00
REGISTER_LONG_CONSTANT ( " PHP_URL_SCHEME " , PHP_URL_SCHEME , CONST_CS | CONST_PERSISTENT ) ;
REGISTER_LONG_CONSTANT ( " PHP_URL_HOST " , PHP_URL_HOST , CONST_CS | CONST_PERSISTENT ) ;
REGISTER_LONG_CONSTANT ( " PHP_URL_PORT " , PHP_URL_PORT , CONST_CS | CONST_PERSISTENT ) ;
REGISTER_LONG_CONSTANT ( " PHP_URL_USER " , PHP_URL_USER , CONST_CS | CONST_PERSISTENT ) ;
REGISTER_LONG_CONSTANT ( " PHP_URL_PASS " , PHP_URL_PASS , CONST_CS | CONST_PERSISTENT ) ;
REGISTER_LONG_CONSTANT ( " PHP_URL_PATH " , PHP_URL_PATH , CONST_CS | CONST_PERSISTENT ) ;
REGISTER_LONG_CONSTANT ( " PHP_URL_QUERY " , PHP_URL_QUERY , CONST_CS | CONST_PERSISTENT ) ;
REGISTER_LONG_CONSTANT ( " PHP_URL_FRAGMENT " , PHP_URL_FRAGMENT , CONST_CS | CONST_PERSISTENT ) ;
2000-04-09 07:53:19 +08:00
# define REGISTER_MATH_CONSTANT(x) REGISTER_DOUBLE_CONSTANT(#x, x, CONST_CS | CONST_PERSISTENT)
REGISTER_MATH_CONSTANT ( M_E ) ;
REGISTER_MATH_CONSTANT ( M_LOG2E ) ;
REGISTER_MATH_CONSTANT ( M_LOG10E ) ;
REGISTER_MATH_CONSTANT ( M_LN2 ) ;
REGISTER_MATH_CONSTANT ( M_LN10 ) ;
REGISTER_MATH_CONSTANT ( M_PI ) ;
REGISTER_MATH_CONSTANT ( M_PI_2 ) ;
REGISTER_MATH_CONSTANT ( M_PI_4 ) ;
REGISTER_MATH_CONSTANT ( M_1_PI ) ;
REGISTER_MATH_CONSTANT ( M_2_PI ) ;
REGISTER_MATH_CONSTANT ( M_2_SQRTPI ) ;
REGISTER_MATH_CONSTANT ( M_SQRT2 ) ;
REGISTER_MATH_CONSTANT ( M_SQRT1_2 ) ;
2004-03-26 06:36:36 +08:00
REGISTER_DOUBLE_CONSTANT ( " INF " , php_get_inf ( ) , CONST_CS | CONST_PERSISTENT ) ;
REGISTER_DOUBLE_CONSTANT ( " NAN " , php_get_nan ( ) , CONST_CS | CONST_PERSISTENT ) ;
2000-04-09 07:53:19 +08:00
2001-08-30 07:53:22 +08:00
# if ENABLE_TEST_CLASS
1999-04-17 08:37:12 +08:00
test_class_startup ( ) ;
2001-08-30 07:53:22 +08:00
# endif
1999-07-15 00:02:10 +08:00
register_phpinfo_constants ( INIT_FUNC_ARGS_PASSTHRU ) ;
1999-11-21 21:25:04 +08:00
register_html_constants ( INIT_FUNC_ARGS_PASSTHRU ) ;
2000-07-09 04:38:23 +08:00
register_string_constants ( INIT_FUNC_ARGS_PASSTHRU ) ;
2000-03-07 04:37:11 +08:00
2003-01-07 19:37:09 +08:00
PHP_MINIT ( regex ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
PHP_MINIT ( file ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
PHP_MINIT ( pack ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
PHP_MINIT ( browscap ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
PHP_MINIT ( standard_filters ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
PHP_MINIT ( user_filters ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
2001-08-30 00:00:30 +08:00
2001-01-18 04:37:49 +08:00
# if defined(HAVE_LOCALECONV) && defined(ZTS)
2003-01-07 19:37:09 +08:00
PHP_MINIT ( localeconv ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
2001-01-15 00:36:30 +08:00
# endif
2001-08-30 00:00:30 +08:00
2001-07-04 18:10:30 +08:00
# if defined(HAVE_NL_LANGINFO)
2003-01-07 19:37:09 +08:00
PHP_MINIT ( nl_langinfo ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
2001-07-04 18:10:30 +08:00
# endif
2001-08-30 00:00:30 +08:00
2000-03-07 20:28:06 +08:00
# if HAVE_CRYPT
2003-01-07 19:37:09 +08:00
PHP_MINIT ( crypt ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
2000-03-07 20:28:06 +08:00
# endif
2003-01-07 19:37:09 +08:00
PHP_MINIT ( lcg ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
2001-05-07 01:55:10 +08:00
2003-01-07 19:37:09 +08:00
PHP_MINIT ( dir ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
2003-01-06 13:59:17 +08:00
# ifdef HAVE_SYSLOG_H
2003-01-07 19:37:09 +08:00
PHP_MINIT ( syslog ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
2003-01-06 13:59:17 +08:00
# endif
2003-01-07 19:37:09 +08:00
PHP_MINIT ( array ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
PHP_MINIT ( assert ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
PHP_MINIT ( url_scanner_ex ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
2003-01-16 00:29:00 +08:00
# ifdef PHP_CAN_SUPPORT_PROC_OPEN
2003-01-07 19:37:09 +08:00
PHP_MINIT ( proc_open ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
2003-01-16 00:29:00 +08:00
# endif
2000-03-07 04:37:11 +08:00
2003-01-07 19:37:09 +08:00
PHP_MINIT ( user_streams ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
PHP_MINIT ( imagetypes ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
2001-08-06 21:36:08 +08:00
2002-04-17 06:14:27 +08:00
php_register_url_stream_wrapper ( " php " , & php_stream_php_wrapper TSRMLS_CC ) ;
2003-10-20 04:04:33 +08:00
php_register_url_stream_wrapper ( " file " , & php_plain_files_wrapper TSRMLS_CC ) ;
2006-05-14 01:53:01 +08:00
php_register_url_stream_wrapper ( " data " , & php_stream_rfc2397_wrapper TSRMLS_CC ) ;
2002-08-12 23:56:13 +08:00
# ifndef PHP_CURL_URL_WRAPPERS
php_register_url_stream_wrapper ( " http " , & php_stream_http_wrapper TSRMLS_CC ) ;
2002-04-17 06:14:27 +08:00
php_register_url_stream_wrapper ( " ftp " , & php_stream_ftp_wrapper TSRMLS_CC ) ;
2002-11-19 10:34:13 +08:00
# endif
# if HAVE_RES_SEARCH && !(defined(__BEOS__)||defined(PHP_WIN32) || defined(NETWARE))
# if HAVE_DNS_FUNCS
2003-01-07 19:37:09 +08:00
PHP_MINIT ( dns ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
2002-11-19 10:34:13 +08:00
# endif
2002-08-12 23:56:13 +08:00
# endif
2000-12-19 03:23:50 +08:00
1999-04-17 08:37:12 +08:00
return SUCCESS ;
}
1999-07-27 04:09:08 +08:00
PHP_MSHUTDOWN_FUNCTION ( basic )
1999-04-17 08:37:12 +08:00
{
2006-03-21 07:33:07 +08:00
# ifdef HAVE_SYSLOG_H
PHP_MSHUTDOWN ( syslog ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
# endif
1999-11-28 08:31:02 +08:00
# ifdef ZTS
ts_free_id ( basic_globals_id ) ;
2004-07-29 10:59:44 +08:00
# ifdef PHP_WIN32
ts_free_id ( php_win32_core_globals_id ) ;
# endif
2001-07-28 19:36:37 +08:00
# else
basic_globals_dtor ( & basic_globals TSRMLS_CC ) ;
1999-11-28 08:31:02 +08:00
# endif
2000-01-31 04:49:16 +08:00
2002-08-12 23:56:13 +08:00
php_unregister_url_stream_wrapper ( " php " TSRMLS_CC ) ;
# ifndef PHP_CURL_URL_WRAPPERS
2002-04-17 06:14:27 +08:00
php_unregister_url_stream_wrapper ( " http " TSRMLS_CC ) ;
php_unregister_url_stream_wrapper ( " ftp " TSRMLS_CC ) ;
2002-08-12 23:56:13 +08:00
# endif
2002-03-16 05:03:08 +08:00
1999-04-17 08:37:12 +08:00
UNREGISTER_INI_ENTRIES ( ) ;
2000-03-07 04:37:11 +08:00
2003-01-07 19:37:09 +08:00
PHP_MSHUTDOWN ( regex ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
PHP_MSHUTDOWN ( browscap ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
PHP_MSHUTDOWN ( array ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
PHP_MSHUTDOWN ( assert ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
PHP_MSHUTDOWN ( url_scanner_ex ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
PHP_MSHUTDOWN ( file ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
PHP_MSHUTDOWN ( standard_filters ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
2001-01-18 04:37:49 +08:00
# if defined(HAVE_LOCALECONV) && defined(ZTS)
2003-01-07 19:37:09 +08:00
PHP_MSHUTDOWN ( localeconv ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
2001-01-15 00:36:30 +08:00
# endif
2000-10-13 08:09:31 +08:00
2000-12-19 03:23:50 +08:00
return SUCCESS ;
1999-04-17 08:37:12 +08:00
}
1999-07-27 04:09:08 +08:00
PHP_RINIT_FUNCTION ( basic )
1999-04-17 08:37:12 +08:00
{
2001-08-03 16:49:19 +08:00
memset ( BG ( strtok_table ) , 0 , 256 ) ;
1999-11-28 08:31:02 +08:00
BG ( strtok_string ) = NULL ;
2001-08-03 17:50:38 +08:00
BG ( strtok_zval ) = NULL ;
1999-11-28 08:31:02 +08:00
BG ( locale_string ) = NULL ;
1999-12-02 01:21:52 +08:00
BG ( user_compare_func_name ) = NULL ;
BG ( array_walk_func_name ) = NULL ;
1999-12-13 00:14:40 +08:00
BG ( page_uid ) = - 1 ;
2001-07-10 01:36:04 +08:00
BG ( page_gid ) = - 1 ;
1999-12-13 00:14:40 +08:00
BG ( page_inode ) = - 1 ;
BG ( page_mtime ) = - 1 ;
* fixed some #if/#ifdef issues
* hand-patched in php3 changes from 3.0.6 to HEAD in these files:
fopen-wrappers.[ch] ext/standard/file.[ch] ext/standard/fsock.[ch]
ext/standard/php3_string.h ext/standard/string.c
* added some new file/socket macros for more readable code:
FP_FGETS(buf,len,sock,fp,issock)
FP_FREAD(buf,len,sock,fp,issock)
FP_FEOF(sock,fp,issock)
FP_FGETC(sock,fp,issock)
1999-06-17 01:06:53 +08:00
# ifdef HAVE_PUTENV
2000-01-18 01:33:37 +08:00
if ( zend_hash_init ( & BG ( putenv_ht ) , 1 , NULL , ( void ( * ) ( void * ) ) php_putenv_destructor , 0 ) = = FAILURE ) {
1999-04-17 08:37:12 +08:00
return FAILURE ;
}
# endif
2001-08-30 00:00:30 +08:00
BG ( user_shutdown_function_names ) = NULL ;
2000-03-07 04:37:11 +08:00
2003-01-07 19:37:09 +08:00
PHP_RINIT ( lcg ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
2001-05-07 01:55:10 +08:00
2003-01-07 19:37:09 +08:00
PHP_RINIT ( filestat ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
2003-01-06 13:59:17 +08:00
# ifdef HAVE_SYSLOG_H
2003-01-07 19:37:09 +08:00
PHP_RINIT ( syslog ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
2003-01-06 13:59:17 +08:00
# endif
2003-01-07 19:37:09 +08:00
PHP_RINIT ( dir ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
PHP_RINIT ( url_scanner_ex ) ( INIT_FUNC_ARGS_PASSTHRU ) ;
2001-08-30 00:00:30 +08:00
2003-05-22 05:36:51 +08:00
/* Setup default context */
FG ( default_context ) = NULL ;
2004-06-22 02:58:55 +08:00
/* Default to global wrappers only */
FG ( stream_wrappers ) = NULL ;
2004-06-22 05:08:05 +08:00
/* Default to global filters only */
FG ( stream_filters ) = NULL ;
1999-04-17 08:37:12 +08:00
return SUCCESS ;
}
1999-07-27 04:09:08 +08:00
PHP_RSHUTDOWN_FUNCTION ( basic )
1999-04-17 08:37:12 +08:00
{
2001-08-30 00:00:30 +08:00
if ( BG ( strtok_zval ) ) {
2001-08-05 00:53:57 +08:00
zval_ptr_dtor ( & BG ( strtok_zval ) ) ;
2001-08-30 00:00:30 +08:00
}
2001-07-09 07:28:48 +08:00
BG ( strtok_string ) = NULL ;
2001-08-03 17:50:38 +08:00
BG ( strtok_zval ) = NULL ;
* fixed some #if/#ifdef issues
* hand-patched in php3 changes from 3.0.6 to HEAD in these files:
fopen-wrappers.[ch] ext/standard/file.[ch] ext/standard/fsock.[ch]
ext/standard/php3_string.h ext/standard/string.c
* added some new file/socket macros for more readable code:
FP_FGETS(buf,len,sock,fp,issock)
FP_FREAD(buf,len,sock,fp,issock)
FP_FEOF(sock,fp,issock)
FP_FGETC(sock,fp,issock)
1999-06-17 01:06:53 +08:00
# ifdef HAVE_PUTENV
1999-11-28 08:31:02 +08:00
zend_hash_destroy ( & BG ( putenv_ht ) ) ;
1999-04-17 08:37:12 +08:00
# endif
2001-08-30 00:00:30 +08:00
2006-03-06 22:27:45 +08:00
if ( BG ( umask ) ! = - 1 ) {
umask ( BG ( umask ) ) ;
}
1999-10-08 10:10:57 +08:00
/* Check if locale was changed and change it back
to the value in startup environment */
1999-11-28 08:31:02 +08:00
if ( BG ( locale_string ) ! = NULL ) {
2000-06-06 02:47:34 +08:00
setlocale ( LC_ALL , " C " ) ;
setlocale ( LC_CTYPE , " " ) ;
1999-10-08 10:10:57 +08:00
}
1999-11-28 08:31:02 +08:00
STR_FREE ( BG ( locale_string ) ) ;
* fixed some #if/#ifdef issues
* hand-patched in php3 changes from 3.0.6 to HEAD in these files:
fopen-wrappers.[ch] ext/standard/file.[ch] ext/standard/fsock.[ch]
ext/standard/php3_string.h ext/standard/string.c
* added some new file/socket macros for more readable code:
FP_FGETS(buf,len,sock,fp,issock)
FP_FREAD(buf,len,sock,fp,issock)
FP_FEOF(sock,fp,issock)
FP_FGETC(sock,fp,issock)
1999-06-17 01:06:53 +08:00
2005-05-16 16:37:14 +08:00
/*
FG ( stream_wrappers ) and FG ( stream_filters ) are destroyed
during php_request_shutdown ( )
*/
2003-01-07 19:37:09 +08:00
PHP_RSHUTDOWN ( filestat ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
2003-01-06 13:59:17 +08:00
# ifdef HAVE_SYSLOG_H
2003-01-07 19:37:09 +08:00
PHP_RSHUTDOWN ( syslog ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
2003-01-06 13:59:17 +08:00
# endif
2003-01-07 19:37:09 +08:00
PHP_RSHUTDOWN ( assert ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
PHP_RSHUTDOWN ( url_scanner_ex ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
PHP_RSHUTDOWN ( streams ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
2004-07-29 19:54:12 +08:00
# ifdef PHP_WIN32
2004-07-29 10:59:44 +08:00
PHP_RSHUTDOWN ( win32_core_globals ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
2004-07-29 19:54:12 +08:00
# endif
2000-03-07 04:37:11 +08:00
2000-09-02 00:10:17 +08:00
if ( BG ( user_tick_functions ) ) {
zend_llist_destroy ( BG ( user_tick_functions ) ) ;
efree ( BG ( user_tick_functions ) ) ;
BG ( user_tick_functions ) = NULL ;
}
2002-02-21 11:32:42 +08:00
2003-08-08 03:53:31 +08:00
PHP_RSHUTDOWN ( user_filters ) ( SHUTDOWN_FUNC_ARGS_PASSTHRU ) ;
1999-04-17 08:37:12 +08:00
return SUCCESS ;
}
2000-03-05 01:28:16 +08:00
2000-03-07 04:37:11 +08:00
PHP_MINFO_FUNCTION ( basic )
{
2000-06-07 17:55:37 +08:00
php_info_print_table_start ( ) ;
2003-01-07 19:37:09 +08:00
PHP_MINFO ( regex ) ( ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU ) ;
PHP_MINFO ( dl ) ( ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU ) ;
PHP_MINFO ( mail ) ( ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU ) ;
2000-06-07 17:55:37 +08:00
php_info_print_table_end ( ) ;
2003-01-07 19:37:09 +08:00
PHP_MINFO ( assert ) ( ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU ) ;
2000-03-07 04:37:11 +08:00
}
2001-08-30 00:00:30 +08:00
2006-07-18 03:32:10 +08:00
/* {{{ proto mixed constant(string const_name) U
Given the name of a constant this function will return the constant ' s associated value */
2000-11-25 05:05:25 +08:00
PHP_FUNCTION ( constant )
{
2006-07-17 15:11:06 +08:00
zstr const_name ;
2006-07-18 03:32:10 +08:00
int const_name_len ;
zend_uchar const_type ;
2000-12-19 03:23:50 +08:00
2006-07-18 03:32:10 +08:00
if ( zend_parse_parameters ( ZEND_NUM_ARGS ( ) TSRMLS_CC , " t " , & const_name , & const_name_len , & const_type ) = = FAILURE ) {
2006-07-17 15:02:26 +08:00
return ;
2001-08-30 00:00:30 +08:00
}
2000-12-19 03:23:50 +08:00
2006-07-17 15:11:06 +08:00
if ( ! zend_u_get_constant ( const_type , const_name , const_name_len , return_value TSRMLS_CC ) ) {
2006-07-18 03:32:10 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Couldn't find constant %R " , const_type , const_name ) ;
2001-08-30 00:00:30 +08:00
RETURN_NULL ( ) ;
}
2000-11-25 05:05:25 +08:00
}
/* }}} */
2004-08-07 12:50:24 +08:00
# ifdef HAVE_INET_NTOP
/* {{{ proto string inet_ntop(string in_addr)
Converts a packed inet address to a human readable IP address string */
2004-08-07 23:59:59 +08:00
PHP_NAMED_FUNCTION ( php_inet_ntop )
2004-08-07 12:50:24 +08:00
{
char * address ;
int address_len , af = AF_INET ;
char buffer [ 40 ] ;
if ( zend_parse_parameters ( ZEND_NUM_ARGS ( ) TSRMLS_CC , " s " , & address , & address_len ) = = FAILURE ) {
RETURN_FALSE ;
}
# ifdef HAVE_IPV6
if ( address_len = = 16 ) {
af = AF_INET6 ;
} else
# endif
if ( address_len ! = 4 ) {
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Invalid in_addr value " ) ;
RETURN_FALSE ;
}
if ( ! inet_ntop ( af , address , buffer , sizeof ( buffer ) ) ) {
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " An unknown error occured " ) ;
RETURN_FALSE ;
}
RETURN_STRING ( buffer , 1 ) ;
}
/* }}} */
# endif /* HAVE_INET_NTOP */
# ifdef HAVE_INET_PTON
/* {{{ proto string inet_pton(string ip_address)
Converts a human readable IP address to a packed binary string */
2004-08-07 23:59:59 +08:00
PHP_NAMED_FUNCTION ( php_inet_pton )
2004-08-07 12:50:24 +08:00
{
int ret , af = AF_INET ;
char * address ;
int address_len ;
char buffer [ 17 ] ;
if ( zend_parse_parameters ( ZEND_NUM_ARGS ( ) TSRMLS_CC , " s " , & address , & address_len ) = = FAILURE ) {
RETURN_FALSE ;
}
memset ( buffer , 0 , sizeof ( buffer ) ) ;
# ifdef HAVE_IPV6
if ( strchr ( address , ' : ' ) ) {
af = AF_INET6 ;
} else
# endif
if ( ! strchr ( address , ' . ' ) ) {
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Unrecognized address %s " , address ) ;
RETURN_FALSE ;
}
ret = inet_pton ( af , address , buffer ) ;
if ( ret < = 0 ) {
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Unrecognized address %s " , address ) ;
RETURN_FALSE ;
}
2004-08-07 13:11:26 +08:00
RETURN_STRINGL ( buffer , af = = AF_INET ? 4 : 16 , 1 ) ;
2004-08-07 12:50:24 +08:00
}
/* }}} */
# endif /* HAVE_INET_PTON */
2001-07-02 19:11:58 +08:00
/* {{{ proto int ip2long(string ip_address)
2000-07-26 19:43:01 +08:00
Converts a string containing an ( IPv4 ) Internet Protocol dotted address into a proper address */
2000-03-05 01:28:16 +08:00
PHP_FUNCTION ( ip2long )
{
zval * * str ;
2003-12-19 21:33:51 +08:00
unsigned long int ip ;
2000-03-05 01:28:16 +08:00
2000-06-06 03:47:54 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 1 | | zend_get_parameters_ex ( 1 , & str ) = = FAILURE ) {
2000-03-05 01:28:16 +08:00
WRONG_PARAM_COUNT ;
}
convert_to_string_ex ( str ) ;
2003-12-19 21:49:59 +08:00
if ( Z_STRLEN_PP ( str ) = = 0 | | ( ip = inet_addr ( Z_STRVAL_PP ( str ) ) ) = = INADDR_NONE ) {
2004-08-19 23:14:04 +08:00
/* the only special case when we should return -1 ourselves,
* because inet_addr ( ) considers it wrong .
*/
if ( ! memcmp ( Z_STRVAL_PP ( str ) , " 255.255.255.255 " , Z_STRLEN_PP ( str ) ) ) {
RETURN_LONG ( - 1 ) ;
}
2004-05-28 18:45:18 +08:00
RETURN_FALSE ;
2003-12-19 21:33:51 +08:00
}
RETURN_LONG ( ntohl ( ip ) ) ;
2000-03-05 01:28:16 +08:00
}
2000-03-29 09:39:04 +08:00
/* }}} */
2000-03-05 01:28:16 +08:00
2000-03-29 09:39:04 +08:00
/* {{{ proto string long2ip(int proper_address)
2000-07-26 19:43:01 +08:00
Converts an ( IPv4 ) Internet network address into a string in Internet standard dotted format */
2000-03-05 01:28:16 +08:00
PHP_FUNCTION ( long2ip )
{
zval * * num ;
2001-12-07 21:20:18 +08:00
unsigned long n ;
2000-03-05 01:28:16 +08:00
struct in_addr myaddr ;
2000-12-19 03:23:50 +08:00
2000-06-06 03:47:54 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 1 | | zend_get_parameters_ex ( 1 , & num ) = = FAILURE ) {
2000-03-05 01:28:16 +08:00
WRONG_PARAM_COUNT ;
}
2001-12-07 21:20:18 +08:00
convert_to_string_ex ( num ) ;
n = strtoul ( Z_STRVAL_PP ( num ) , NULL , 0 ) ;
2000-12-19 03:23:50 +08:00
2001-12-07 21:20:18 +08:00
myaddr . s_addr = htonl ( n ) ;
2001-08-30 00:00:30 +08:00
RETURN_STRING ( inet_ntoa ( myaddr ) , 1 ) ;
2000-03-05 01:28:16 +08:00
}
2000-03-29 09:39:04 +08:00
/* }}} */
2000-03-05 01:28:16 +08:00
1999-04-17 08:37:12 +08:00
/********************
* System Functions *
* * * * * * * * * * * * * * * * * * * */
2000-03-29 09:39:04 +08:00
/* {{{ proto string getenv(string varname)
Get the value of an environment variable */
1999-05-16 19:19:26 +08:00
PHP_FUNCTION ( getenv )
1999-04-17 08:37:12 +08:00
{
2001-12-30 17:36:24 +08:00
char * ptr , * str ;
int str_len ;
2000-02-11 01:55:01 +08:00
2001-12-30 17:36:24 +08:00
if ( zend_parse_parameters ( ZEND_NUM_ARGS ( ) TSRMLS_CC , " s " , & str , & str_len ) = = FAILURE ) {
2000-02-11 01:55:01 +08:00
RETURN_FALSE ;
1999-04-17 08:37:12 +08:00
}
2001-12-30 17:36:24 +08:00
ptr = sapi_getenv ( str , str_len TSRMLS_CC ) ;
2006-06-26 21:10:31 +08:00
if ( ptr ) RETURN_RT_STRING ( ptr , 0 ) ;
ptr = getenv ( str ) ;
if ( ptr ) RETURN_RT_STRING ( ptr , 1 ) ;
RETURN_FALSE ;
1999-04-17 08:37:12 +08:00
}
2000-03-29 09:39:04 +08:00
/* }}} */
1999-04-17 08:37:12 +08:00
2000-05-28 03:27:20 +08:00
# ifdef HAVE_PUTENV
2001-07-02 19:11:58 +08:00
/* {{{ proto bool putenv(string setting)
2000-03-29 09:39:04 +08:00
Set the value of an environment variable */
1999-05-16 19:19:26 +08:00
PHP_FUNCTION ( putenv )
1999-04-17 08:37:12 +08:00
{
2005-12-06 06:53:34 +08:00
zval * * str ;
1999-04-17 08:37:12 +08:00
2000-06-06 03:47:54 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 1 | | zend_get_parameters_ex ( 1 , & str ) = = FAILURE ) {
1999-04-17 08:37:12 +08:00
WRONG_PARAM_COUNT ;
}
1999-10-06 20:54:45 +08:00
convert_to_string_ex ( str ) ;
1999-04-17 08:37:12 +08:00
2000-11-27 21:31:21 +08:00
if ( Z_STRVAL_PP ( str ) & & * ( Z_STRVAL_PP ( str ) ) ) {
2001-08-12 01:03:37 +08:00
char * p , * * env ;
1999-04-17 08:37:12 +08:00
putenv_entry pe ;
2000-12-19 03:23:50 +08:00
2001-08-12 01:03:37 +08:00
pe . putenv_string = estrndup ( Z_STRVAL_PP ( str ) , Z_STRLEN_PP ( str ) ) ;
2000-11-27 21:31:21 +08:00
pe . key = estrndup ( Z_STRVAL_PP ( str ) , Z_STRLEN_PP ( str ) ) ;
2001-08-30 00:00:30 +08:00
if ( ( p = strchr ( pe . key , ' = ' ) ) ) { /* nullify the '=' if there is one */
* p = ' \0 ' ;
1999-04-17 08:37:12 +08:00
}
pe . key_len = strlen ( pe . key ) ;
2000-12-19 03:23:50 +08:00
2001-10-29 06:51:58 +08:00
zend_hash_del ( & BG ( putenv_ht ) , pe . key , pe . key_len + 1 ) ;
2000-12-19 03:23:50 +08:00
1999-04-17 08:37:12 +08:00
/* find previous value */
pe . previous_value = NULL ;
for ( env = environ ; env ! = NULL & & * env ! = NULL ; env + + ) {
2001-08-30 00:00:30 +08:00
if ( ! strncmp ( * env , pe . key , pe . key_len ) & & ( * env ) [ pe . key_len ] = = ' = ' ) { /* found it */
1999-04-17 08:37:12 +08:00
pe . previous_value = * env ;
break ;
}
}
2003-12-05 06:38:22 +08:00
# if _MSC_VER >= 1300
/* VS.Net has a bug in putenv() when setting a variable that
* is already set ; if the SetEnvironmentVariable ( ) API call
* fails , the Crt will double free ( ) a string .
* We try to avoid this by setting our own value first */
SetEnvironmentVariable ( pe . key , " bugbug " ) ;
# endif
2002-05-05 02:11:36 +08:00
if ( putenv ( pe . putenv_string ) = = 0 ) { /* success */
2001-10-29 06:51:58 +08:00
zend_hash_add ( & BG ( putenv_ht ) , pe . key , pe . key_len + 1 , ( void * * ) & pe , sizeof ( putenv_entry ) , NULL ) ;
2001-01-09 17:02:21 +08:00
# ifdef HAVE_TZSET
2003-10-15 08:18:53 +08:00
if ( ! strncmp ( pe . key , " TZ " , pe . key_len ) ) {
2001-08-30 00:00:30 +08:00
tzset ( ) ;
}
2001-01-09 17:02:21 +08:00
# endif
1999-04-17 08:37:12 +08:00
RETURN_TRUE ;
} else {
efree ( pe . putenv_string ) ;
efree ( pe . key ) ;
RETURN_FALSE ;
}
}
2003-02-04 05:48:36 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Invalid parameter syntax. " ) ;
RETURN_FALSE ;
1999-04-17 08:37:12 +08:00
}
2000-03-29 09:39:04 +08:00
/* }}} */
2000-05-28 03:27:20 +08:00
# endif
1999-04-17 08:37:12 +08:00
2002-09-30 11:02:52 +08:00
# ifdef HAVE_GETOPT
/* {{{ free_argv
Free the memory allocated to an argv array . */
static void free_argv ( char * * argv , int argc )
{
int i ;
if ( argv ) {
for ( i = 0 ; i < argc ; i + + ) {
if ( argv [ i ] ) {
efree ( argv [ i ] ) ;
}
}
efree ( argv ) ;
}
}
/* }}} */
2002-10-30 23:11:11 +08:00
# ifdef HARTMUT_0
2002-10-22 00:07:21 +08:00
/* {{{ free_longopts
Free the memory allocated to an longopt array . */
static void free_longopts ( struct option * longopts )
{
struct option * p ;
if ( longopts ) {
for ( p = longopts ; p - > name ; p + + ) {
efree ( ( char * ) ( p - > name ) ) ;
}
efree ( longopts ) ;
}
}
/* }}} */
# endif
/* {{{ proto array getopt(string options [, array longopts])
2002-09-30 11:02:52 +08:00
Get options from the command line argument list */
PHP_FUNCTION ( getopt )
{
char * options = NULL , * * argv = NULL ;
2002-10-07 00:33:14 +08:00
char opt [ 2 ] = { ' \0 ' } ;
2002-10-22 00:07:21 +08:00
char * optname ;
2002-10-07 00:33:14 +08:00
int argc = 0 , options_len = 0 , o ;
2002-10-22 00:07:21 +08:00
zval * val , * * args = NULL , * p_longopts = NULL ;
2005-12-17 04:50:38 +08:00
int optname_len = 0 ;
2002-10-30 23:11:11 +08:00
# ifdef HARTMUT_0
2002-10-22 00:07:21 +08:00
struct option * longopts = NULL ;
int longindex = 0 ;
# endif
if ( zend_parse_parameters ( ZEND_NUM_ARGS ( ) TSRMLS_CC , " s|a " ,
& options , & options_len , & p_longopts ) = = FAILURE ) {
2002-10-05 01:17:01 +08:00
RETURN_FALSE ;
2002-09-30 11:02:52 +08:00
}
/*
* Get argv from the global symbol table . We calculate argc ourselves
* in order to be on the safe side , even though it is also available
* from the symbol table .
*/
2004-03-11 03:12:49 +08:00
if ( zend_hash_find ( HASH_OF ( PG ( http_globals ) [ TRACK_VARS_SERVER ] ) , " argv " , sizeof ( " argv " ) , ( void * * ) & args ) ! = FAILURE | |
zend_hash_find ( & EG ( symbol_table ) , " argv " , sizeof ( " argv " ) , ( void * * ) & args ) ! = FAILURE ) {
2002-09-30 11:02:52 +08:00
int pos = 0 ;
zval * * arg ;
argc = zend_hash_num_elements ( Z_ARRVAL_PP ( args ) ) ;
2002-10-07 00:33:14 +08:00
/*
* Attempt to allocate enough memory to hold all of the arguments
* and a trailing NULL
*/
2004-06-28 05:49:47 +08:00
argv = ( char * * ) safe_emalloc ( sizeof ( char * ) , ( argc + 1 ) , 0 ) ;
2002-09-30 11:02:52 +08:00
/* Reset the array indexes. */
zend_hash_internal_pointer_reset ( Z_ARRVAL_PP ( args ) ) ;
/* Iterate over the hash to construct the argv array. */
while ( zend_hash_get_current_data ( Z_ARRVAL_PP ( args ) ,
( void * * ) & arg ) = = SUCCESS ) {
argv [ pos + + ] = estrdup ( Z_STRVAL_PP ( arg ) ) ;
zend_hash_move_forward ( Z_ARRVAL_PP ( args ) ) ;
}
2002-10-07 00:33:14 +08:00
/*
* The C Standard requires argv [ argc ] to be NULL - this might
* keep some getopt implementations happy .
*/
argv [ argc ] = NULL ;
} else {
/* Return false if we can't find argv. */
RETURN_FALSE ;
2002-09-30 11:02:52 +08:00
}
2002-10-22 00:07:21 +08:00
if ( p_longopts ) {
2002-10-30 23:11:11 +08:00
# ifdef HARTMUT_0
2002-10-22 00:07:21 +08:00
int len , c = zend_hash_num_elements ( Z_ARRVAL_P ( p_longopts ) ) ;
struct option * p ;
zval * * arg ;
char * name ;
longopts = ( struct option * ) ecalloc ( c + 1 , sizeof ( struct option ) ) ;
if ( ! longopts ) RETURN_FALSE ;
/* Reset the array indexes. */
zend_hash_internal_pointer_reset ( Z_ARRVAL_P ( p_longopts ) ) ;
p = longopts ;
/* Iterate over the hash to construct the argv array. */
while ( zend_hash_get_current_data ( Z_ARRVAL_P ( p_longopts ) ,
( void * * ) & arg ) = = SUCCESS ) {
p - > has_arg = 0 ;
name = estrdup ( Z_STRVAL_PP ( arg ) ) ;
len = strlen ( name ) ;
if ( ( len > 0 ) & & ( name [ len - 1 ] = = ' : ' ) ) {
p - > has_arg + + ;
name [ len - 1 ] = ' \0 ' ;
if ( ( len > 1 ) & & ( name [ len - 2 ] = = ' : ' ) ) {
p - > has_arg + + ;
name [ len - 2 ] = ' \0 ' ;
}
}
p - > name = name ;
p - > flag = NULL ;
p - > val = 0 ;
zend_hash_move_forward ( Z_ARRVAL_P ( p_longopts ) ) ;
p + + ;
}
# else
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " No support for long options in this build " ) ;
# endif
}
2002-09-30 11:02:52 +08:00
/* Initialize the return value as an array. */
2002-12-06 06:28:02 +08:00
array_init ( return_value ) ;
2002-09-30 11:02:52 +08:00
/* Disable getopt()'s error messages. */
opterr = 0 ;
2005-12-08 11:25:42 +08:00
/* Force reinitialization of getopt() (via optind reset) on every call. */
2006-02-23 11:48:30 +08:00
optind = 1 ;
2005-12-08 11:25:42 +08:00
2002-09-30 11:02:52 +08:00
/* Invoke getopt(3) on the argument array. */
2002-10-30 23:11:11 +08:00
# ifdef HARTMUT_0
2002-10-22 00:07:21 +08:00
while ( ( o = getopt_long ( argc , argv , options , longopts , & longindex ) ) ! = - 1 ) {
# else
2002-10-07 00:33:14 +08:00
while ( ( o = getopt ( argc , argv , options ) ) ! = - 1 ) {
2002-10-22 00:07:21 +08:00
# endif
2002-09-30 11:02:52 +08:00
/* Skip unknown arguments. */
2002-10-07 00:33:14 +08:00
if ( o = = ' ? ' ) {
2002-09-30 11:02:52 +08:00
continue ;
}
/* Prepare the option character and the argument string. */
2002-10-22 00:07:21 +08:00
if ( o = = 0 ) {
2002-10-30 23:11:11 +08:00
# ifdef HARTMUT_0
2002-10-22 00:07:21 +08:00
optname = ( char * ) longopts [ longindex ] . name ;
2002-11-02 18:34:51 +08:00
# else
/* o == 0 shall never happen so this only fixes a compiler warning */
optname = NULL ;
2002-10-22 03:24:48 +08:00
# endif
2002-10-22 00:07:21 +08:00
} else {
if ( o = = 1 ) o = ' - ' ;
opt [ 0 ] = o ;
optname = opt ;
}
2002-09-30 11:02:52 +08:00
MAKE_STD_ZVAL ( val ) ;
if ( optarg ! = NULL ) {
2005-08-23 17:33:46 +08:00
ZVAL_RT_STRING ( val , optarg , 1 ) ;
2002-09-30 11:02:52 +08:00
} else {
2002-10-07 01:00:33 +08:00
ZVAL_FALSE ( val ) ;
2002-09-30 11:02:52 +08:00
}
/* Add this option / argument pair to the result hash. */
2005-12-17 04:50:38 +08:00
optname_len = strlen ( optname ) ;
if ( ! ( optname_len > 1 & & optname [ 0 ] = = ' 0 ' ) & & is_numeric_string ( optname , optname_len , NULL , NULL , 0 ) = = IS_LONG ) {
/* numeric string */
int optname_int = atoi ( optname ) ;
if ( zend_hash_index_find ( HASH_OF ( return_value ) , optname_int , ( void * * ) & args ) ! = FAILURE ) {
if ( Z_TYPE_PP ( args ) ! = IS_ARRAY ) {
convert_to_array_ex ( args ) ;
}
zend_hash_next_index_insert ( HASH_OF ( * args ) , ( void * ) & val , sizeof ( zval * ) , NULL ) ;
} else {
zend_hash_index_update ( HASH_OF ( return_value ) , optname_int , & val , sizeof ( zval * ) , NULL ) ;
}
2002-10-22 00:07:21 +08:00
} else {
2005-12-17 04:50:38 +08:00
/* other strings */
if ( zend_hash_find ( HASH_OF ( return_value ) , optname , strlen ( optname ) + 1 , ( void * * ) & args ) ! = FAILURE ) {
if ( Z_TYPE_PP ( args ) ! = IS_ARRAY ) {
convert_to_array_ex ( args ) ;
}
zend_hash_next_index_insert ( HASH_OF ( * args ) , ( void * ) & val , sizeof ( zval * ) , NULL ) ;
} else {
zend_hash_add ( HASH_OF ( return_value ) , optname , strlen ( optname ) + 1 , ( void * ) & val , sizeof ( zval * ) , NULL ) ;
}
2002-09-30 11:02:52 +08:00
}
}
free_argv ( argv , argc ) ;
2002-10-30 23:11:11 +08:00
# ifdef HARTMUT_0
2002-10-22 00:07:21 +08:00
free_longopts ( longopts ) ;
# endif
2002-09-30 11:02:52 +08:00
}
/* }}} */
# endif
2000-03-29 09:39:04 +08:00
/* {{{ proto void flush(void)
Flush the output buffer */
1999-05-16 19:19:26 +08:00
PHP_FUNCTION ( flush )
1999-04-17 08:37:12 +08:00
{
2001-07-31 14:28:05 +08:00
sapi_flush ( TSRMLS_C ) ;
1999-04-17 08:37:12 +08:00
}
2000-03-29 09:39:04 +08:00
/* }}} */
1999-04-17 08:37:12 +08:00
2000-03-29 09:39:04 +08:00
/* {{{ proto void sleep(int seconds)
Delay for a given number of seconds */
1999-05-16 19:19:26 +08:00
PHP_FUNCTION ( sleep )
1999-04-17 08:37:12 +08:00
{
2006-02-21 23:32:34 +08:00
long num ;
1999-04-17 08:37:12 +08:00
2006-02-21 23:32:34 +08:00
if ( zend_parse_parameters ( ZEND_NUM_ARGS ( ) TSRMLS_CC , " l " , & num ) = = FAILURE ) {
RETURN_FALSE ;
}
if ( num < 0 ) {
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Number of seconds must be greater than or equal to 0 " ) ;
RETURN_FALSE ;
1999-04-17 08:37:12 +08:00
}
2004-11-03 01:03:20 +08:00
# ifdef PHP_SLEEP_NON_VOID
2006-02-21 23:32:34 +08:00
RETURN_LONG ( php_sleep ( num ) ) ;
2004-11-03 14:22:08 +08:00
# else
2006-02-21 23:32:34 +08:00
php_sleep ( num ) ;
2004-11-03 01:03:20 +08:00
# endif
2004-11-03 14:22:08 +08:00
1999-04-17 08:37:12 +08:00
}
2000-03-29 09:39:04 +08:00
/* }}} */
1999-04-17 08:37:12 +08:00
2000-03-29 09:39:04 +08:00
/* {{{ proto void usleep(int micro_seconds)
Delay for a given number of micro seconds */
1999-05-16 19:19:26 +08:00
PHP_FUNCTION ( usleep )
1999-04-17 08:37:12 +08:00
{
# if HAVE_USLEEP
2006-02-16 18:13:23 +08:00
long num ;
1999-04-17 08:37:12 +08:00
2006-02-16 18:13:23 +08:00
if ( zend_parse_parameters ( ZEND_NUM_ARGS ( ) TSRMLS_CC , " l " , & num ) = = FAILURE ) {
return ;
1999-04-17 08:37:12 +08:00
}
2006-02-16 18:13:23 +08:00
if ( num < 0 ) {
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Number of microseconds must be greater than or equal to 0 " ) ;
RETURN_FALSE ;
}
usleep ( num ) ;
1999-04-17 08:37:12 +08:00
# endif
}
2000-03-29 09:39:04 +08:00
/* }}} */
1999-04-17 08:37:12 +08:00
2003-11-13 07:43:46 +08:00
# if HAVE_NANOSLEEP
2003-11-15 06:55:54 +08:00
/* {{{ proto mixed time_nanosleep(long seconds, long nanoseconds)
2003-11-13 06:02:37 +08:00
Delay for a number of seconds and nano seconds */
2003-11-15 06:55:54 +08:00
PHP_FUNCTION ( time_nanosleep )
2003-11-13 06:02:37 +08:00
{
long tv_sec , tv_nsec ;
struct timespec php_req , php_rem ;
if ( zend_parse_parameters ( ZEND_NUM_ARGS ( ) TSRMLS_CC , " ll " , & tv_sec , & tv_nsec ) ) {
WRONG_PARAM_COUNT ;
}
php_req . tv_sec = ( time_t ) tv_sec ;
php_req . tv_nsec = tv_nsec ;
if ( ! nanosleep ( & php_req , & php_rem ) ) {
RETURN_TRUE ;
} else if ( errno = = EINTR ) {
array_init ( return_value ) ;
add_assoc_long_ex ( return_value , " seconds " , sizeof ( " seconds " ) , php_rem . tv_sec ) ;
add_assoc_long_ex ( return_value , " nanoseconds " , sizeof ( " nanoseconds " ) , php_rem . tv_nsec ) ;
return ;
} else if ( errno = = EINVAL ) {
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " nanoseconds was not in the range 0 to 999 999 999 or seconds was negative " ) ;
}
RETURN_FALSE ;
}
/* }}} */
2005-04-11 00:25:11 +08:00
/* {{{ proto mixed time_sleep_until(float timestamp)
Make the script sleep until the specified time */
PHP_FUNCTION ( time_sleep_until )
{
double d_ts , c_ts ;
struct timeval tm ;
struct timespec php_req , php_rem ;
if ( zend_parse_parameters ( ZEND_NUM_ARGS ( ) TSRMLS_CC , " d " , & d_ts ) ) {
WRONG_PARAM_COUNT ;
}
if ( gettimeofday ( ( struct timeval * ) & tm , NULL ) ! = 0 ) {
RETURN_FALSE ;
}
c_ts = ( double ) ( d_ts - tm . tv_sec - tm . tv_usec / 1000000.00 ) ;
if ( c_ts < 0 ) {
2006-04-03 17:14:50 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Sleep until to time is less than current time. " ) ;
2005-04-11 00:25:11 +08:00
RETURN_FALSE ;
}
php_req . tv_sec = ( time_t ) c_ts ;
if ( php_req . tv_sec > c_ts ) { /* rounding up occurred */
php_req . tv_sec - - ;
}
/* 1sec = 1000000000 nanoseconds */
php_req . tv_nsec = ( long ) ( ( c_ts - php_req . tv_sec ) * 1000000000.00 ) ;
while ( nanosleep ( & php_req , & php_rem ) ) {
if ( errno = = EINTR ) {
php_req . tv_sec = php_rem . tv_sec ;
php_req . tv_nsec = php_rem . tv_nsec ;
} else {
RETURN_FALSE ;
}
}
RETURN_TRUE ;
}
/* }}} */
2003-11-13 07:43:46 +08:00
# endif
2003-11-13 06:02:37 +08:00
2000-03-29 09:39:04 +08:00
/* {{{ proto string get_current_user(void)
Get the name of the owner of the current PHP script */
1999-11-14 04:31:54 +08:00
PHP_FUNCTION ( get_current_user )
1999-04-17 08:37:12 +08:00
{
2001-08-13 15:55:39 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 0 ) {
WRONG_PARAM_COUNT ;
}
2001-08-13 14:43:47 +08:00
2001-08-12 01:03:37 +08:00
RETURN_STRING ( php_get_current_user ( ) , 1 ) ;
1999-11-14 04:31:54 +08:00
}
2000-03-29 09:39:04 +08:00
/* }}} */
1999-04-17 08:37:12 +08:00
2000-03-29 09:39:04 +08:00
/* {{{ proto string get_cfg_var(string option_name)
Get the value of a PHP configuration option */
1999-05-16 19:19:26 +08:00
PHP_FUNCTION ( get_cfg_var )
1999-04-17 08:37:12 +08:00
{
2005-12-06 06:53:34 +08:00
zval * * varname ;
1999-04-17 08:37:12 +08:00
char * value ;
2000-12-19 03:23:50 +08:00
2001-08-30 00:00:30 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 1 | | zend_get_parameters_ex ( 1 , & varname ) = = FAILURE ) {
1999-04-17 08:37:12 +08:00
WRONG_PARAM_COUNT ;
}
2000-12-19 03:23:50 +08:00
1999-10-06 20:54:45 +08:00
convert_to_string_ex ( varname ) ;
2000-12-19 03:23:50 +08:00
2001-08-30 00:00:30 +08:00
if ( cfg_get_string ( Z_STRVAL_PP ( varname ) , & value ) = = FAILURE ) {
1999-04-17 08:37:12 +08:00
RETURN_FALSE ;
}
2001-08-12 01:03:37 +08:00
RETURN_STRING ( value , 1 ) ;
1999-04-17 08:37:12 +08:00
}
2000-03-29 09:39:04 +08:00
/* }}} */
1999-05-16 19:19:26 +08:00
PHP_FUNCTION ( set_magic_quotes_runtime )
1999-04-17 08:37:12 +08:00
{
2006-03-08 08:43:32 +08:00
php_error_docref ( NULL TSRMLS_CC , E_CORE_ERROR , " magic_quotes_runtime is not supported anymore " ) ;
RETURN_FALSE ;
1999-04-17 08:37:12 +08:00
}
2000-03-29 09:39:04 +08:00
1999-05-16 19:19:26 +08:00
PHP_FUNCTION ( get_magic_quotes_runtime )
1999-04-17 08:37:12 +08:00
{
2006-03-08 08:43:32 +08:00
RETURN_FALSE ;
1999-04-17 08:37:12 +08:00
}
1999-05-16 19:19:26 +08:00
PHP_FUNCTION ( get_magic_quotes_gpc )
1999-04-17 08:37:12 +08:00
{
2006-03-08 08:43:32 +08:00
RETURN_FALSE ;
1999-04-17 08:37:12 +08:00
}
2000-12-19 03:23:50 +08:00
/*
1999-04-17 08:37:12 +08:00
1 st arg = error message
2 nd arg = error option
3 rd arg = optional parameters ( email address or tcp address )
4 th arg = used for additional headers if email
2001-08-30 00:00:30 +08:00
error options :
1999-08-03 03:17:14 +08:00
0 = send to php_error_log ( uses syslog or file depending on ini setting )
1999-04-17 08:37:12 +08:00
1 = send via email to 3 rd parameter 4 th option = additional headers
2 = send via tcp / ip to 3 rd parameter ( name or ip : port )
3 = save to file in 3 rd parameter
*/
2002-08-27 07:16:51 +08:00
/* {{{ proto bool error_log(string message [, int message_type [, string destination [, string extra_headers]]])
2000-03-29 09:39:04 +08:00
Send an error message somewhere */
1999-05-16 19:19:26 +08:00
PHP_FUNCTION ( error_log )
1999-04-17 08:37:12 +08:00
{
2005-12-06 06:53:34 +08:00
zval * * string , * * erropt = NULL , * * option = NULL , * * emailhead = NULL ;
1999-04-17 08:37:12 +08:00
int opt_err = 0 ;
2001-08-30 00:00:30 +08:00
char * message , * opt = NULL , * headers = NULL ;
1999-04-17 08:37:12 +08:00
2001-08-30 00:00:30 +08:00
switch ( ZEND_NUM_ARGS ( ) ) {
case 1 :
if ( zend_get_parameters_ex ( 1 , & string ) = = FAILURE ) {
2002-08-24 09:19:28 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Argument 1 invalid " ) ;
2001-08-30 00:00:30 +08:00
RETURN_FALSE ;
}
break ;
case 2 :
if ( zend_get_parameters_ex ( 2 , & string , & erropt ) = = FAILURE ) {
2002-08-24 09:19:28 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Invalid arguments " ) ;
2001-08-30 00:00:30 +08:00
RETURN_FALSE ;
}
convert_to_long_ex ( erropt ) ;
opt_err = Z_LVAL_PP ( erropt ) ;
break ;
case 3 :
2002-07-08 20:52:22 +08:00
if ( zend_get_parameters_ex ( 3 , & string , & erropt , & option ) = = FAILURE ) {
2002-08-24 09:19:28 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Invalid arguments " ) ;
2001-08-30 00:00:30 +08:00
RETURN_FALSE ;
}
convert_to_long_ex ( erropt ) ;
opt_err = Z_LVAL_PP ( erropt ) ;
convert_to_string_ex ( option ) ;
opt = Z_STRVAL_PP ( option ) ;
break ;
case 4 :
2002-07-08 20:52:22 +08:00
if ( zend_get_parameters_ex ( 4 , & string , & erropt , & option , & emailhead ) = = FAILURE ) {
2002-08-27 07:16:51 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Invalid arguments " ) ;
2001-08-30 00:00:30 +08:00
RETURN_FALSE ;
}
break ;
default :
WRONG_PARAM_COUNT ;
1999-04-17 08:37:12 +08:00
}
1999-10-06 20:54:45 +08:00
convert_to_string_ex ( string ) ;
2001-08-30 00:00:30 +08:00
message = Z_STRVAL_PP ( string ) ;
1999-04-17 08:37:12 +08:00
if ( erropt ! = NULL ) {
1999-10-06 20:54:45 +08:00
convert_to_long_ex ( erropt ) ;
2001-08-30 00:00:30 +08:00
opt_err = Z_LVAL_PP ( erropt ) ;
1999-04-17 08:37:12 +08:00
}
2001-08-30 00:00:30 +08:00
1999-04-17 08:37:12 +08:00
if ( option ! = NULL ) {
1999-10-06 20:54:45 +08:00
convert_to_string_ex ( option ) ;
2001-08-30 00:00:30 +08:00
opt = Z_STRVAL_PP ( option ) ;
1999-04-17 08:37:12 +08:00
}
2001-08-30 00:00:30 +08:00
1999-04-17 08:37:12 +08:00
if ( emailhead ! = NULL ) {
1999-10-06 20:54:45 +08:00
convert_to_string_ex ( emailhead ) ;
2001-08-30 00:00:30 +08:00
headers = Z_STRVAL_PP ( emailhead ) ;
1999-04-17 08:37:12 +08:00
}
2001-08-30 00:00:30 +08:00
if ( _php_error_log ( opt_err , message , opt , headers TSRMLS_CC ) = = FAILURE ) {
1999-04-17 08:37:12 +08:00
RETURN_FALSE ;
}
2001-08-30 00:00:30 +08:00
1999-04-17 08:37:12 +08:00
RETURN_TRUE ;
}
2000-03-29 09:39:04 +08:00
/* }}} */
1999-04-17 08:37:12 +08:00
2001-08-30 00:00:30 +08:00
2001-07-31 15:09:49 +08:00
PHPAPI int _php_error_log ( int opt_err , char * message , char * opt , char * headers TSRMLS_DC )
2001-02-06 05:59:17 +08:00
{
2002-03-16 09:28:57 +08:00
php_stream * stream = NULL ;
1999-04-17 08:37:12 +08:00
2001-08-30 00:00:30 +08:00
switch ( opt_err ) {
case 1 : /*send an email */
{
1999-04-17 08:37:12 +08:00
# if HAVE_SENDMAIL
2002-03-16 20:45:43 +08:00
if ( ! php_mail ( opt , " PHP error_log message " , message , headers , NULL TSRMLS_CC ) ) {
2001-02-06 05:59:17 +08:00
return FAILURE ;
}
1999-04-17 08:37:12 +08:00
# else
2002-08-24 09:19:28 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Mail option not available! " ) ;
2001-02-06 05:59:17 +08:00
return FAILURE ;
1999-04-17 08:37:12 +08:00
# endif
2001-02-06 05:59:17 +08:00
}
break ;
2001-08-30 00:00:30 +08:00
case 2 : /*send to an address */
2002-08-24 09:19:28 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " TCP/IP option not available! " ) ;
1999-04-17 08:37:12 +08:00
return FAILURE ;
2001-02-06 05:59:17 +08:00
break ;
2001-08-30 00:00:30 +08:00
case 3 : /*save to a file */
2006-02-19 12:29:42 +08:00
stream = php_stream_open_wrapper ( opt , " a " , IGNORE_URL | REPORT_ERRORS , NULL ) ;
2002-03-16 05:03:08 +08:00
if ( ! stream )
2001-02-06 05:59:17 +08:00
return FAILURE ;
2002-03-16 05:03:08 +08:00
php_stream_write ( stream , message , strlen ( message ) ) ;
php_stream_close ( stream ) ;
2001-02-06 05:59:17 +08:00
break ;
2001-08-30 00:00:30 +08:00
2001-02-06 05:59:17 +08:00
default :
2001-08-06 00:21:33 +08:00
php_log_err ( message TSRMLS_CC ) ;
2001-02-06 05:59:17 +08:00
break ;
1999-04-17 08:37:12 +08:00
}
return SUCCESS ;
}
2006-03-08 22:41:45 +08:00
PHPAPI char * php_get_current_user ( )
{
struct passwd * pwd ;
struct stat * pstat ;
TSRMLS_FETCH ( ) ;
if ( SG ( request_info ) . current_user ) {
return SG ( request_info ) . current_user ;
}
/* FIXME: I need to have this somehow handled if
USE_SAPI is defined , because cgi will also be
interfaced in USE_SAPI */
pstat = sapi_get_stat ( TSRMLS_C ) ;
if ( ! pstat ) {
return " " ;
}
if ( ( pwd = getpwuid ( pstat - > st_uid ) ) = = NULL ) {
return " " ;
}
SG ( request_info ) . current_user_length = strlen ( pwd - > pw_name ) ;
SG ( request_info ) . current_user = estrndup ( pwd - > pw_name , SG ( request_info ) . current_user_length ) ;
return SG ( request_info ) . current_user ;
}
2000-06-25 02:46:17 +08:00
/* {{{ proto mixed call_user_func(string function_name [, mixed parmeter] [, mixed ...])
Call a user function which is the first parameter */
1999-05-16 19:19:26 +08:00
PHP_FUNCTION ( call_user_func )
1999-04-17 08:37:12 +08:00
{
2001-08-30 00:00:30 +08:00
zval * * * params ;
zval * retval_ptr ;
2005-08-22 20:22:16 +08:00
zval name ;
2001-08-30 00:00:30 +08:00
int argc = ZEND_NUM_ARGS ( ) ;
2000-12-19 03:23:50 +08:00
2001-05-15 04:06:06 +08:00
if ( argc < 1 ) {
1999-04-17 08:37:12 +08:00
WRONG_PARAM_COUNT ;
}
2001-05-15 04:56:05 +08:00
2003-05-29 20:54:01 +08:00
params = safe_emalloc ( sizeof ( zval * * ) , argc , 0 ) ;
2000-12-19 03:23:50 +08:00
2005-11-16 17:43:56 +08:00
if ( zend_get_parameters_array_ex ( 1 , params ) = = FAILURE ) {
1999-04-17 08:37:12 +08:00
efree ( params ) ;
RETURN_FALSE ;
}
2001-03-10 05:42:26 +08:00
2005-08-12 07:36:07 +08:00
if ( Z_TYPE_PP ( params [ 0 ] ) ! = IS_STRING & &
Z_TYPE_PP ( params [ 0 ] ) ! = IS_UNICODE & &
Z_TYPE_PP ( params [ 0 ] ) ! = IS_ARRAY ) {
2001-03-10 05:42:26 +08:00
SEPARATE_ZVAL ( params [ 0 ] ) ;
convert_to_string_ex ( params [ 0 ] ) ;
}
2005-12-17 06:26:43 +08:00
if ( ! zend_is_callable ( * params [ 0 ] , 0 , & name ) ) {
2005-08-22 20:22:16 +08:00
convert_to_string ( & name ) ;
php_error_docref1 ( NULL TSRMLS_CC , Z_STRVAL ( name ) , E_WARNING , " First argument is expected to be a valid callback " ) ;
zval_dtor ( & name ) ;
2001-05-15 04:06:06 +08:00
efree ( params ) ;
RETURN_NULL ( ) ;
}
2005-11-16 17:43:56 +08:00
if ( zend_get_parameters_array_ex ( argc , params ) = = FAILURE ) {
efree ( params ) ;
RETURN_FALSE ;
}
2003-12-28 05:10:34 +08:00
if ( call_user_function_ex ( EG ( function_table ) , NULL , * params [ 0 ] , & retval_ptr , argc - 1 , params + 1 , 0 , NULL TSRMLS_CC ) = = SUCCESS ) {
if ( retval_ptr ) {
COPY_PZVAL_TO_ZVAL ( * return_value , retval_ptr ) ;
}
1999-04-17 08:37:12 +08:00
} else {
2005-08-22 20:22:16 +08:00
convert_to_string ( & name ) ;
2002-10-03 18:42:57 +08:00
if ( argc > 1 ) {
2002-08-26 02:21:40 +08:00
SEPARATE_ZVAL ( params [ 1 ] ) ;
convert_to_string_ex ( params [ 1 ] ) ;
2002-10-03 18:42:57 +08:00
if ( argc > 2 ) {
2002-08-26 02:21:40 +08:00
SEPARATE_ZVAL ( params [ 2 ] ) ;
convert_to_string_ex ( params [ 2 ] ) ;
2005-08-22 20:22:16 +08:00
php_error_docref1 ( NULL TSRMLS_CC , Z_STRVAL ( name ) , E_WARNING , " Unable to call %R(%s,%s) " , Z_TYPE ( name ) , Z_UNIVAL ( name ) , Z_STRVAL_PP ( params [ 1 ] ) , Z_STRVAL_PP ( params [ 2 ] ) ) ;
2002-08-26 02:21:40 +08:00
} else {
2005-08-22 20:22:16 +08:00
php_error_docref1 ( NULL TSRMLS_CC , Z_STRVAL ( name ) , E_WARNING , " Unable to call %R(%s) " , Z_TYPE ( name ) , Z_UNIVAL ( name ) , Z_STRVAL_PP ( params [ 1 ] ) ) ;
2002-08-26 02:21:40 +08:00
}
} else {
2005-08-22 20:22:16 +08:00
php_error_docref1 ( NULL TSRMLS_CC , Z_STRVAL ( name ) , E_WARNING , " Unable to call %R() " , Z_TYPE ( name ) , Z_UNIVAL ( name ) ) ;
2002-08-26 02:21:40 +08:00
}
1999-04-17 08:37:12 +08:00
}
2001-05-15 03:02:23 +08:00
2005-08-22 20:22:16 +08:00
zval_dtor ( & name ) ;
1999-04-17 08:37:12 +08:00
efree ( params ) ;
}
2000-03-29 09:39:04 +08:00
/* }}} */
1999-04-17 08:37:12 +08:00
2000-11-25 05:05:25 +08:00
/* {{{ proto mixed call_user_func_array(string function_name, array parameters)
Call a user function which is the first parameter with the arguments contained in array */
PHP_FUNCTION ( call_user_func_array )
{
2001-08-30 00:00:30 +08:00
zval * * * func_params , * * func , * * params ;
zval * retval_ptr ;
HashTable * func_params_ht ;
2005-08-22 20:22:16 +08:00
zval name ;
2001-08-30 00:00:30 +08:00
int count ;
int current = 0 ;
if ( ZEND_NUM_ARGS ( ) ! = 2 | | zend_get_parameters_ex ( 2 , & func , & params ) = = FAILURE ) {
2001-05-15 03:02:23 +08:00
WRONG_PARAM_COUNT ;
}
2001-08-30 00:00:30 +08:00
2001-03-10 05:42:26 +08:00
SEPARATE_ZVAL ( params ) ;
2000-12-07 22:54:52 +08:00
convert_to_array_ex ( params ) ;
2000-12-19 03:23:50 +08:00
2005-08-12 07:36:07 +08:00
if ( Z_TYPE_PP ( func ) ! = IS_STRING & &
Z_TYPE_PP ( func ) ! = IS_UNICODE & &
Z_TYPE_PP ( func ) ! = IS_ARRAY ) {
2001-05-15 04:06:06 +08:00
SEPARATE_ZVAL ( func ) ;
convert_to_string_ex ( func ) ;
2001-03-10 05:42:26 +08:00
}
2005-12-17 06:26:43 +08:00
if ( ! zend_is_callable ( * func , 0 , & name ) ) {
2005-08-22 20:22:16 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " First argument is expected to be a valid callback, '%R' was given " , Z_TYPE ( name ) , Z_UNIVAL ( name ) ) ;
zval_dtor ( & name ) ;
2001-05-15 04:06:06 +08:00
RETURN_NULL ( ) ;
}
2000-12-07 22:54:52 +08:00
2001-05-15 04:06:06 +08:00
func_params_ht = Z_ARRVAL_PP ( params ) ;
2000-12-19 03:23:50 +08:00
2001-05-15 04:06:06 +08:00
count = zend_hash_num_elements ( func_params_ht ) ;
2004-07-18 17:55:46 +08:00
if ( count ) {
func_params = safe_emalloc ( sizeof ( zval * * ) , count , 0 ) ;
for ( zend_hash_internal_pointer_reset ( func_params_ht ) ;
zend_hash_get_current_data ( func_params_ht , ( void * * ) & func_params [ current ] ) = = SUCCESS ;
zend_hash_move_forward ( func_params_ht )
) {
current + + ;
}
} else {
func_params = NULL ;
2001-05-15 04:06:06 +08:00
}
2000-12-19 03:23:50 +08:00
2005-01-18 18:38:04 +08:00
if ( call_user_function_ex ( EG ( function_table ) , NULL , * func , & retval_ptr , count , func_params , 0 , NULL TSRMLS_CC ) = = SUCCESS ) {
if ( retval_ptr ) {
COPY_PZVAL_TO_ZVAL ( * return_value , retval_ptr ) ;
}
2001-05-15 03:02:23 +08:00
} else {
2005-08-22 20:22:16 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Unable to call %R() " , Z_TYPE ( name ) , Z_UNIVAL ( name ) ) ;
2001-05-15 03:02:23 +08:00
}
2000-12-19 03:23:50 +08:00
2005-08-22 20:22:16 +08:00
zval_dtor ( & name ) ;
2004-07-18 17:55:46 +08:00
if ( func_params ) {
efree ( func_params ) ;
}
2000-11-25 05:05:25 +08:00
}
/* }}} */
2001-03-03 04:22:14 +08:00
/* {{{ proto mixed call_user_method(string method_name, mixed object [, mixed parameter] [, mixed ...])
Call a user method on a specific object or class */
1999-05-16 19:19:26 +08:00
PHP_FUNCTION ( call_user_method )
1999-04-17 08:37:12 +08:00
{
2001-05-15 03:02:23 +08:00
zval * * * params ;
zval * retval_ptr ;
2001-08-30 00:00:30 +08:00
int arg_count = ZEND_NUM_ARGS ( ) ;
2000-12-19 03:23:50 +08:00
2001-08-30 00:00:30 +08:00
if ( arg_count < 2 ) {
1999-04-17 08:37:12 +08:00
WRONG_PARAM_COUNT ;
}
2003-05-29 20:54:01 +08:00
params = ( zval * * * ) safe_emalloc ( sizeof ( zval * * ) , arg_count , 0 ) ;
2000-12-19 03:23:50 +08:00
2001-08-30 00:00:30 +08:00
if ( zend_get_parameters_array_ex ( arg_count , params ) = = FAILURE ) {
1999-04-17 08:37:12 +08:00
efree ( params ) ;
RETURN_FALSE ;
}
2005-08-12 07:36:07 +08:00
if ( Z_TYPE_PP ( params [ 1 ] ) ! = IS_OBJECT & &
Z_TYPE_PP ( params [ 1 ] ) ! = IS_STRING & &
Z_TYPE_PP ( params [ 1 ] ) ! = IS_UNICODE ) {
2002-08-24 09:19:28 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Second argument is not an object or class name " ) ;
1999-04-17 08:37:12 +08:00
efree ( params ) ;
RETURN_FALSE ;
}
2001-08-30 00:00:30 +08:00
1999-08-06 23:25:11 +08:00
SEPARATE_ZVAL ( params [ 0 ] ) ;
convert_to_string ( * params [ 0 ] ) ;
2001-08-30 00:00:30 +08:00
2001-10-29 17:45:47 +08:00
if ( call_user_function_ex ( EG ( function_table ) , params [ 1 ] , * params [ 0 ] , & retval_ptr , arg_count - 2 , params + 2 , 0 , NULL TSRMLS_CC ) = = SUCCESS & & retval_ptr ) {
1999-12-20 02:58:27 +08:00
COPY_PZVAL_TO_ZVAL ( * return_value , retval_ptr ) ;
1999-04-17 08:37:12 +08:00
} else {
2002-08-24 09:19:28 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Unable to call %s() " , Z_STRVAL_PP ( params [ 0 ] ) ) ;
1999-04-17 08:37:12 +08:00
}
efree ( params ) ;
}
2000-03-29 09:39:04 +08:00
/* }}} */
1999-04-17 08:37:12 +08:00
2001-03-03 04:22:14 +08:00
/* {{{ proto mixed call_user_method_array(string method_name, mixed object, array params)
Call a user method on a specific object or class using a parameter array */
2000-12-08 22:37:49 +08:00
PHP_FUNCTION ( call_user_method_array )
{
2001-08-30 00:00:30 +08:00
zval * * method_name , * * obj , * * params , * * * method_args = NULL , * retval_ptr ;
2000-12-08 22:37:49 +08:00
HashTable * params_ar ;
2001-08-30 00:00:30 +08:00
int num_elems , element = 0 ;
2000-12-19 03:23:50 +08:00
2001-05-15 03:02:23 +08:00
2001-08-30 00:00:30 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 3 | | zend_get_parameters_ex ( 3 , & method_name , & obj , & params ) = = FAILURE ) {
2001-05-15 03:02:23 +08:00
WRONG_PARAM_COUNT ;
}
2001-03-03 04:22:14 +08:00
2005-08-12 07:36:07 +08:00
if ( Z_TYPE_PP ( obj ) ! = IS_OBJECT & &
Z_TYPE_PP ( obj ) ! = IS_STRING & &
Z_TYPE_PP ( obj ) ! = IS_UNICODE ) {
2002-08-24 09:19:28 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Second argument is not an object or class name " ) ;
2001-03-03 04:22:14 +08:00
RETURN_FALSE ;
}
SEPARATE_ZVAL ( method_name ) ;
SEPARATE_ZVAL ( params ) ;
2000-12-08 22:37:49 +08:00
convert_to_string_ex ( method_name ) ;
convert_to_array_ex ( params ) ;
2000-12-19 03:23:50 +08:00
2001-05-15 03:02:23 +08:00
params_ar = HASH_OF ( * params ) ;
num_elems = zend_hash_num_elements ( params_ar ) ;
2003-05-29 20:54:01 +08:00
method_args = ( zval * * * ) safe_emalloc ( sizeof ( zval * * ) , num_elems , 0 ) ;
2000-12-08 22:37:49 +08:00
for ( zend_hash_internal_pointer_reset ( params_ar ) ;
2001-08-30 00:00:30 +08:00
zend_hash_get_current_data ( params_ar , ( void * * ) & ( method_args [ element ] ) ) = = SUCCESS ;
zend_hash_move_forward ( params_ar )
) {
2000-12-08 22:37:49 +08:00
element + + ;
2001-08-30 00:00:30 +08:00
}
2001-07-30 16:24:42 +08:00
if ( call_user_function_ex ( EG ( function_table ) , obj , * method_name , & retval_ptr , num_elems , method_args , 0 , NULL TSRMLS_CC ) = = SUCCESS & & retval_ptr ) {
2001-05-15 03:02:23 +08:00
COPY_PZVAL_TO_ZVAL ( * return_value , retval_ptr ) ;
} else {
2002-08-24 09:19:28 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Unable to call %s() " , Z_STRVAL_PP ( method_name ) ) ;
2001-05-15 03:02:23 +08:00
}
2000-12-19 03:23:50 +08:00
2000-12-08 22:37:49 +08:00
efree ( method_args ) ;
}
/* }}} */
2001-08-30 00:00:30 +08:00
2000-01-18 01:33:37 +08:00
void user_shutdown_function_dtor ( php_shutdown_function_entry * shutdown_function_entry )
1999-04-17 08:37:12 +08:00
{
1999-08-06 23:25:11 +08:00
int i ;
1999-04-17 08:37:12 +08:00
2001-08-30 00:00:30 +08:00
for ( i = 0 ; i < shutdown_function_entry - > arg_count ; i + + ) {
1999-08-06 23:25:11 +08:00
zval_ptr_dtor ( & shutdown_function_entry - > arguments [ i ] ) ;
}
efree ( shutdown_function_entry - > arguments ) ;
1999-04-17 08:37:12 +08:00
}
2000-09-02 00:10:17 +08:00
void user_tick_function_dtor ( user_tick_function_entry * tick_function_entry )
{
int i ;
for ( i = 0 ; i < tick_function_entry - > arg_count ; i + + ) {
zval_ptr_dtor ( & tick_function_entry - > arguments [ i ] ) ;
}
efree ( tick_function_entry - > arguments ) ;
}
2000-02-13 08:26:54 +08:00
2001-07-31 12:53:54 +08:00
static int user_shutdown_function_call ( php_shutdown_function_entry * shutdown_function_entry TSRMLS_DC )
2000-02-12 05:14:42 +08:00
{
zval retval ;
2005-08-22 20:22:16 +08:00
zval function_name ;
2005-04-21 22:44:29 +08:00
if ( ! zend_is_callable ( shutdown_function_entry - > arguments [ 0 ] , 0 , & function_name ) ) {
2005-08-22 20:22:16 +08:00
php_error ( E_WARNING , " (Registered shutdown functions) Unable to call %R() - function does not exist " , Z_TYPE ( function_name ) , Z_UNIVAL ( function_name ) ) ;
2005-04-21 22:44:29 +08:00
} else if ( call_user_function ( EG ( function_table ) , NULL ,
shutdown_function_entry - > arguments [ 0 ] ,
& retval ,
shutdown_function_entry - > arg_count - 1 ,
shutdown_function_entry - > arguments + 1
TSRMLS_CC ) = = SUCCESS )
{
2000-02-12 05:14:42 +08:00
zval_dtor ( & retval ) ;
2005-04-21 22:44:29 +08:00
}
2005-08-22 20:22:16 +08:00
zval_dtor ( & function_name ) ;
2000-02-12 05:14:42 +08:00
return 0 ;
}
1999-04-17 08:37:12 +08:00
2001-07-31 12:53:54 +08:00
static void user_tick_function_call ( user_tick_function_entry * tick_fe TSRMLS_DC )
2000-09-02 00:10:17 +08:00
{
zval retval ;
zval * function = tick_fe - > arguments [ 0 ] ;
2002-07-16 22:14:22 +08:00
/* Prevent reentrant calls to the same user ticks function */
if ( ! tick_fe - > calling ) {
tick_fe - > calling = 1 ;
if ( call_user_function ( EG ( function_table ) , NULL ,
function ,
& retval ,
tick_fe - > arg_count - 1 ,
tick_fe - > arguments + 1
TSRMLS_CC ) = = SUCCESS ) {
zval_dtor ( & retval ) ;
2000-09-02 00:10:17 +08:00
2001-08-30 00:00:30 +08:00
} else {
2002-07-16 22:14:22 +08:00
zval * * obj , * * method ;
if ( Z_TYPE_P ( function ) = = IS_STRING ) {
2002-08-24 09:19:28 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Unable to call %s() - function does not exist " , Z_STRVAL_P ( function ) ) ;
2002-07-16 22:14:22 +08:00
} else if ( Z_TYPE_P ( function ) = = IS_ARRAY
& & zend_hash_index_find ( Z_ARRVAL_P ( function ) , 0 , ( void * * ) & obj ) = = SUCCESS
& & zend_hash_index_find ( Z_ARRVAL_P ( function ) , 1 , ( void * * ) & method ) = = SUCCESS
& & Z_TYPE_PP ( obj ) = = IS_OBJECT
& & Z_TYPE_PP ( method ) = = IS_STRING ) {
2005-08-12 07:36:07 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Unable to call %v::%R() - function does not exist " , Z_OBJCE_PP ( obj ) - > name , Z_TYPE_PP ( method ) , Z_UNIVAL_PP ( method ) ) ;
2002-07-16 22:14:22 +08:00
} else {
2002-08-24 09:19:28 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Unable to call tick function " ) ;
2002-07-16 22:14:22 +08:00
}
2001-08-30 00:00:30 +08:00
}
2002-07-16 22:14:22 +08:00
tick_fe - > calling = 0 ;
2000-09-02 00:10:17 +08:00
}
}
static void run_user_tick_functions ( int tick_count )
{
2001-07-28 19:36:37 +08:00
TSRMLS_FETCH ( ) ;
2000-09-02 00:10:17 +08:00
2001-07-31 12:53:54 +08:00
zend_llist_apply ( BG ( user_tick_functions ) , ( llist_apply_func_t ) user_tick_function_call TSRMLS_CC ) ;
2000-09-02 00:10:17 +08:00
}
2001-08-30 00:00:30 +08:00
static int user_tick_function_compare ( user_tick_function_entry * tick_fe1 , user_tick_function_entry * tick_fe2 )
2000-09-02 00:10:17 +08:00
{
zval * func1 = tick_fe1 - > arguments [ 0 ] ;
zval * func2 = tick_fe2 - > arguments [ 0 ] ;
2001-07-30 12:58:07 +08:00
TSRMLS_FETCH ( ) ;
2000-12-19 03:23:50 +08:00
2000-09-02 00:10:17 +08:00
if ( Z_TYPE_P ( func1 ) = = IS_STRING & & Z_TYPE_P ( func2 ) = = IS_STRING ) {
return ( zend_binary_zval_strcmp ( func1 , func2 ) = = 0 ) ;
} else if ( Z_TYPE_P ( func1 ) = = IS_ARRAY & & Z_TYPE_P ( func2 ) = = IS_ARRAY ) {
zval result ;
2001-07-30 12:58:07 +08:00
zend_compare_arrays ( & result , func1 , func2 TSRMLS_CC ) ;
2000-09-02 00:10:17 +08:00
return ( Z_LVAL ( result ) = = 0 ) ;
2001-08-30 00:00:30 +08:00
} else {
2000-09-02 00:10:17 +08:00
return 0 ;
2001-08-30 00:00:30 +08:00
}
2000-09-02 00:10:17 +08:00
}
2000-02-13 08:26:54 +08:00
2005-01-10 00:30:09 +08:00
void php_call_shutdown_functions ( TSRMLS_D )
1999-04-17 08:37:12 +08:00
{
2006-05-19 14:11:02 +08:00
if ( BG ( user_shutdown_function_names ) ) {
2001-08-30 00:00:30 +08:00
zend_try {
zend_hash_apply ( BG ( user_shutdown_function_names ) , ( apply_func_t ) user_shutdown_function_call TSRMLS_CC ) ;
2005-01-10 00:30:09 +08:00
}
zend_end_try ( ) ;
2006-05-19 14:11:02 +08:00
php_free_shutdown_functions ( TSRMLS_C ) ;
}
2005-01-10 00:30:09 +08:00
}
void php_free_shutdown_functions ( TSRMLS_D )
{
if ( BG ( user_shutdown_function_names ) )
zend_try {
2001-08-30 00:00:30 +08:00
zend_hash_destroy ( BG ( user_shutdown_function_names ) ) ;
2004-05-27 02:00:27 +08:00
FREE_HASHTABLE ( BG ( user_shutdown_function_names ) ) ;
2005-01-09 04:44:23 +08:00
BG ( user_shutdown_function_names ) = NULL ;
2001-08-30 00:00:30 +08:00
}
zend_end_try ( ) ;
1999-04-17 08:37:12 +08:00
}
/* {{{ proto void register_shutdown_function(string function_name)
Register a user - level function to be called on request termination */
PHP_FUNCTION ( register_shutdown_function )
{
1999-08-06 23:25:11 +08:00
php_shutdown_function_entry shutdown_function_entry ;
2005-08-22 20:22:16 +08:00
zval function_name ;
1999-08-06 23:25:11 +08:00
int i ;
2000-06-06 03:47:54 +08:00
shutdown_function_entry . arg_count = ZEND_NUM_ARGS ( ) ;
1999-08-06 23:25:11 +08:00
2001-08-30 00:00:30 +08:00
if ( shutdown_function_entry . arg_count < 1 ) {
1999-04-17 08:37:12 +08:00
WRONG_PARAM_COUNT ;
}
1999-08-06 23:25:11 +08:00
2005-04-21 22:44:29 +08:00
shutdown_function_entry . arguments = ( zval * * ) safe_emalloc ( sizeof ( zval * ) , shutdown_function_entry . arg_count , 0 ) ;
2001-08-30 00:00:30 +08:00
if ( zend_get_parameters_array ( ht , shutdown_function_entry . arg_count , shutdown_function_entry . arguments ) = = FAILURE ) {
2006-04-03 21:46:35 +08:00
efree ( shutdown_function_entry . arguments ) ;
1999-08-06 23:25:11 +08:00
RETURN_FALSE ;
2000-06-03 12:16:46 +08:00
}
2003-04-04 02:09:41 +08:00
2005-04-21 22:44:29 +08:00
/* Prevent entering of anything but valid callback (syntax check only!) */
2005-12-17 06:26:43 +08:00
if ( ! zend_is_callable ( shutdown_function_entry . arguments [ 0 ] , 0 , & function_name ) ) {
2005-08-22 20:22:16 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Invalid shutdown callback '%R' passed " , Z_TYPE ( function_name ) , Z_UNIVAL ( function_name ) ) ;
2005-04-21 22:44:29 +08:00
efree ( shutdown_function_entry . arguments ) ;
RETVAL_FALSE ;
} else {
if ( ! BG ( user_shutdown_function_names ) ) {
ALLOC_HASHTABLE ( BG ( user_shutdown_function_names ) ) ;
zend_hash_init ( BG ( user_shutdown_function_names ) , 0 , NULL , ( void ( * ) ( void * ) ) user_shutdown_function_dtor , 0 ) ;
}
1999-08-06 23:25:11 +08:00
2005-04-21 22:44:29 +08:00
for ( i = 0 ; i < shutdown_function_entry . arg_count ; i + + ) {
shutdown_function_entry . arguments [ i ] - > refcount + + ;
}
zend_hash_next_index_insert ( BG ( user_shutdown_function_names ) , & shutdown_function_entry , sizeof ( php_shutdown_function_entry ) , NULL ) ;
}
2005-08-22 20:22:16 +08:00
zval_dtor ( & function_name ) ;
1999-04-17 08:37:12 +08:00
}
/* }}} */
1999-04-26 22:00:49 +08:00
ZEND_API void php_get_highlight_struct ( zend_syntax_highlighter_ini * syntax_highlighter_ini )
1999-04-17 08:37:12 +08:00
{
1999-05-10 02:40:59 +08:00
syntax_highlighter_ini - > highlight_comment = INI_STR ( " highlight.comment " ) ;
syntax_highlighter_ini - > highlight_default = INI_STR ( " highlight.default " ) ;
2001-08-30 00:00:30 +08:00
syntax_highlighter_ini - > highlight_html = INI_STR ( " highlight.html " ) ;
1999-05-10 02:40:59 +08:00
syntax_highlighter_ini - > highlight_keyword = INI_STR ( " highlight.keyword " ) ;
2001-08-30 00:00:30 +08:00
syntax_highlighter_ini - > highlight_string = INI_STR ( " highlight.string " ) ;
1999-04-17 08:37:12 +08:00
}
2002-03-01 00:00:26 +08:00
/* {{{ proto bool highlight_file(string file_name [, bool return] )
1999-04-17 08:37:12 +08:00
Syntax highlight a source file */
PHP_FUNCTION ( highlight_file )
{
2002-01-25 19:27:47 +08:00
zval * filename ;
1999-04-17 08:37:12 +08:00
zend_syntax_highlighter_ini syntax_highlighter_ini ;
2002-03-01 00:00:26 +08:00
zend_bool i = 0 ;
1999-04-17 08:37:12 +08:00
2002-03-01 00:00:26 +08:00
if ( zend_parse_parameters ( ZEND_NUM_ARGS ( ) TSRMLS_CC , " z|b " , & filename , & i ) = = FAILURE ) {
2002-10-05 01:17:01 +08:00
RETURN_FALSE ;
2002-01-25 19:27:47 +08:00
}
2002-01-25 23:43:58 +08:00
convert_to_string ( filename ) ;
2002-01-25 19:27:47 +08:00
2002-05-12 02:35:59 +08:00
if ( php_check_open_basedir ( Z_STRVAL_P ( filename ) TSRMLS_CC ) ) {
RETURN_FALSE ;
}
2002-01-25 19:27:47 +08:00
if ( i ) {
2006-06-03 19:19:44 +08:00
php_output_start_default ( TSRMLS_C ) ;
1999-04-17 08:37:12 +08:00
}
php_get_highlight_struct ( & syntax_highlighter_ini ) ;
2002-01-25 19:27:47 +08:00
if ( highlight_file ( Z_STRVAL_P ( filename ) , & syntax_highlighter_ini TSRMLS_CC ) = = FAILURE ) {
1999-04-17 08:37:12 +08:00
RETURN_FALSE ;
}
2002-01-25 19:27:47 +08:00
if ( i ) {
2006-06-03 19:19:44 +08:00
php_output_get_contents ( return_value TSRMLS_CC ) ;
php_output_discard ( TSRMLS_C ) ;
2002-01-25 19:27:47 +08:00
} else {
RETURN_TRUE ;
}
1999-04-17 08:37:12 +08:00
}
/* }}} */
2003-11-24 09:17:27 +08:00
/* {{{ proto string php_strip_whitespace(string file_name)
Return source with stripped comments and whitespace */
PHP_FUNCTION ( php_strip_whitespace )
{
char * filename ;
int filename_len ;
zend_lex_state original_lex_state ;
zend_file_handle file_handle = { 0 } ;
if ( zend_parse_parameters ( ZEND_NUM_ARGS ( ) TSRMLS_CC , " s " , & filename , & filename_len ) = = FAILURE ) {
RETURN_FALSE ;
}
2006-06-03 19:19:44 +08:00
php_output_start_default ( TSRMLS_C ) ;
2003-11-24 09:17:27 +08:00
file_handle . type = ZEND_HANDLE_FILENAME ;
file_handle . filename = filename ;
file_handle . free_filename = 0 ;
file_handle . opened_path = NULL ;
zend_save_lexical_state ( & original_lex_state TSRMLS_CC ) ;
if ( open_file_for_scanning ( & file_handle TSRMLS_CC ) = = FAILURE ) {
RETURN_EMPTY_STRING ( ) ;
}
zend_strip ( TSRMLS_C ) ;
zend_destroy_file_handle ( & file_handle TSRMLS_CC ) ;
zend_restore_lexical_state ( & original_lex_state TSRMLS_CC ) ;
2006-06-03 19:19:44 +08:00
php_output_get_contents ( return_value TSRMLS_CC ) ;
php_output_discard ( TSRMLS_C ) ;
2003-11-24 09:17:27 +08:00
return ;
}
/* }}} */
2002-03-01 00:00:26 +08:00
/* {{{ proto bool highlight_string(string string [, bool return] )
2002-01-25 19:27:47 +08:00
Syntax highlight a string or optionally return it */
1999-04-17 08:37:12 +08:00
PHP_FUNCTION ( highlight_string )
{
2002-01-25 19:27:47 +08:00
zval * expr ;
1999-04-17 08:37:12 +08:00
zend_syntax_highlighter_ini syntax_highlighter_ini ;
2000-09-13 04:48:33 +08:00
char * hicompiled_string_description ;
2002-03-01 00:00:26 +08:00
zend_bool i = 0 ;
2003-11-24 09:17:27 +08:00
int old_error_reporting = EG ( error_reporting ) ;
2000-12-19 03:23:50 +08:00
2002-03-01 00:00:26 +08:00
if ( zend_parse_parameters ( ZEND_NUM_ARGS ( ) TSRMLS_CC , " z|b " , & expr , & i ) = = FAILURE ) {
2002-10-05 01:17:01 +08:00
RETURN_FALSE ;
1999-04-17 08:37:12 +08:00
}
2002-01-25 23:43:58 +08:00
convert_to_string ( expr ) ;
2000-12-19 03:23:50 +08:00
2002-01-25 19:27:47 +08:00
if ( i ) {
2006-06-03 19:19:44 +08:00
php_output_start_default ( TSRMLS_C ) ;
2002-01-25 19:27:47 +08:00
}
1999-04-17 08:37:12 +08:00
2003-11-24 09:17:27 +08:00
EG ( error_reporting ) = E_ERROR ;
1999-04-17 08:37:12 +08:00
php_get_highlight_struct ( & syntax_highlighter_ini ) ;
2000-12-19 03:23:50 +08:00
2001-07-30 09:56:43 +08:00
hicompiled_string_description = zend_make_compiled_string_description ( " highlighted code " TSRMLS_CC ) ;
1999-04-17 08:37:12 +08:00
2002-01-25 19:27:47 +08:00
if ( highlight_string ( expr , & syntax_highlighter_ini , hicompiled_string_description TSRMLS_CC ) = = FAILURE ) {
2000-09-13 04:48:33 +08:00
efree ( hicompiled_string_description ) ;
1999-04-17 08:37:12 +08:00
RETURN_FALSE ;
}
2000-09-13 04:48:33 +08:00
efree ( hicompiled_string_description ) ;
2002-01-25 19:27:47 +08:00
2003-11-24 09:17:27 +08:00
EG ( error_reporting ) = old_error_reporting ;
2002-01-25 19:27:47 +08:00
if ( i ) {
2006-06-03 19:19:44 +08:00
php_output_get_contents ( return_value TSRMLS_CC ) ;
php_output_discard ( TSRMLS_C ) ;
2002-01-25 19:27:47 +08:00
} else {
RETURN_TRUE ;
}
1999-04-17 08:37:12 +08:00
}
/* }}} */
2000-03-29 09:39:04 +08:00
/* {{{ proto string ini_get(string varname)
Get a configuration option */
1999-04-17 08:37:12 +08:00
PHP_FUNCTION ( ini_get )
{
2005-12-06 06:53:34 +08:00
zval * * varname ;
2000-09-06 02:33:02 +08:00
char * str ;
1999-04-17 08:37:12 +08:00
2001-08-30 00:00:30 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 1 | | zend_get_parameters_ex ( 1 , & varname ) = = FAILURE ) {
1999-04-17 08:37:12 +08:00
WRONG_PARAM_COUNT ;
}
1999-10-06 20:54:45 +08:00
convert_to_string_ex ( varname ) ;
2002-09-04 06:54:02 +08:00
str = zend_ini_string ( Z_STRVAL_PP ( varname ) , Z_STRLEN_PP ( varname ) + 1 , 0 ) ;
1999-04-17 08:37:12 +08:00
2000-09-06 02:33:02 +08:00
if ( ! str ) {
1999-04-17 08:37:12 +08:00
RETURN_FALSE ;
}
2006-01-17 20:18:53 +08:00
RETURN_RT_STRING ( str , 1 ) ;
1999-04-17 08:37:12 +08:00
}
2000-03-29 09:39:04 +08:00
/* }}} */
1999-04-17 08:37:12 +08:00
2001-08-31 01:47:04 +08:00
static int php_ini_get_option ( zend_ini_entry * ini_entry , int num_args , va_list args , zend_hash_key * hash_key )
{
zval * ini_array = va_arg ( args , zval * ) ;
int module_number = va_arg ( args , int ) ;
zval * option ;
2002-10-03 18:42:57 +08:00
if ( module_number ! = 0 & & ini_entry - > module_number ! = module_number ) {
2001-08-31 01:47:04 +08:00
return 0 ;
}
2005-08-12 07:36:07 +08:00
if ( hash_key - > nKeyLength = = 0 | |
2006-02-22 04:12:43 +08:00
hash_key - > type ! = IS_STRING | |
hash_key - > arKey . s [ 0 ] ! = 0 ) {
2001-08-31 01:47:04 +08:00
MAKE_STD_ZVAL ( option ) ;
array_init ( option ) ;
2002-10-03 18:42:57 +08:00
if ( ini_entry - > orig_value ) {
2001-11-13 08:37:49 +08:00
add_assoc_stringl ( option , " global_value " , ini_entry - > orig_value , ini_entry - > orig_value_length , 1 ) ;
} else if ( ini_entry - > value ) {
2001-08-31 01:47:04 +08:00
add_assoc_stringl ( option , " global_value " , ini_entry - > value , ini_entry - > value_length , 1 ) ;
} else {
add_assoc_null ( option , " global_value " ) ;
}
2002-10-03 18:42:57 +08:00
if ( ini_entry - > value ) {
2001-11-13 08:37:49 +08:00
add_assoc_stringl ( option , " local_value " , ini_entry - > value , ini_entry - > value_length , 1 ) ;
2001-08-31 01:47:04 +08:00
} else {
add_assoc_null ( option , " local_value " ) ;
}
2004-04-12 20:22:26 +08:00
add_assoc_long ( option , " access " , ini_entry - > modifiable ) ;
2001-08-31 01:47:04 +08:00
add_assoc_zval_ex ( ini_array , ini_entry - > name , ini_entry - > name_length , option ) ;
}
return 0 ;
}
/* {{{ proto array ini_get_all([string extension])
Get all configuration options */
PHP_FUNCTION ( ini_get_all )
{
char * extname = NULL ;
int extname_len = 0 , extnumber = 0 ;
zend_module_entry * module ;
if ( zend_parse_parameters ( ZEND_NUM_ARGS ( ) TSRMLS_CC , " |s " , & extname , & extname_len ) = = FAILURE ) {
2002-10-05 01:17:01 +08:00
RETURN_FALSE ;
2001-08-31 01:47:04 +08:00
}
zend_ini_sort_entries ( TSRMLS_C ) ;
2002-10-03 18:42:57 +08:00
if ( extname ) {
2001-10-29 06:51:58 +08:00
if ( zend_hash_find ( & module_registry , extname , extname_len + 1 , ( void * * ) & module ) = = FAILURE ) {
2002-08-24 09:19:28 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Unable to find extension '%s' " , extname ) ;
2001-08-31 01:47:04 +08:00
RETURN_FALSE ;
}
extnumber = module - > module_number ;
}
array_init ( return_value ) ;
2002-09-24 18:55:56 +08:00
zend_hash_apply_with_arguments ( EG ( ini_directives ) , ( apply_func_args_t ) php_ini_get_option , 2 , return_value , extnumber TSRMLS_CC ) ;
2001-08-31 01:47:04 +08:00
}
/* }}} */
2002-08-16 09:39:10 +08:00
static int php_ini_check_path ( char * option_name , int option_len , char * new_option_name , int new_option_len )
{
2002-10-03 18:42:57 +08:00
if ( option_len ! = ( new_option_len - 1 ) ) {
2002-08-16 09:39:10 +08:00
return 0 ;
}
2003-10-20 09:59:35 +08:00
return ! strncmp ( option_name , new_option_name , option_len ) ;
2002-08-16 09:39:10 +08:00
}
2000-03-29 09:39:04 +08:00
/* {{{ proto string ini_set(string varname, string newvalue)
2000-08-14 16:37:28 +08:00
Set a configuration option , returns false on error and the old value of the configuration option on success */
2000-02-26 22:53:18 +08:00
PHP_FUNCTION ( ini_set )
1999-04-17 08:37:12 +08:00
{
2005-12-06 06:53:34 +08:00
zval * * varname , * * new_value ;
1999-04-17 08:37:12 +08:00
char * old_value ;
2001-08-30 00:00:30 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 2 | | zend_get_parameters_ex ( 2 , & varname , & new_value ) = = FAILURE ) {
1999-04-17 08:37:12 +08:00
WRONG_PARAM_COUNT ;
}
1999-10-06 20:54:45 +08:00
convert_to_string_ex ( varname ) ;
convert_to_string_ex ( new_value ) ;
1999-04-17 08:37:12 +08:00
2002-09-04 06:54:02 +08:00
old_value = zend_ini_string ( Z_STRVAL_PP ( varname ) , Z_STRLEN_PP ( varname ) + 1 , 0 ) ;
2001-08-30 00:00:30 +08:00
2000-09-06 02:33:02 +08:00
/* copy to return here, because alter might free it! */
1999-04-17 08:37:12 +08:00
if ( old_value ) {
2000-09-06 02:33:02 +08:00
RETVAL_STRING ( old_value , 1 ) ;
1999-04-17 08:37:12 +08:00
} else {
2000-09-06 02:33:02 +08:00
RETVAL_FALSE ;
}
2002-08-16 18:08:32 +08:00
# define _CHECK_PATH(var, ini) php_ini_check_path(Z_STRVAL_PP(var), Z_STRLEN_PP(var), ini, sizeof(ini))
2006-02-19 08:55:22 +08:00
/* basedir check */
if ( PG ( open_basedir ) ) {
2002-08-16 18:08:32 +08:00
if ( _CHECK_PATH ( varname , " error_log " ) | |
_CHECK_PATH ( varname , " java.class.path " ) | |
_CHECK_PATH ( varname , " java.home " ) | |
_CHECK_PATH ( varname , " java.library.path " ) | |
_CHECK_PATH ( varname , " session.save_path " ) | |
_CHECK_PATH ( varname , " vpopmail.directory " ) ) {
2006-02-19 08:55:22 +08:00
2002-08-16 18:08:32 +08:00
if ( php_check_open_basedir ( Z_STRVAL_PP ( new_value ) TSRMLS_CC ) ) {
zval_dtor ( return_value ) ;
RETURN_FALSE ;
}
2002-08-16 09:39:10 +08:00
}
}
2001-10-29 06:51:58 +08:00
if ( zend_alter_ini_entry ( Z_STRVAL_PP ( varname ) , Z_STRLEN_PP ( varname ) + 1 , Z_STRVAL_PP ( new_value ) , Z_STRLEN_PP ( new_value ) ,
2001-08-30 00:00:30 +08:00
PHP_INI_USER , PHP_INI_STAGE_RUNTIME ) = = FAILURE ) {
2000-10-29 19:38:26 +08:00
zval_dtor ( return_value ) ;
1999-04-17 08:37:12 +08:00
RETURN_FALSE ;
}
}
2000-03-29 09:39:04 +08:00
/* }}} */
1999-04-17 08:37:12 +08:00
2003-05-16 09:09:58 +08:00
/* {{{ proto void ini_restore(string varname)
2000-03-29 09:39:04 +08:00
Restore the value of a configuration option specified by varname */
1999-04-17 08:37:12 +08:00
PHP_FUNCTION ( ini_restore )
{
2005-12-06 06:53:34 +08:00
zval * * varname ;
1999-04-17 08:37:12 +08:00
2001-08-30 00:00:30 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 1 | | zend_get_parameters_ex ( 1 , & varname ) = = FAILURE ) {
1999-04-17 08:37:12 +08:00
WRONG_PARAM_COUNT ;
}
1999-10-06 20:54:45 +08:00
convert_to_string_ex ( varname ) ;
1999-04-17 08:37:12 +08:00
2001-10-29 06:51:58 +08:00
zend_restore_ini_entry ( Z_STRVAL_PP ( varname ) , Z_STRLEN_PP ( varname ) + 1 , PHP_INI_STAGE_RUNTIME ) ;
1999-04-17 08:37:12 +08:00
}
2000-03-29 09:39:04 +08:00
/* }}} */
1999-04-17 08:37:12 +08:00
2004-12-28 02:22:50 +08:00
/* {{{ proto string set_include_path(string new_include_path)
2002-11-05 14:05:48 +08:00
Sets the include_path configuration option */
PHP_FUNCTION ( set_include_path )
{
2005-12-06 06:53:34 +08:00
zval * * new_value ;
2002-11-05 14:05:48 +08:00
char * old_value ;
if ( ZEND_NUM_ARGS ( ) ! = 1 | | zend_get_parameters_ex ( 1 , & new_value ) = = FAILURE ) {
WRONG_PARAM_COUNT ;
}
convert_to_string_ex ( new_value ) ;
old_value = zend_ini_string ( " include_path " , sizeof ( " include_path " ) , 0 ) ;
/* copy to return here, because alter might free it! */
if ( old_value ) {
RETVAL_STRING ( old_value , 1 ) ;
} else {
RETVAL_FALSE ;
}
if ( zend_alter_ini_entry ( " include_path " , sizeof ( " include_path " ) ,
Z_STRVAL_PP ( new_value ) , Z_STRLEN_PP ( new_value ) ,
PHP_INI_USER , PHP_INI_STAGE_RUNTIME ) = = FAILURE ) {
zval_dtor ( return_value ) ;
RETURN_FALSE ;
}
}
/* }}} */
/* {{{ proto string get_include_path()
Get the current include_path configuration option */
PHP_FUNCTION ( get_include_path )
{
char * str ;
if ( ZEND_NUM_ARGS ( ) ! = 0 ) {
WRONG_PARAM_COUNT ;
}
str = zend_ini_string ( " include_path " , sizeof ( " include_path " ) , 0 ) ;
if ( str = = NULL ) {
RETURN_FALSE ;
}
RETURN_STRING ( str , 1 ) ;
}
/* }}} */
2003-05-16 09:09:58 +08:00
/* {{{ proto void restore_include_path()
2002-11-05 14:05:48 +08:00
Restore the value of the include_path configuration option */
PHP_FUNCTION ( restore_include_path )
{
if ( ZEND_NUM_ARGS ( ) ! = 0 ) {
WRONG_PARAM_COUNT ;
}
zend_restore_ini_entry ( " include_path " , sizeof ( " include_path " ) ,
PHP_INI_STAGE_RUNTIME ) ;
}
/* }}} */
2005-03-10 22:33:53 +08:00
/* {{{ proto mixed print_r(mixed var [, bool return])
2002-07-25 19:22:20 +08:00
Prints out or returns information about the specified variable */
1999-04-17 08:37:12 +08:00
PHP_FUNCTION ( print_r )
{
2002-07-25 19:22:20 +08:00
zval * var ;
zend_bool i = 0 ;
1999-04-17 08:37:12 +08:00
2002-07-25 19:22:20 +08:00
if ( zend_parse_parameters ( ZEND_NUM_ARGS ( ) TSRMLS_CC , " z|b " , & var , & i ) = = FAILURE ) {
2002-10-05 01:17:01 +08:00
RETURN_FALSE ;
2002-07-25 19:22:20 +08:00
}
if ( i ) {
2006-06-03 19:19:44 +08:00
php_output_start_default ( TSRMLS_C ) ;
1999-04-17 08:37:12 +08:00
}
2004-01-03 21:51:02 +08:00
zend_print_zval_r ( var , 0 TSRMLS_CC ) ;
1999-10-06 20:54:45 +08:00
2002-07-25 19:22:20 +08:00
if ( i ) {
2006-06-03 19:19:44 +08:00
php_output_get_contents ( return_value TSRMLS_CC ) ;
php_output_discard ( TSRMLS_C ) ;
2002-07-25 19:22:20 +08:00
} else {
RETURN_TRUE ;
}
1999-04-17 08:37:12 +08:00
}
2000-03-29 09:39:04 +08:00
/* }}} */
1999-04-17 08:37:12 +08:00
/* This should go back to PHP */
1999-09-05 05:10:39 +08:00
/* {{{ proto int connection_aborted(void)
Returns true if client disconnected */
PHP_FUNCTION ( connection_aborted )
{
2001-08-30 00:00:30 +08:00
RETURN_LONG ( PG ( connection_status ) & PHP_CONNECTION_ABORTED ) ;
1999-09-05 05:10:39 +08:00
}
/* }}} */
/* {{{ proto int connection_status(void)
Returns the connection status bitfield */
PHP_FUNCTION ( connection_status )
{
2001-08-30 00:00:30 +08:00
RETURN_LONG ( PG ( connection_status ) ) ;
1999-09-05 05:10:39 +08:00
}
/* }}} */
2006-06-26 03:17:20 +08:00
/* {{{ proto int ignore_user_abort([string value])
1999-09-05 05:10:39 +08:00
Set whether we want to ignore a user abort event or not */
PHP_FUNCTION ( ignore_user_abort )
{
2005-12-06 06:53:34 +08:00
zval * * arg ;
2001-08-30 00:00:30 +08:00
int old_setting ;
old_setting = PG ( ignore_user_abort ) ;
switch ( ZEND_NUM_ARGS ( ) ) {
case 0 :
break ;
case 1 :
if ( zend_get_parameters_ex ( 1 , & arg ) = = FAILURE ) {
RETURN_FALSE ;
}
2002-09-20 00:01:53 +08:00
convert_to_string_ex ( arg ) ;
zend_alter_ini_entry ( " ignore_user_abort " , sizeof ( " ignore_user_abort " ) , Z_STRVAL_PP ( arg ) , Z_STRLEN_PP ( arg ) , PHP_INI_USER , PHP_INI_STAGE_RUNTIME ) ;
2001-08-30 00:00:30 +08:00
break ;
2002-09-24 18:55:56 +08:00
default :
2001-08-30 00:00:30 +08:00
WRONG_PARAM_COUNT ;
break ;
}
RETURN_LONG ( old_setting ) ;
1999-09-05 05:10:39 +08:00
}
/* }}} */
2001-08-30 00:00:30 +08:00
# if HAVE_GETSERVBYNAME
1999-11-01 09:07:51 +08:00
/* {{{ proto int getservbyname(string service, string protocol)
2002-01-05 15:54:49 +08:00
Returns port associated with service . Protocol must be " tcp " or " udp " */
1999-11-01 09:07:51 +08:00
PHP_FUNCTION ( getservbyname )
{
2005-12-06 06:53:34 +08:00
zval * * name , * * proto ;
1999-11-01 09:07:51 +08:00
struct servent * serv ;
2001-08-30 00:00:30 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 2 | | zend_get_parameters_ex ( 2 , & name , & proto ) = = FAILURE ) {
1999-11-01 09:07:51 +08:00
WRONG_PARAM_COUNT ;
}
convert_to_string_ex ( name ) ;
convert_to_string_ex ( proto ) ;
2001-08-12 01:03:37 +08:00
serv = getservbyname ( Z_STRVAL_PP ( name ) , Z_STRVAL_PP ( proto ) ) ;
1999-11-01 09:07:51 +08:00
2001-08-30 00:00:30 +08:00
if ( serv = = NULL ) {
1999-11-01 09:07:51 +08:00
RETURN_FALSE ;
2001-08-30 00:00:30 +08:00
}
1999-11-01 09:07:51 +08:00
RETURN_LONG ( ntohs ( serv - > s_port ) ) ;
}
/* }}} */
2001-08-30 00:00:30 +08:00
# endif
1999-11-01 09:07:51 +08:00
2001-08-30 00:00:30 +08:00
# if HAVE_GETSERVBYPORT
1999-11-01 09:07:51 +08:00
/* {{{ proto string getservbyport(int port, string protocol)
2002-01-05 15:54:49 +08:00
Returns service name associated with port . Protocol must be " tcp " or " udp " */
1999-11-01 09:07:51 +08:00
PHP_FUNCTION ( getservbyport )
{
2005-12-06 06:53:34 +08:00
zval * * port , * * proto ;
1999-11-01 09:07:51 +08:00
struct servent * serv ;
2001-08-30 00:00:30 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 2 | | zend_get_parameters_ex ( 2 , & port , & proto ) = = FAILURE ) {
1999-11-01 09:07:51 +08:00
WRONG_PARAM_COUNT ;
}
convert_to_long_ex ( port ) ;
convert_to_string_ex ( proto ) ;
2001-08-12 01:03:37 +08:00
serv = getservbyport ( htons ( ( unsigned short ) Z_LVAL_PP ( port ) ) , Z_STRVAL_PP ( proto ) ) ;
1999-11-01 09:07:51 +08:00
2001-08-30 00:00:30 +08:00
if ( serv = = NULL ) {
1999-11-01 09:07:51 +08:00
RETURN_FALSE ;
2001-08-30 00:00:30 +08:00
}
2001-08-12 01:03:37 +08:00
RETURN_STRING ( serv - > s_name , 1 ) ;
1999-11-01 09:07:51 +08:00
}
/* }}} */
2001-08-30 00:00:30 +08:00
# endif
1999-11-01 09:07:51 +08:00
2001-08-30 00:00:30 +08:00
# if HAVE_GETPROTOBYNAME
1999-11-02 11:47:09 +08:00
/* {{{ proto int getprotobyname(string name)
2000-02-24 15:46:56 +08:00
Returns protocol number associated with name as per / etc / protocols */
1999-11-02 11:47:09 +08:00
PHP_FUNCTION ( getprotobyname )
{
2005-12-06 06:53:34 +08:00
zval * * name ;
1999-11-02 11:47:09 +08:00
struct protoent * ent ;
2001-08-30 00:00:30 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 1
| | zend_get_parameters_ex ( 1 , & name ) = = FAILURE ) {
1999-11-02 11:47:09 +08:00
WRONG_PARAM_COUNT ;
}
convert_to_string_ex ( name ) ;
2000-12-19 03:23:50 +08:00
2000-11-27 21:31:21 +08:00
ent = getprotobyname ( Z_STRVAL_PP ( name ) ) ;
1999-11-02 11:47:09 +08:00
2001-08-30 00:00:30 +08:00
if ( ent = = NULL ) {
2000-11-27 21:31:21 +08:00
Z_LVAL_P ( return_value ) = - 1 ;
Z_TYPE_P ( return_value ) = IS_LONG ;
2002-10-05 01:17:01 +08:00
RETURN_FALSE ;
1999-11-02 11:47:09 +08:00
}
RETURN_LONG ( ent - > p_proto ) ;
}
/* }}} */
2001-08-30 00:00:30 +08:00
# endif
2000-12-19 03:23:50 +08:00
2001-08-30 00:00:30 +08:00
# if HAVE_GETPROTOBYNUMBER
1999-11-02 11:47:09 +08:00
/* {{{ proto string getprotobynumber(int proto)
2000-02-24 15:46:56 +08:00
Returns protocol name associated with protocol number proto */
1999-11-02 11:47:09 +08:00
PHP_FUNCTION ( getprotobynumber )
{
2005-12-06 06:53:34 +08:00
zval * * proto ;
1999-11-02 11:47:09 +08:00
struct protoent * ent ;
2001-08-30 00:00:30 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 1 | | zend_get_parameters_ex ( 1 , & proto ) = = FAILURE ) {
1999-11-02 11:47:09 +08:00
WRONG_PARAM_COUNT ;
}
convert_to_long_ex ( proto ) ;
2000-11-27 21:31:21 +08:00
ent = getprotobynumber ( Z_LVAL_PP ( proto ) ) ;
2000-12-19 03:23:50 +08:00
2001-08-30 00:00:30 +08:00
if ( ent = = NULL ) {
1999-11-02 11:47:09 +08:00
RETURN_FALSE ;
2001-08-30 00:00:30 +08:00
}
1999-11-02 11:47:09 +08:00
2001-08-12 01:03:37 +08:00
RETURN_STRING ( ent - > p_name , 1 ) ;
1999-11-02 11:47:09 +08:00
}
/* }}} */
2001-08-30 00:00:30 +08:00
# endif
1999-11-02 11:47:09 +08:00
2001-12-07 17:34:50 +08:00
/* {{{ proto bool register_tick_function(string function_name [, mixed arg [, mixed ... ]])
2000-09-02 00:10:17 +08:00
Registers a tick callback function */
PHP_FUNCTION ( register_tick_function )
{
user_tick_function_entry tick_fe ;
int i ;
2002-07-16 22:14:22 +08:00
tick_fe . calling = 0 ;
2000-09-02 00:10:17 +08:00
tick_fe . arg_count = ZEND_NUM_ARGS ( ) ;
2003-04-03 09:12:47 +08:00
2000-09-02 00:10:17 +08:00
if ( tick_fe . arg_count < 1 ) {
WRONG_PARAM_COUNT ;
}
2003-05-29 20:54:01 +08:00
tick_fe . arguments = ( zval * * ) safe_emalloc ( sizeof ( zval * ) , tick_fe . arg_count , 0 ) ;
2001-08-30 00:00:30 +08:00
2000-09-02 00:10:17 +08:00
if ( zend_get_parameters_array ( ht , tick_fe . arg_count , tick_fe . arguments ) = = FAILURE ) {
2006-04-03 21:46:35 +08:00
efree ( tick_fe . arguments ) ;
2000-09-02 00:10:17 +08:00
RETURN_FALSE ;
}
2000-12-19 03:23:50 +08:00
2000-09-02 00:10:17 +08:00
if ( Z_TYPE_P ( tick_fe . arguments [ 0 ] ) ! = IS_ARRAY )
convert_to_string_ex ( & tick_fe . arguments [ 0 ] ) ;
2000-12-19 03:23:50 +08:00
2000-09-02 00:10:17 +08:00
if ( ! BG ( user_tick_functions ) ) {
2001-08-30 00:00:30 +08:00
BG ( user_tick_functions ) = ( zend_llist * ) emalloc ( sizeof ( zend_llist ) ) ;
zend_llist_init ( BG ( user_tick_functions ) ,
sizeof ( user_tick_function_entry ) ,
2002-02-21 11:32:42 +08:00
( llist_dtor_func_t ) user_tick_function_dtor , 0 ) ;
2000-09-02 00:10:17 +08:00
php_add_tick_function ( run_user_tick_functions ) ;
}
for ( i = 0 ; i < tick_fe . arg_count ; i + + ) {
tick_fe . arguments [ i ] - > refcount + + ;
}
zend_llist_add_element ( BG ( user_tick_functions ) , & tick_fe ) ;
RETURN_TRUE ;
}
/* }}} */
/* {{{ proto void unregister_tick_function(string function_name)
Unregisters a tick callback function */
PHP_FUNCTION ( unregister_tick_function )
{
zval * * function ;
user_tick_function_entry tick_fe ;
2003-04-03 07:11:31 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 1 | | zend_get_parameters_ex ( 1 , & function ) ) {
2000-09-02 00:10:17 +08:00
WRONG_PARAM_COUNT ;
}
2003-04-03 09:12:47 +08:00
if ( ! BG ( user_tick_functions ) ) {
return ;
}
2001-08-30 00:00:30 +08:00
if ( Z_TYPE_PP ( function ) ! = IS_ARRAY ) {
2000-09-02 00:10:17 +08:00
convert_to_string_ex ( function ) ;
2001-08-30 00:00:30 +08:00
}
tick_fe . arguments = ( zval * * ) emalloc ( sizeof ( zval * ) ) ;
2000-09-02 00:10:17 +08:00
tick_fe . arguments [ 0 ] = * function ;
tick_fe . arg_count = 1 ;
2001-08-30 00:00:30 +08:00
zend_llist_del_element ( BG ( user_tick_functions ) , & tick_fe , ( int ( * ) ( void * , void * ) ) user_tick_function_compare ) ;
2000-09-02 00:10:17 +08:00
efree ( tick_fe . arguments ) ;
}
/* }}} */
1999-12-17 07:47:10 +08:00
2001-07-02 19:11:58 +08:00
/* {{{ proto bool is_uploaded_file(string path)
2001-12-07 17:34:50 +08:00
Check if file was created by rfc1867 upload */
2000-09-09 05:58:28 +08:00
PHP_FUNCTION ( is_uploaded_file )
2000-09-09 05:56:47 +08:00
{
zval * * path ;
if ( ! SG ( rfc1867_uploaded_files ) ) {
RETURN_FALSE ;
}
2001-08-30 00:00:30 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 1 | | zend_get_parameters_ex ( 1 , & path ) ! = SUCCESS ) {
2000-09-09 05:56:47 +08:00
ZEND_WRONG_PARAM_COUNT ( ) ;
}
2001-08-30 00:00:30 +08:00
2000-09-09 05:56:47 +08:00
convert_to_string_ex ( path ) ;
2001-10-29 06:51:58 +08:00
if ( zend_hash_exists ( SG ( rfc1867_uploaded_files ) , Z_STRVAL_PP ( path ) , Z_STRLEN_PP ( path ) + 1 ) ) {
2000-09-09 05:56:47 +08:00
RETURN_TRUE ;
} else {
RETURN_FALSE ;
}
}
2000-10-11 19:25:13 +08:00
/* }}} */
2000-09-09 05:56:47 +08:00
2001-07-02 19:11:58 +08:00
/* {{{ proto bool move_uploaded_file(string path, string new_path)
2001-12-07 17:34:50 +08:00
Move a file if and only if it was created by an upload */
2000-09-09 06:31:21 +08:00
PHP_FUNCTION ( move_uploaded_file )
{
zval * * path , * * new_path ;
2001-08-30 00:00:30 +08:00
zend_bool successful = 0 ;
2000-09-09 06:31:21 +08:00
if ( ! SG ( rfc1867_uploaded_files ) ) {
RETURN_FALSE ;
}
2001-08-30 00:00:30 +08:00
if ( ZEND_NUM_ARGS ( ) ! = 2 | | zend_get_parameters_ex ( 2 , & path , & new_path ) ! = SUCCESS ) {
2000-09-09 06:31:21 +08:00
ZEND_WRONG_PARAM_COUNT ( ) ;
}
convert_to_string_ex ( path ) ;
convert_to_string_ex ( new_path ) ;
2001-10-29 06:51:58 +08:00
if ( ! zend_hash_exists ( SG ( rfc1867_uploaded_files ) , Z_STRVAL_PP ( path ) , Z_STRLEN_PP ( path ) + 1 ) ) {
2000-09-09 06:31:21 +08:00
RETURN_FALSE ;
}
2001-04-18 01:06:06 +08:00
2002-03-18 04:56:20 +08:00
if ( php_check_open_basedir ( Z_STRVAL_PP ( new_path ) TSRMLS_CC ) ) {
RETURN_FALSE ;
}
2001-04-30 20:45:02 +08:00
VCWD_UNLINK ( Z_STRVAL_PP ( new_path ) ) ;
2001-08-30 00:00:30 +08:00
if ( rename ( Z_STRVAL_PP ( path ) , Z_STRVAL_PP ( new_path ) ) = = 0 ) {
successful = 1 ;
} else
if ( php_copy_file ( Z_STRVAL_PP ( path ) , Z_STRVAL_PP ( new_path ) TSRMLS_CC ) = = SUCCESS ) {
2001-04-30 20:45:02 +08:00
VCWD_UNLINK ( Z_STRVAL_PP ( path ) ) ;
2001-08-30 00:00:30 +08:00
successful = 1 ;
2000-09-09 06:31:21 +08:00
}
2000-09-09 19:41:14 +08:00
if ( successful ) {
2001-10-29 06:51:58 +08:00
zend_hash_del ( SG ( rfc1867_uploaded_files ) , Z_STRVAL_PP ( path ) , Z_STRLEN_PP ( path ) + 1 ) ;
2000-09-09 19:41:14 +08:00
} else {
2002-08-24 09:19:28 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Unable to move '%s' to '%s' " , Z_STRVAL_PP ( path ) , Z_STRVAL_PP ( new_path ) ) ;
2000-09-09 06:31:21 +08:00
}
2000-09-09 19:41:14 +08:00
RETURN_BOOL ( successful ) ;
2000-09-09 06:31:21 +08:00
}
2000-10-11 19:25:13 +08:00
/* }}} */
2000-09-09 06:31:21 +08:00
2000-10-30 06:42:01 +08:00
static void php_simple_ini_parser_cb ( zval * arg1 , zval * arg2 , int callback_type , zval * arr )
{
zval * element ;
switch ( callback_type ) {
2001-08-30 00:00:30 +08:00
2000-10-30 06:42:01 +08:00
case ZEND_INI_PARSER_ENTRY :
2002-10-03 18:42:57 +08:00
if ( ! arg2 ) {
2001-11-11 20:41:14 +08:00
/* bare string - nothing to do */
break ;
}
2000-10-30 06:42:01 +08:00
ALLOC_ZVAL ( element ) ;
* element = * arg2 ;
zval_copy_ctor ( element ) ;
INIT_PZVAL ( element ) ;
2003-11-10 12:12:38 +08:00
if ( is_numeric_string ( Z_STRVAL_P ( arg1 ) , Z_STRLEN_P ( arg1 ) , NULL , NULL , 0 ) ! = IS_LONG ) {
zend_hash_update ( Z_ARRVAL_P ( arr ) , Z_STRVAL_P ( arg1 ) , Z_STRLEN_P ( arg1 ) + 1 , & element , sizeof ( zval * ) , NULL ) ;
} else {
ulong key = ( ulong ) zend_atoi ( Z_STRVAL_P ( arg1 ) , Z_STRLEN_P ( arg1 ) ) ;
zend_hash_index_update ( Z_ARRVAL_P ( arr ) , key , & element , sizeof ( zval * ) , NULL ) ;
}
2000-10-30 06:42:01 +08:00
break ;
2001-08-30 00:00:30 +08:00
2003-01-19 20:18:46 +08:00
case ZEND_INI_PARSER_POP_ENTRY :
2001-08-30 00:00:30 +08:00
{
2003-01-19 20:18:46 +08:00
zval * hash , * * find_hash ;
2001-08-30 00:00:30 +08:00
2002-10-03 18:42:57 +08:00
if ( ! arg2 ) {
2001-11-11 20:41:14 +08:00
/* bare string - nothing to do */
break ;
}
2003-11-10 12:12:38 +08:00
if ( is_numeric_string ( Z_STRVAL_P ( arg1 ) , Z_STRLEN_P ( arg1 ) , NULL , NULL , 0 ) ! = IS_LONG ) {
if ( zend_hash_find ( Z_ARRVAL_P ( arr ) , Z_STRVAL_P ( arg1 ) , Z_STRLEN_P ( arg1 ) + 1 , ( void * * ) & find_hash ) = = FAILURE ) {
ALLOC_ZVAL ( hash ) ;
INIT_PZVAL ( hash ) ;
array_init ( hash ) ;
2003-01-19 20:18:46 +08:00
2003-11-10 12:12:38 +08:00
zend_hash_update ( Z_ARRVAL_P ( arr ) , Z_STRVAL_P ( arg1 ) , Z_STRLEN_P ( arg1 ) + 1 , & hash , sizeof ( zval * ) , NULL ) ;
} else {
hash = * find_hash ;
}
2001-08-30 00:00:30 +08:00
} else {
2003-11-10 12:12:38 +08:00
ulong key = ( ulong ) zend_atoi ( Z_STRVAL_P ( arg1 ) , Z_STRLEN_P ( arg1 ) ) ;
if ( zend_hash_index_find ( Z_ARRVAL_P ( arr ) , key , ( void * * ) & find_hash ) = = FAILURE ) {
ALLOC_ZVAL ( hash ) ;
INIT_PZVAL ( hash ) ;
array_init ( hash ) ;
zend_hash_index_update ( Z_ARRVAL_P ( arr ) , key , & hash , sizeof ( zval * ) , NULL ) ;
} else {
hash = * find_hash ;
}
2000-10-30 07:34:33 +08:00
}
2003-01-19 20:18:46 +08:00
2001-08-30 00:00:30 +08:00
ALLOC_ZVAL ( element ) ;
* element = * arg2 ;
zval_copy_ctor ( element ) ;
INIT_PZVAL ( element ) ;
2003-01-19 20:18:46 +08:00
add_next_index_zval ( hash , element ) ;
2001-08-30 00:00:30 +08:00
}
break ;
2000-10-30 07:34:33 +08:00
case ZEND_INI_PARSER_SECTION :
break ;
}
}
2003-01-19 20:18:46 +08:00
static void php_ini_parser_cb_with_sections ( zval * arg1 , zval * arg2 , int callback_type , zval * arr )
{
TSRMLS_FETCH ( ) ;
if ( callback_type = = ZEND_INI_PARSER_SECTION ) {
MAKE_STD_ZVAL ( BG ( active_ini_file_section ) ) ;
array_init ( BG ( active_ini_file_section ) ) ;
2003-11-10 12:12:38 +08:00
if ( is_numeric_string ( Z_STRVAL_P ( arg1 ) , Z_STRLEN_P ( arg1 ) , NULL , NULL , 0 ) ! = IS_LONG ) {
zend_hash_update ( Z_ARRVAL_P ( arr ) , Z_STRVAL_P ( arg1 ) , Z_STRLEN_P ( arg1 ) + 1 , & BG ( active_ini_file_section ) , sizeof ( zval * ) , NULL ) ;
} else {
ulong key = ( ulong ) zend_atoi ( Z_STRVAL_P ( arg1 ) , Z_STRLEN_P ( arg1 ) ) ;
zend_hash_index_update ( Z_ARRVAL_P ( arr ) , key , & BG ( active_ini_file_section ) , sizeof ( zval * ) , NULL ) ;
}
2003-01-19 20:18:46 +08:00
} else if ( arg2 ) {
zval * active_arr ;
if ( BG ( active_ini_file_section ) ) {
active_arr = BG ( active_ini_file_section ) ;
} else {
active_arr = arr ;
}
php_simple_ini_parser_cb ( arg1 , arg2 , callback_type , active_arr ) ;
}
}
2000-10-30 07:34:33 +08:00
2002-08-13 12:44:45 +08:00
/* {{{ proto array parse_ini_file(string filename [, bool process_sections])
2000-10-30 06:42:01 +08:00
Parse configuration file */
PHP_FUNCTION ( parse_ini_file )
{
2000-10-30 07:34:33 +08:00
zval * * filename , * * process_sections ;
2000-10-30 06:42:01 +08:00
zend_file_handle fh ;
2000-10-30 07:34:33 +08:00
zend_ini_parser_cb_t ini_parser_cb ;
2000-10-30 06:42:01 +08:00
2003-01-21 22:56:40 +08:00
switch ( ZEND_NUM_ARGS ( ) ) {
2001-08-30 00:00:30 +08:00
2000-10-30 07:34:33 +08:00
case 1 :
2001-08-30 00:00:30 +08:00
if ( zend_get_parameters_ex ( 1 , & filename ) = = FAILURE ) {
2000-10-30 07:34:33 +08:00
RETURN_FALSE ;
}
ini_parser_cb = ( zend_ini_parser_cb_t ) php_simple_ini_parser_cb ;
break ;
2001-08-30 00:00:30 +08:00
2000-10-30 07:34:33 +08:00
case 2 :
2001-08-30 00:00:30 +08:00
if ( zend_get_parameters_ex ( 2 , & filename , & process_sections ) = = FAILURE ) {
2000-10-30 07:34:33 +08:00
RETURN_FALSE ;
}
2001-08-30 00:00:30 +08:00
2000-10-30 07:34:33 +08:00
convert_to_boolean_ex ( process_sections ) ;
2001-08-30 00:00:30 +08:00
2000-10-30 07:34:33 +08:00
if ( Z_BVAL_PP ( process_sections ) ) {
BG ( active_ini_file_section ) = NULL ;
ini_parser_cb = ( zend_ini_parser_cb_t ) php_ini_parser_cb_with_sections ;
} else {
ini_parser_cb = ( zend_ini_parser_cb_t ) php_simple_ini_parser_cb ;
}
break ;
2001-08-30 00:00:30 +08:00
2000-10-30 07:34:33 +08:00
default :
ZEND_WRONG_PARAM_COUNT ( ) ;
break ;
2000-10-30 06:42:01 +08:00
}
2000-10-30 07:34:33 +08:00
2000-10-30 06:42:01 +08:00
convert_to_string_ex ( filename ) ;
2002-05-12 03:19:49 +08:00
2003-02-18 17:37:54 +08:00
memset ( & fh , 0 , sizeof ( fh ) ) ;
2000-10-31 07:39:14 +08:00
fh . filename = Z_STRVAL_PP ( filename ) ;
2006-02-21 01:14:18 +08:00
fh . type = ZEND_HANDLE_FILENAME ;
2003-02-18 17:37:54 +08:00
2000-10-30 06:42:01 +08:00
array_init ( return_value ) ;
2000-10-31 07:39:14 +08:00
zend_parse_ini_file ( & fh , 0 , ini_parser_cb , return_value ) ;
2000-10-30 06:42:01 +08:00
}
/* }}} */
2001-08-09 04:05:37 +08:00
static int copy_request_variable ( void * pDest , int num_args , va_list args , zend_hash_key * hash_key )
{
char * prefix , * new_key ;
uint prefix_len , new_key_len ;
zval * * var = ( zval * * ) pDest ;
TSRMLS_FETCH ( ) ;
2001-08-30 00:00:30 +08:00
if ( num_args ! = 2 ) {
2001-08-09 04:05:37 +08:00
return 0 ;
}
prefix = va_arg ( args , char * ) ;
prefix_len = va_arg ( args , uint ) ;
2005-09-30 00:30:15 +08:00
if ( ! prefix_len ) {
if ( ! hash_key - > nKeyLength ) {
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Numeric key detected - possible security hazard. " ) ;
return 0 ;
2006-02-22 21:10:32 +08:00
} else if ( hash_key - > nKeyLength = = sizeof ( " GLOBALS " ) & &
ZEND_U_EQUAL ( hash_key - > type , hash_key - > arKey , hash_key - > nKeyLength - 1 , " GLOBALS " , sizeof ( " GLOBALS " ) - 1 ) ) {
2005-09-30 00:30:15 +08:00
php_error_docref ( NULL TSRMLS_CC , E_WARNING , " Attempted GLOBALS variable overwrite. " ) ;
return 0 ;
}
}
if ( hash_key - > nKeyLength ) {
new_key_len = prefix_len + hash_key - > nKeyLength ;
new_key = ( char * ) emalloc ( new_key_len ) ;
2001-08-09 04:05:37 +08:00
2005-09-30 00:30:15 +08:00
memcpy ( new_key , prefix , prefix_len ) ;
2006-02-22 04:12:43 +08:00
/* FIXME: Unicode support??? */
memcpy ( new_key + prefix_len , hash_key - > arKey . s , hash_key - > nKeyLength ) ;
2005-09-30 00:30:15 +08:00
} else {
new_key_len = spprintf ( & new_key , 0 , " %s%ld " , prefix , hash_key - > h ) ;
}
2001-08-09 04:05:37 +08:00
2004-10-05 04:17:06 +08:00
zend_delete_global_variable ( new_key , new_key_len - 1 TSRMLS_CC ) ;
2002-08-24 08:45:09 +08:00
ZEND_SET_SYMBOL_WITH_LENGTH ( & EG ( symbol_table ) , new_key , new_key_len , * var , ( * var ) - > refcount + 1 , 0 ) ;
2001-08-09 04:05:37 +08:00
efree ( new_key ) ;
return 0 ;
}
2001-10-17 01:08:11 +08:00
/* {{{ proto bool import_request_variables(string types [, string prefix])
2001-08-09 04:05:37 +08:00
Import GET / POST / Cookie variables into the global scope */
PHP_FUNCTION ( import_request_variables )
{
zval * * z_types , * * z_prefix ;
char * types , * prefix ;
uint prefix_len ;
char * p ;
switch ( ZEND_NUM_ARGS ( ) ) {
2001-08-30 00:00:30 +08:00
2001-08-09 04:05:37 +08:00
case 1 :
2001-08-30 00:00:30 +08:00
if ( zend_get_parameters_ex ( 1 , & z_types ) = = FAILURE ) {
2001-08-09 04:05:37 +08:00
RETURN_FALSE ;
}
prefix = " " ;
prefix_len = 0 ;
break ;
2001-08-30 00:00:30 +08:00
2001-08-09 04:05:37 +08:00
case 2 :
2001-08-30 00:00:30 +08:00
if ( zend_get_parameters_ex ( 2 , & z_types , & z_prefix ) = = FAILURE ) {
2001-08-09 04:05:37 +08:00
RETURN_FALSE ;
}
convert_to_string_ex ( z_prefix ) ;
prefix = Z_STRVAL_PP ( z_prefix ) ;
prefix_len = Z_STRLEN_PP ( z_prefix ) ;
break ;
2001-08-30 00:00:30 +08:00
2001-08-09 04:05:37 +08:00
default :
ZEND_WRONG_PARAM_COUNT ( ) ;
}
2001-08-30 00:00:30 +08:00
if ( prefix_len = = 0 ) {
2002-08-24 09:19:28 +08:00
php_error_docref ( NULL TSRMLS_CC , E_NOTICE , " No prefix specified - possible security hazard " ) ;
2001-08-09 04:05:37 +08:00
}
convert_to_string_ex ( z_types ) ;
types = Z_STRVAL_PP ( z_types ) ;
2001-08-30 00:00:30 +08:00
for ( p = types ; p & & * p ; p + + ) {
2001-08-09 04:05:37 +08:00
switch ( * p ) {
2001-08-30 00:00:30 +08:00
2001-08-09 04:05:37 +08:00
case ' g ' :
case ' G ' :
zend_hash_apply_with_arguments ( Z_ARRVAL_P ( PG ( http_globals ) [ TRACK_VARS_GET ] ) , ( apply_func_args_t ) copy_request_variable , 2 , prefix , prefix_len ) ;
break ;
2001-08-30 00:00:30 +08:00
2001-08-09 04:05:37 +08:00
case ' p ' :
case ' P ' :
zend_hash_apply_with_arguments ( Z_ARRVAL_P ( PG ( http_globals ) [ TRACK_VARS_POST ] ) , ( apply_func_args_t ) copy_request_variable , 2 , prefix , prefix_len ) ;
zend_hash_apply_with_arguments ( Z_ARRVAL_P ( PG ( http_globals ) [ TRACK_VARS_FILES ] ) , ( apply_func_args_t ) copy_request_variable , 2 , prefix , prefix_len ) ;
break ;
2001-08-30 00:00:30 +08:00
2001-08-09 04:05:37 +08:00
case ' c ' :
case ' C ' :
zend_hash_apply_with_arguments ( Z_ARRVAL_P ( PG ( http_globals ) [ TRACK_VARS_COOKIE ] ) , ( apply_func_args_t ) copy_request_variable , 2 , prefix , prefix_len ) ;
break ;
}
}
}
2001-08-30 00:00:30 +08:00
/* }}} */
2001-08-09 04:05:37 +08:00
2006-06-27 04:28:30 +08:00
# ifdef HAVE_GETLOADAVG
PHP_FUNCTION ( sys_getloadavg )
{
double load [ 3 ] ;
if ( getloadavg ( load , 3 ) = = - 1 ) {
RETURN_FALSE ;
} else {
array_init ( return_value ) ;
add_index_double ( return_value , 0 , load [ 0 ] ) ;
add_index_double ( return_value , 1 , load [ 1 ] ) ;
add_index_double ( return_value , 2 , load [ 2 ] ) ;
}
}
# endif
1999-04-17 08:37:12 +08:00
/*
* Local variables :
* tab - width : 4
* c - basic - offset : 4
* End :
2001-12-07 21:20:18 +08:00
* vim600 : fdm = marker
* vim : noet sw = 4 ts = 4
2000-12-19 03:23:50 +08:00
*/