⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basic_functions.c

📁 php-4.4.7学习linux时下载的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
{	if (BG(sm_allowed_env_vars)) {		free(BG(sm_allowed_env_vars));	}	BG(sm_allowed_env_vars) = zend_strndup(new_value, new_value_length);	return SUCCESS;}PHP_INI_BEGIN()	PHP_INI_ENTRY_EX("safe_mode_protected_env_vars", SAFE_MODE_PROTECTED_ENV_VARS, PHP_INI_SYSTEM, OnUpdateSafeModeProtectedEnvVars, NULL)	PHP_INI_ENTRY_EX("safe_mode_allowed_env_vars",   SAFE_MODE_ALLOWED_ENV_VARS,   PHP_INI_SYSTEM, OnUpdateSafeModeAllowedEnvVars,   NULL)PHP_INI_END()zend_module_entry basic_functions_module = {    STANDARD_MODULE_HEADER,	"standard",					/* extension name */	basic_functions,			/* function list */	PHP_MINIT(basic),			/* process startup */	PHP_MSHUTDOWN(basic),		/* process shutdown */	PHP_RINIT(basic),			/* request startup */	PHP_RSHUTDOWN(basic),		/* request shutdown */	PHP_MINFO(basic),			/* extension info */    PHP_VERSION,				/* extension version */	STANDARD_MODULE_PROPERTIES};#if defined(HAVE_PUTENV)static void php_putenv_destructor(putenv_entry *pe){	if (pe->previous_value) {#if _MSC_VER		/* 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		putenv(pe->previous_value);	} else {# if HAVE_UNSETENV		unsetenv(pe->key);# elif defined(PHP_WIN32)		SetEnvironmentVariable(pe->key, NULL);# else		char **env;		for (env = environ; env != NULL && *env != NULL; env++) {			if (!strncmp(*env, pe->key, pe->key_len) && (*env)[pe->key_len] == '=') {	/* found it */				*env = "";				break;			}		}# endif	}#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			efree(pe->putenv_string);	efree(pe->key);}#endifstatic void basic_globals_ctor(php_basic_globals *basic_globals_p TSRMLS_DC){	BG(rand_is_seeded) = 0;	BG(mt_rand_is_seeded) = 0;		BG(next) = NULL;	BG(left) = -1;	BG(user_tick_functions) = NULL;	BG(aggregation_table) = NULL;	zend_hash_init(&BG(sm_protected_env_vars), 5, NULL, NULL, 1);	BG(sm_allowed_env_vars) = NULL;	memset(&BG(url_adapt_state), 0, sizeof(BG(url_adapt_state)));	memset(&BG(url_adapt_state_ex), 0, sizeof(BG(url_adapt_state_ex)));	BG(incomplete_class) = php_create_incomplete_class(TSRMLS_C);}static void basic_globals_dtor(php_basic_globals *basic_globals_p TSRMLS_DC){	zend_hash_destroy(&BG(sm_protected_env_vars));	if (BG(sm_allowed_env_vars)) {		free(BG(sm_allowed_env_vars));	}	if (BG(url_adapt_state_ex).tags) {		zend_hash_destroy(BG(url_adapt_state_ex).tags);		free(BG(url_adapt_state_ex).tags);	}}#define PHP_DOUBLE_INFINITY_HIGH       0x7ff00000#define PHP_DOUBLE_QUIET_NAN_HIGH      0xfff80000PHPAPI double php_get_nan(void){#if HAVE_HUGE_VAL_NAN	return HUGE_VAL + -HUGE_VAL;#elif defined(__i386__) || defined(_X86_) || defined(ALPHA) || defined(_ALPHA) || defined(__alpha)	double val = 0.0;	((php_uint32*)&val)[1] = PHP_DOUBLE_QUIET_NAN_HIGH;	((php_uint32*)&val)[0] = 0;	return val;#elif HAVE_ATOF_ACCEPTS_NAN	return atof("NAN");#else	return 0.0/0.0;#endif}PHPAPI double php_get_inf(void){#if HAVE_HUGE_VAL_INF	return HUGE_VAL;#elif defined(__i386__) || defined(_X86_) || defined(ALPHA) || defined(_ALPHA) || defined(__alpha)	double val = 0.0;	((php_uint32*)&val)[1] = PHP_DOUBLE_INFINITY_HIGH;	((php_uint32*)&val)[0] = 0;	return val;#elif HAVE_ATOF_ACCEPTS_INF	return atof("INF");#else	return 1.0/0.0;#endif}PHP_MINIT_FUNCTION(basic){#ifdef ZTS	ts_allocate_id(&basic_globals_id, sizeof(php_basic_globals), (ts_allocate_ctor) basic_globals_ctor, (ts_allocate_dtor) basic_globals_dtor);#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#else	basic_globals_ctor(&basic_globals TSRMLS_CC);#ifdef PHP_WIN32	php_win32_core_globals_ctor(&php_win32_core_globals TSRMLS_CC);#endif#endif	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);	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);#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);	REGISTER_DOUBLE_CONSTANT("INF", php_get_inf(), CONST_CS | CONST_PERSISTENT);	REGISTER_DOUBLE_CONSTANT("NAN", php_get_nan(), CONST_CS | CONST_PERSISTENT);#if ENABLE_TEST_CLASS	test_class_startup();#endif	REGISTER_INI_ENTRIES();	register_phpinfo_constants(INIT_FUNC_ARGS_PASSTHRU);	register_html_constants(INIT_FUNC_ARGS_PASSTHRU);	register_string_constants(INIT_FUNC_ARGS_PASSTHRU);	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(string_filters) (INIT_FUNC_ARGS_PASSTHRU);#if defined(HAVE_LOCALECONV) && defined(ZTS)	PHP_MINIT(localeconv) (INIT_FUNC_ARGS_PASSTHRU);#endif#if defined(HAVE_NL_LANGINFO)	PHP_MINIT(nl_langinfo) (INIT_FUNC_ARGS_PASSTHRU);#endif#if HAVE_CRYPT	PHP_MINIT(crypt) (INIT_FUNC_ARGS_PASSTHRU);#endif	PHP_MINIT(lcg) (INIT_FUNC_ARGS_PASSTHRU);	PHP_MINIT(dir) (INIT_FUNC_ARGS_PASSTHRU);	PHP_MINIT(syslog) (INIT_FUNC_ARGS_PASSTHRU);	PHP_MINIT(array) (INIT_FUNC_ARGS_PASSTHRU);	PHP_MINIT(assert) (INIT_FUNC_ARGS_PASSTHRU);	PHP_MINIT(url_scanner_ex) (INIT_FUNC_ARGS_PASSTHRU);	PHP_MINIT(proc_open) (INIT_FUNC_ARGS_PASSTHRU);	PHP_MINIT(user_streams) (INIT_FUNC_ARGS_PASSTHRU);	PHP_MINIT(imagetypes) (INIT_FUNC_ARGS_PASSTHRU);	php_register_url_stream_wrapper("php", &php_stream_php_wrapper TSRMLS_CC);#ifndef PHP_CURL_URL_WRAPPERS	php_register_url_stream_wrapper("http", &php_stream_http_wrapper TSRMLS_CC);	php_register_url_stream_wrapper("ftp", &php_stream_ftp_wrapper TSRMLS_CC);# ifdef HAVE_OPENSSL_EXT	php_register_url_stream_wrapper("https", &php_stream_http_wrapper TSRMLS_CC);	php_register_url_stream_wrapper("ftps", &php_stream_ftp_wrapper TSRMLS_CC);# endif#endif	return SUCCESS;}PHP_MSHUTDOWN_FUNCTION(basic){#ifdef ZTS	ts_free_id(basic_globals_id);#ifdef PHP_WIN32	ts_free_id(php_win32_core_globals_id);#endif#else	basic_globals_dtor(&basic_globals TSRMLS_CC);#endif	php_unregister_url_stream_wrapper("php" TSRMLS_CC);#ifndef PHP_CURL_URL_WRAPPERS	php_unregister_url_stream_wrapper("http" TSRMLS_CC);	php_unregister_url_stream_wrapper("ftp" TSRMLS_CC);# ifdef HAVE_OPENSSL_EXT	php_unregister_url_stream_wrapper("https" TSRMLS_CC);	php_unregister_url_stream_wrapper("ftps" TSRMLS_CC);# endif#endif	UNREGISTER_INI_ENTRIES();	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(string_filters) (SHUTDOWN_FUNC_ARGS_PASSTHRU);#if defined(HAVE_LOCALECONV) && defined(ZTS)	PHP_MSHUTDOWN(localeconv) (SHUTDOWN_FUNC_ARGS_PASSTHRU);#endif	return SUCCESS;}PHP_RINIT_FUNCTION(basic){	memset(BG(strtok_table), 0, 256);	BG(strtok_string) = NULL;	BG(strtok_zval) = NULL;	BG(locale_string) = NULL;	BG(user_compare_func_name) = NULL;	BG(array_walk_func_name) = NULL;#ifdef HAVE_MMAP	BG(mmap_file) = NULL;#endif	BG(page_uid) = -1;	BG(page_gid) = -1;	BG(page_inode) = -1;	BG(page_mtime) = -1;#ifdef HAVE_PUTENV	if (zend_hash_init(&BG(putenv_ht), 1, NULL, (void (*)(void *)) php_putenv_destructor, 0) == FAILURE) {		return FAILURE;	}#endif	BG(user_shutdown_function_names) = NULL;	PHP_RINIT(lcg) (INIT_FUNC_ARGS_PASSTHRU);	PHP_RINIT(filestat) (INIT_FUNC_ARGS_PASSTHRU);	PHP_RINIT(syslog) (INIT_FUNC_ARGS_PASSTHRU);	PHP_RINIT(dir) (INIT_FUNC_ARGS_PASSTHRU);	PHP_RINIT(url_scanner_ex) (INIT_FUNC_ARGS_PASSTHRU);	/* Reset magic_quotes_runtime */	PG(magic_quotes_runtime) = INI_BOOL("magic_quotes_runtime");	/* Default to global wrappers only */	FG(stream_wrappers) = NULL;	return SUCCESS;}PHP_RSHUTDOWN_FUNCTION(basic){	if (BG(strtok_zval)) {		zval_ptr_dtor(&BG(strtok_zval));	}	BG(strtok_string) = NULL;	BG(strtok_zval) = NULL;#ifdef HAVE_PUTENV	zend_hash_destroy(&BG(putenv_ht));#endif	/* Check if locale was changed and change it back	   to the value in startup environment */	if (BG(locale_string) != NULL) {		setlocale(LC_ALL, "C");		setlocale(LC_CTYPE, "");	}	STR_FREE(BG(locale_string));	BG(locale_string) = NULL;	/*	 FG(stream_wrappers) are destroyed	 during php_request_shutdown()	 */	PHP_RSHUTDOWN(fsock) (SHUTDOWN_FUNC_ARGS_PASSTHRU);	PHP_RSHUTDOWN(filestat) (SHUTDOWN_FUNC_ARGS_PASSTHRU);	PHP_RSHUTDOWN(syslog) (SHUTDOWN_FUNC_ARGS_PASSTHRU);	PHP_RSHUTDOWN(assert) (SHUTDOWN_FUNC_ARGS_PASSTHRU);	PHP_RSHUTDOWN(url_scanner_ex) (SHUTDOWN_FUNC_ARGS_PASSTHRU);	PHP_RSHUTDOWN(streams) (SHUTDOWN_FUNC_ARGS_PASSTHRU);	if (BG(user_tick_functions)) {		zend_llist_destroy(BG(user_tick_functions));		efree(BG(user_tick_functions));		BG(user_tick_functions) = NULL;	}	if (BG(aggregation_table)) {		zend_hash_destroy(BG(aggregation_table));		efree(BG(aggregation_table));		BG(aggregation_table) = NULL;	}	#ifdef HAVE_MMAP	if (BG(mmap_file)) {		munmap(BG(mmap_file), BG(mmap_len));	}#endif	return SUCCESS;}PHP_MINFO_FUNCTION(basic){	php_info_print_table_start();	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);	php_info_print_table_end();	PHP_MINFO(assert) (ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU);}/* {{{ proto mixed constant(string const_name)   Given the name of a constant this function will return the constants associated value */PHP_FUNCTION(constant){	zval **const_name;	if (ZEND_NUM_ARGS() != 1 ||		zend_get_parameters_ex(1, &const_name) == FAILURE) {		WRONG_PARAM_COUNT;	}	convert_to_string_ex(const_name);	if (!zend_get_constant(Z_STRVAL_PP(const_name), Z_STRLEN_PP(const_name), return_value TSRMLS_CC)) {		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't find constant %s", Z_STRVAL_PP(const_name));		RETURN_NULL();	}}/* }}} *//* {{{ proto int ip2long(string ip_address)   Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address */PHP_FUNCTION(ip2long){	zval **str;	unsigned long int ip;	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &str) == FAILURE) {		WRONG_PARAM_COUNT;	}	convert_to_string_ex(str);	if (Z_STRLEN_PP(str) == 0 || (ip = inet_addr(Z_STRVAL_PP(str))) == INADDR_NONE) {		RETURN_LONG(-1);	}	RETURN_LONG(ntohl(ip));}/* }}} *//* {{{ proto string long2ip(int proper_address)   Converts an (IPv4) Internet network address into a string in Internet standard dotted format */PHP_FUNCTION(long2ip){	zval **num;	unsigned long n;	struct in_addr myaddr;	if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &num) == FAILURE) {		WRONG_PARAM_COUNT;	}	convert_to_string_ex(num);		n = strtoul(Z_STRVAL_PP(num), NULL, 0);	myaddr.s_addr = htonl(n);	RETURN_STRING(inet_ntoa(myaddr), 1);}/* }}} *//******************** * System Functions * ********************//* {{{ proto string getenv(string varname)   Get the value of an environment variable */PHP_FUNCTION(getenv){	char *ptr, *str;	int str_len;	if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) {		RETURN_FALSE;	}	ptr = sapi_getenv(str, str_len TSRMLS_CC);	if (! ptr) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -