diff options
| -rw-r--r-- | ext/msql/php_msql.c | 118 | ||||
| -rw-r--r-- | ext/msql/php_msql.h | 7 | 
2 files changed, 62 insertions, 63 deletions
diff --git a/ext/msql/php_msql.c b/ext/msql/php_msql.c index 7971567a24..9857631b57 100644 --- a/ext/msql/php_msql.c +++ b/ext/msql/php_msql.c @@ -37,6 +37,8 @@  #include <msql.h>  #endif +static php_msql_globals msql_globals; +  #define MSQL_ASSOC		1<<0  #define MSQL_NUM		1<<1  #define MSQL_BOTH		(MSQL_ASSOC|MSQL_NUM) @@ -114,7 +116,7 @@ typedef struct {  } m_query;  #define MSQL_GET_QUERY(res)																			\ -	ZEND_FETCH_RESOURCE(msql_query, m_query *, res, -1, "mSQL result", php_msql_module.le_query);	\ +	ZEND_FETCH_RESOURCE(msql_query, m_query *, res, -1, "mSQL result", msql_globals.le_query);	\  	msql_result = msql_query->result  static void _delete_query(void *arg) @@ -138,32 +140,32 @@ static m_query *php_msql_query_wrapper(m_result *res, int af_rows)  static void _close_msql_link(int link)  {  	msqlClose(link); -	php_msql_module.num_links--; +	msql_globals.num_links--;  }  static void _close_msql_plink(int link)  {  	msqlClose(link); -	php_msql_module.num_persistent--; -	php_msql_module.num_links--; +	msql_globals.num_persistent--; +	msql_globals.num_links--;  }  DLEXPORT PHP_MINIT_FUNCTION(msql)  { -	if (cfg_get_long("msql.allow_persistent",&php_msql_module.allow_persistent)==FAILURE) { -		php_msql_module.allow_persistent=1; +	if (cfg_get_long("msql.allow_persistent",&msql_globals.allow_persistent)==FAILURE) { +		msql_globals.allow_persistent=1;  	} -	if (cfg_get_long("msql.max_persistent",&php_msql_module.max_persistent)==FAILURE) { -		php_msql_module.max_persistent=-1; +	if (cfg_get_long("msql.max_persistent",&msql_globals.max_persistent)==FAILURE) { +		msql_globals.max_persistent=-1;  	} -	if (cfg_get_long("msql.max_links",&php_msql_module.max_links)==FAILURE) { -		php_msql_module.max_links=-1; +	if (cfg_get_long("msql.max_links",&msql_globals.max_links)==FAILURE) { +		msql_globals.max_links=-1;  	} -	php_msql_module.num_persistent=0; -	php_msql_module.le_query = register_list_destructors(_delete_query,NULL); -	php_msql_module.le_link = register_list_destructors(_close_msql_link,NULL); -	php_msql_module.le_plink = register_list_destructors(NULL,_close_msql_plink); +	msql_globals.num_persistent=0; +	msql_globals.le_query = register_list_destructors(_delete_query,NULL); +	msql_globals.le_link = register_list_destructors(_close_msql_link,NULL); +	msql_globals.le_plink = register_list_destructors(NULL,_close_msql_plink);  	msql_module_entry.type = type; @@ -176,8 +178,8 @@ DLEXPORT PHP_MINIT_FUNCTION(msql)  DLEXPORT PHP_RINIT_FUNCTION(msql)  { -	php_msql_module.default_link=-1; -	php_msql_module.num_links = php_msql_module.num_persistent; +	msql_globals.default_link=-1; +	msql_globals.num_links = msql_globals.num_persistent;  	msqlErrMsg[0]=0;  	return SUCCESS;  } @@ -186,16 +188,16 @@ DLEXPORT PHP_MINFO_FUNCTION(msql)  {  	char maxp[16],maxl[16]; -	if (php_msql_module.max_persistent==-1) { +	if (msql_globals.max_persistent==-1) {  		strcpy(maxp,"Unlimited");  	} else { -		snprintf(maxp,15,"%ld",php_msql_module.max_persistent); +		snprintf(maxp,15,"%ld",msql_globals.max_persistent);  		maxp[15]=0;  	} -	if (php_msql_module.max_links==-1) { +	if (msql_globals.max_links==-1) {  		strcpy(maxl,"Unlimited");  	} else { -		snprintf(maxl,15,"%ld",php_msql_module.max_links); +		snprintf(maxl,15,"%ld",msql_globals.max_links);  		maxl[15]=0;  	}  	php_printf("<table>" @@ -203,9 +205,9 @@ DLEXPORT PHP_MINFO_FUNCTION(msql)  				"<tr><td>Persistent links:</td><td>%d/%s</td></tr>\n"  				"<tr><td>Total links:</td><td>%d/%s</td></tr>\n"  				"</table>\n", -				(php_msql_module.allow_persistent?"Yes":"No"), -				php_msql_module.num_persistent,maxp, -				php_msql_module.num_links,maxl); +				(msql_globals.allow_persistent?"Yes":"No"), +				msql_globals.num_persistent,maxp, +				msql_globals.num_links,maxl);  } @@ -240,19 +242,19 @@ static void php_msql_do_connect(INTERNAL_FUNCTION_PARAMETERS,int persistent)  			break;  	} -	if (!php_msql_module.allow_persistent) { +	if (!msql_globals.allow_persistent) {  		persistent=0;  	}  	if (persistent) {  		list_entry *le; -		if (php_msql_module.max_links!=-1 && php_msql_module.num_links>=php_msql_module.max_links) { -			php_error(E_WARNING,"mSQL:  Too many open links (%d)",php_msql_module.num_links); +		if (msql_globals.max_links!=-1 && msql_globals.num_links>=msql_globals.max_links) { +			php_error(E_WARNING,"mSQL:  Too many open links (%d)",msql_globals.num_links);  			efree(hashed_details);  			RETURN_FALSE;  		} -		if (php_msql_module.max_persistent!=-1 && php_msql_module.num_persistent>=php_msql_module.max_persistent) { -			php_error(E_WARNING,"mSQL:  Too many open persistent links (%d)",php_msql_module.num_persistent); +		if (msql_globals.max_persistent!=-1 && msql_globals.num_persistent>=msql_globals.max_persistent) { +			php_error(E_WARNING,"mSQL:  Too many open persistent links (%d)",msql_globals.num_persistent);  			efree(hashed_details);  			RETURN_FALSE;  		} @@ -268,16 +270,16 @@ static void php_msql_do_connect(INTERNAL_FUNCTION_PARAMETERS,int persistent)  			}  			/* hash it up */ -			new_le.type = php_msql_module.le_plink; +			new_le.type = msql_globals.le_plink;  			new_le.ptr = (void *) msql;  			if (zend_hash_update(plist, hashed_details, hashed_details_length+1, (void *) &new_le, sizeof(list_entry), NULL)==FAILURE) {  				efree(hashed_details);  				RETURN_FALSE;  			} -			php_msql_module.num_persistent++; -			php_msql_module.num_links++; +			msql_globals.num_persistent++; +			msql_globals.num_links++;  		} else {  /* we do */ -			if (le->type != php_msql_module.le_plink) { +			if (le->type != msql_globals.le_plink) {  				efree(hashed_details);  				RETURN_FALSE;  			} @@ -295,7 +297,7 @@ static void php_msql_do_connect(INTERNAL_FUNCTION_PARAMETERS,int persistent)  #endif  			msql = (int) le->ptr;  		} -		ZEND_REGISTER_RESOURCE(return_value, (void *) msql, php_msql_module.le_plink); +		ZEND_REGISTER_RESOURCE(return_value, (void *) msql, msql_globals.le_plink);  	} else {  		list_entry *index_ptr,new_index_ptr; @@ -313,8 +315,8 @@ static void php_msql_do_connect(INTERNAL_FUNCTION_PARAMETERS,int persistent)  			}  			link = (int) index_ptr->ptr;  			ptr = zend_list_find(link,&type);   /* check if the link is still there */ -			if (ptr && (type==php_msql_module.le_link || type==php_msql_module.le_plink)) { -				return_value->value.lval = php_msql_module.default_link = link; +			if (ptr && (type==msql_globals.le_link || type==msql_globals.le_plink)) { +				return_value->value.lval = msql_globals.default_link = link;  				return_value->type = IS_LONG;  				efree(hashed_details);  				return; @@ -322,8 +324,8 @@ static void php_msql_do_connect(INTERNAL_FUNCTION_PARAMETERS,int persistent)  				zend_hash_del(list,hashed_details,hashed_details_length+1);  			}  		} -		if (php_msql_module.max_links!=-1 && php_msql_module.num_links>=php_msql_module.max_links) { -			php_error(E_WARNING,"mSQL:  Too many open links (%d)",php_msql_module.num_links); +		if (msql_globals.max_links!=-1 && msql_globals.num_links>=msql_globals.max_links) { +			php_error(E_WARNING,"mSQL:  Too many open links (%d)",msql_globals.num_links);  			efree(hashed_details);  			RETURN_FALSE;  		} @@ -333,7 +335,7 @@ static void php_msql_do_connect(INTERNAL_FUNCTION_PARAMETERS,int persistent)  		}  		/* add it to the list */ -		ZEND_REGISTER_RESOURCE(return_value, (void *) msql, php_msql_module.le_plink); +		ZEND_REGISTER_RESOURCE(return_value, (void *) msql, msql_globals.le_plink);  		/* add it to the hash */  		new_index_ptr.ptr = (void *) return_value->value.lval; @@ -342,20 +344,20 @@ static void php_msql_do_connect(INTERNAL_FUNCTION_PARAMETERS,int persistent)  			efree(hashed_details);  			RETURN_FALSE;  		} -		php_msql_module.num_links++; +		msql_globals.num_links++;  	}  	efree(hashed_details); -	php_msql_module.default_link=return_value->value.lval; +	msql_globals.default_link=return_value->value.lval;  }  static int php_msql_get_default_link(INTERNAL_FUNCTION_PARAMETERS)  { -	if (php_msql_module.default_link==-1) { /* no link opened yet, implicitly open one */ +	if (msql_globals.default_link==-1) { /* no link opened yet, implicitly open one */  		ht = 0;  		php_msql_do_connect(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);  	} -	return php_msql_module.default_link; +	return msql_globals.default_link;  } @@ -387,7 +389,7 @@ DLEXPORT PHP_FUNCTION(msql_close)  	switch (ARG_COUNT(ht)) {  		case 0: -			id = php_msql_module.default_link; +			id = msql_globals.default_link;  			break;  		case 1:  			if (getParameters(ht, 1, &msql_link)==FAILURE) { @@ -400,7 +402,7 @@ DLEXPORT PHP_FUNCTION(msql_close)  			break;  	} -	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, php_msql_module.le_link, php_msql_module.le_plink); +	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, msql_globals.le_link, msql_globals.le_plink);  	ZEND_VERIFY_RESOURCE(msql);  	zend_list_delete(id); @@ -436,7 +438,7 @@ DLEXPORT PHP_FUNCTION(msql_select_db)  	} -	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, php_msql_module.le_link, php_msql_module.le_plink); +	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, msql_globals.le_link, msql_globals.le_plink);  	ZEND_VERIFY_RESOURCE(msql);  	convert_to_string(db); @@ -476,7 +478,7 @@ DLEXPORT PHP_FUNCTION(msql_create_db)  			break;  	} -	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, php_msql_module.le_link, php_msql_module.le_plink); +	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, msql_globals.le_link, msql_globals.le_plink);  	ZEND_VERIFY_RESOURCE(msql);  	convert_to_string(db); @@ -515,7 +517,7 @@ DLEXPORT PHP_FUNCTION(msql_drop_db)  			break;  	} -	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, php_msql_module.le_link, php_msql_module.le_plink); +	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, msql_globals.le_link, msql_globals.le_plink);  	ZEND_VERIFY_RESOURCE(msql);  	convert_to_string(db); @@ -542,7 +544,7 @@ DLEXPORT PHP_FUNCTION(msql_query)  			if (getParameters(ht, 1, &query)==FAILURE) {  				WRONG_PARAM_COUNT;  			} -			id = php_msql_module.default_link; +			id = msql_globals.default_link;  			break;  		case 2:  			if (getParameters(ht, 2, &query, &msql_link)==FAILURE) { @@ -555,14 +557,14 @@ DLEXPORT PHP_FUNCTION(msql_query)  			break;  	} -	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, php_msql_module.le_link, php_msql_module.le_plink); +	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, msql_globals.le_link, msql_globals.le_plink);  	ZEND_VERIFY_RESOURCE(msql);  	convert_to_string(query);  	if ((af_rows = msqlQuery(msql,query->value.str.val))==-1) {  		RETURN_FALSE;  	} -	ZEND_REGISTER_RESOURCE(return_value, php_msql_query_wrapper(msqlStoreResult(), af_rows), php_msql_module.le_query); +	ZEND_REGISTER_RESOURCE(return_value, php_msql_query_wrapper(msqlStoreResult(), af_rows), msql_globals.le_query);  }  /* }}} */ @@ -594,7 +596,7 @@ DLEXPORT PHP_FUNCTION(msql_db_query)  			break;  	} -	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, php_msql_module.le_link, php_msql_module.le_plink); +	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, msql_globals.le_link, msql_globals.le_plink);  	ZEND_VERIFY_RESOURCE(msql);  	convert_to_string(db); @@ -606,7 +608,7 @@ DLEXPORT PHP_FUNCTION(msql_db_query)  	if ((af_rows = msqlQuery(msql,query->value.str.val))==-1) {  		RETURN_FALSE;  	} -	ZEND_REGISTER_RESOURCE(return_value, php_msql_query_wrapper(msqlStoreResult(), af_rows), php_msql_module.le_query); +	ZEND_REGISTER_RESOURCE(return_value, php_msql_query_wrapper(msqlStoreResult(), af_rows), msql_globals.le_query);  }  /* }}} */ @@ -635,14 +637,14 @@ DLEXPORT PHP_FUNCTION(msql_list_dbs)  			break;  	} -	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, php_msql_module.le_link, php_msql_module.le_plink); +	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, msql_globals.le_link, msql_globals.le_plink);  	ZEND_VERIFY_RESOURCE(msql);  	if ((msql_result=msqlListDBs(msql))==NULL) {  		php_error(E_WARNING,"Unable to save mSQL query result");  		RETURN_FALSE;  	} -	ZEND_REGISTER_RESOURCE(return_value, php_msql_query_wrapper(msql_result, 0), php_msql_module.le_query); +	ZEND_REGISTER_RESOURCE(return_value, php_msql_query_wrapper(msql_result, 0), msql_globals.le_query);  }  /* }}} */ @@ -674,7 +676,7 @@ DLEXPORT PHP_FUNCTION(msql_list_tables)  			break;  	} -	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, php_msql_module.le_link, php_msql_module.le_plink); +	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, msql_globals.le_link, msql_globals.le_plink);  	ZEND_VERIFY_RESOURCE(msql);  	convert_to_string(db); @@ -685,7 +687,7 @@ DLEXPORT PHP_FUNCTION(msql_list_tables)  		php_error(E_WARNING,"Unable to save mSQL query result");  		RETURN_FALSE;  	} -	ZEND_REGISTER_RESOURCE(return_value, php_msql_query_wrapper(msql_result, 0), php_msql_module.le_query); +	ZEND_REGISTER_RESOURCE(return_value, php_msql_query_wrapper(msql_result, 0), msql_globals.le_query);  }  /* }}} */ @@ -717,7 +719,7 @@ DLEXPORT PHP_FUNCTION(msql_list_fields)  			break;  	} -	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, php_msql_module.le_link, php_msql_module.le_plink); +	msql = (int) zend_fetch_resource_ex(msql_link, id, "mSQL link", 2, msql_globals.le_link, msql_globals.le_plink);  	ZEND_VERIFY_RESOURCE(msql);  	convert_to_string(db); @@ -729,7 +731,7 @@ DLEXPORT PHP_FUNCTION(msql_list_fields)  		php_error(E_WARNING,"Unable to save mSQL query result");  		RETURN_FALSE;  	} -	ZEND_REGISTER_RESOURCE(return_value, php_msql_query_wrapper(msql_result, 0), php_msql_module.le_query); +	ZEND_REGISTER_RESOURCE(return_value, php_msql_query_wrapper(msql_result, 0), msql_globals.le_query);  }  /* }}} */ diff --git a/ext/msql/php_msql.h b/ext/msql/php_msql.h index 0b67c502b3..3c2b33b33b 100644 --- a/ext/msql/php_msql.h +++ b/ext/msql/php_msql.h @@ -40,7 +40,7 @@  #if HAVE_MSQL -zend_module_entry msql_module_entry; +extern zend_module_entry msql_module_entry;  #define msql_module_ptr &msql_module_entry  /* mSQL functions */ @@ -86,11 +86,8 @@ typedef struct {  	int le_query;  	int le_link;  	int le_plink; -} msql_module; +} php_msql_globals; -#ifndef THREAD_SAFE -extern msql_module php_msql_module; -#endif  #else  #define msql_module_ptr NULL  | 
