CVS update: php3/dl/mssql
| From: | shane | Date: | Mon, 07 Sep 1998 16:47:25 +0000 |
| Subject: | CVS update: php3/dl/mssql | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-866@lists.php.net to get a copy of this message | ||
Date: Monday September 7, 1998 @ 12:47
Author: shane
Update of /repository/php3/dl/mssql
In directory asf:/u2/tmp/cvs-serv17341/dl/mssql
Modified Files:
mssql.c mssql.dsp php3_mssql.h
Log Message:
remove printf output in parser for release compiles
fix big API problem in variables.c that was causing a problem in mssql module
backporting mssql from 3.1.
Index: php3/dl/mssql/mssql.c
diff -c php3/dl/mssql/mssql.c:1.2 php3/dl/mssql/mssql.c:1.3
*** php3/dl/mssql/mssql.c:1.2 Fri Aug 14 17:46:59 1998
--- php3/dl/mssql/mssql.c Mon Sep 7 12:47:24 1998
***************
*** 32,42 ****
+----------------------------------------------------------------------+
*/
#ifdef THREAD_SAFE
! #include "tls.h"
#endif
! #ifndef MSVC5
#include "config.h"
#endif
#include "php.h"
--- 32,50 ----
+----------------------------------------------------------------------+
*/
+ #define IS_EXT_MODULE
#ifdef THREAD_SAFE
! # ifndef PHP_31
! # undef THREAD_SAFE /*no need in 3.0*/
! # else
! # include "tls.h"
! DWORD mssqltls;
! static int numthreads=0;
! void *mssql_mutex;
! # endif
#endif
! #if !(WIN32|WINNT)
#include "config.h"
#endif
#include "php.h"
***************
*** 46,53 ****
--- 54,66 ----
#include "php3_mssql.h"
#if HAVE_MSSQL
+ #define SAFE_STRING(s) ((s)?(s):"")
+ #if PHP_31
+ #include "ext/standard/php3_string.h"
+ #else
#include "php3_string.h"
+ #endif
#include "php3_list.h"
#if BROKEN_MSSQL_PCONNECTS
***************
*** 81,116 ****
php3_module_entry mssql_module_entry = {
"Microsoft SQL", mssql_functions, php3_minit_mssql, php3_mshutdown_mssql,
php3_rinit_mssql, php3_rshutdown_mssql, php3_info_mssql, STANDARD_MODULE_PROPERTIES
- // "Microsoft SQL", mssql_functions, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, NULL
};
#if COMPILE_DL
DLEXPORT php3_module_entry *get_module(void) { return &mssql_module_entry; }
#endif
! /*
! BOOL WINAPI DllMain(HANDLE hModule,
! DWORD ul_reason_for_call,
! LPVOID lpReserved)
! {
!
! switch( ul_reason_for_call ) {
! case DLL_PROCESS_ATTACH:
! break;
! case DLL_THREAD_ATTACH:
! break;
! case DLL_THREAD_DETACH:
! break;
! case DLL_PROCESS_DETACH:
! break;
! }
! return 1;
! }
! */
! //THREAD_LS
mssql_module php3_mssql_module;
! static HashTable *resource_list, *resource_plist;
#define CHECK_LINK(link) { if (link==-1) { php3_error(E_WARNING,"MS SQL: A link to the
server could not be established"); RETURN_FALSE; } }
--- 94,119 ----
php3_module_entry mssql_module_entry = {
"Microsoft SQL", mssql_functions, php3_minit_mssql, php3_mshutdown_mssql,
php3_rinit_mssql, php3_rshutdown_mssql, php3_info_mssql, STANDARD_MODULE_PROPERTIES
};
#if COMPILE_DL
DLEXPORT php3_module_entry *get_module(void) { return &mssql_module_entry; }
#endif
!
! #if defined(THREAD_SAFE)
!
! #define msSQL_GLOBAL(a) php3_mssql_module->a
! #define msSQL_TLS_VARS \
! mssql_module *php3_mssql_module=TlsGetValue(mssqltls)
!
! #else
! #define msSQL_GLOBAL(a) php3_mssql_module.a
! #define msSQL_TLS_VARS
mssql_module php3_mssql_module;
! #endif
!
#define CHECK_LINK(link) { if (link==-1) { php3_error(E_WARNING,"MS SQL: A link to the
server could not be established"); RETURN_FALSE; } }
***************
*** 123,129 ****
static int php3_mssql_error_handler(DBPROCESS *dbproc,int severity,int dberr,
int oserr,char *dberrstr,char *oserrstr)
{
! if (severity >= php3_mssql_module.min_error_severity) {
php3_error(E_WARNING,"MS SQL error: %s (severity %d)",dberrstr,severity);
}
return INT_CANCEL;
--- 126,134 ----
static int php3_mssql_error_handler(DBPROCESS *dbproc,int severity,int dberr,
int oserr,char *dberrstr,char *oserrstr)
{
! msSQL_TLS_VARS;
!
! if (severity >= msSQL_GLOBAL(min_error_severity)) {
php3_error(E_WARNING,"MS SQL error: %s (severity %d)",dberrstr,severity);
}
return INT_CANCEL;
***************
*** 134,151 ****
int severity,char *msgtext,char *srvname,
char *procname,DBUSMALLINT line)
{
! if (severity >= php3_mssql_module.min_message_severity) {
php3_error(E_WARNING,"MS SQL message: %s (severity %d)",msgtext,severity);
}
! STR_FREE(php3_mssql_module.server_message);
! php3_mssql_module.server_message = estrdup(msgtext);
return 0;
}
static int _clean_invalid_results(list_entry *le)
{
! if (le->type == php3_mssql_module.le_result) {
mssql_link *mssql_ptr = ((mssql_result *) le->ptr)->mssql_ptr;
if (!mssql_ptr->valid) {
--- 139,160 ----
int severity,char *msgtext,char *srvname,
char *procname,DBUSMALLINT line)
{
! msSQL_TLS_VARS;
!
! if (severity >= msSQL_GLOBAL(min_message_severity)) {
php3_error(E_WARNING,"MS SQL message: %s (severity %d)",msgtext,severity);
}
! STR_FREE(msSQL_GLOBAL(server_message));
! msSQL_GLOBAL(server_message) = estrdup(msgtext);
return 0;
}
static int _clean_invalid_results(list_entry *le)
{
! msSQL_TLS_VARS;
!
! if (le->type == msSQL_GLOBAL(le_result)) {
mssql_link *mssql_ptr = ((mssql_result *) le->ptr)->mssql_ptr;
if (!mssql_ptr->valid) {
***************
*** 159,169 ****
static void _free_mssql_result(mssql_result *result)
{
int i,j;
!
if (result->data) {
for (i=0; i<result->num_rows; i++) {
for (j=0; j<result->num_fields; j++) {
! yystype_destructor(&result->data[i][j] _INLINE_TLS);
}
efree(result->data[i]);
}
--- 168,178 ----
static void _free_mssql_result(mssql_result *result)
{
int i,j;
!
if (result->data) {
for (i=0; i<result->num_rows; i++) {
for (j=0; j<result->num_fields; j++) {
! php3_yystype_destructor(&result->data[i][j]);
}
efree(result->data[i]);
}
***************
*** 183,274 ****
static void _close_mssql_link(mssql_link *mssql_ptr)
{
mssql_ptr->valid = 0;
! _php3_hash_apply(resource_list,(int (*)(void *))_clean_invalid_results);
dbclose(mssql_ptr->link);
dbfreelogin(mssql_ptr->login);
efree(mssql_ptr);
! php3_mssql_module.num_links--;
}
static void _close_mssql_plink(mssql_link *mssql_ptr)
{
dbclose(mssql_ptr->link);
dbfreelogin(mssql_ptr->login);
free(mssql_ptr);
! php3_mssql_module.num_persistent--;
! php3_mssql_module.num_links--;
}
int php3_minit_mssql(INIT_FUNC_ARGS)
{
char *interface_file;
! long compatability_mode;
if (dbinit()==FAIL) {
return FAILURE;
}
dberrhandle((DBERRHANDLE_PROC) php3_mssql_error_handler);
dbmsghandle((DBMSGHANDLE_PROC) php3_mssql_message_handler);
!
if (cfg_get_string("mssql.interface_file",&interface_file)==SUCCESS) {
! // dbsetifile(interface_file);
}
! if
(cfg_get_long("mssql.allow_persistent",&php3_mssql_module.allow_persistent)==FAILURE)
{
! php3_mssql_module.allow_persistent=1;
}
! if
(cfg_get_long("mssql.max_persistent",&php3_mssql_module.max_persistent)==FAILURE) {
! php3_mssql_module.max_persistent=-1;
}
! if (cfg_get_long("mssql.max_links",&php3_mssql_module.max_links)==FAILURE) {
! php3_mssql_module.max_links=-1;
}
! if
(cfg_get_long("mssql.min_error_severity",&php3_mssql_module.cfg_min_error_severity)==FAILURE)
{
! php3_mssql_module.cfg_min_error_severity=10;
}
! if
(cfg_get_long("mssql.min_message_severity",&php3_mssql_module.cfg_min_message_severity)==FAILURE)
{
! php3_mssql_module.cfg_min_message_severity=10;
}
if (cfg_get_long("mssql.compatability_mode",&compatability_mode)==FAILURE) {
compatability_mode = 0;
}
if (compatability_mode) {
! php3_mssql_module.get_column_content = php3_mssql_get_column_content_with_type;
} else {
! php3_mssql_module.get_column_content = php3_mssql_get_column_content_without_type;
}
- php3_mssql_module.num_persistent=0;
- php3_mssql_module.le_link = register_list_destructors(_close_mssql_link,NULL);
- php3_mssql_module.le_plink = register_list_destructors(NULL,_close_mssql_plink);
- php3_mssql_module.le_result = register_list_destructors(_free_mssql_result,NULL);
-
return SUCCESS;
}
int php3_rinit_mssql(INIT_FUNC_ARGS)
{
! php3_mssql_module.default_link=-1;
! php3_mssql_module.num_links = php3_mssql_module.num_persistent;
! php3_mssql_module.appname = "PHP";
! php3_mssql_module.server_message = empty_string;
! php3_mssql_module.min_error_severity = php3_mssql_module.cfg_min_error_severity;
! php3_mssql_module.min_message_severity = php3_mssql_module.cfg_min_message_severity;
return SUCCESS;
}
int php3_mshutdown_mssql(void)
{
dbexit();
return SUCCESS;
}
int php3_rshutdown_mssql(void)
{
! STR_FREE(php3_mssql_module.server_message);
return SUCCESS;
}
--- 192,331 ----
static void _close_mssql_link(mssql_link *mssql_ptr)
{
+ msSQL_TLS_VARS;
+
mssql_ptr->valid = 0;
! _php3_hash_apply(msSQL_GLOBAL(resource_list),(int (*)(void *))_clean_invalid_results);
dbclose(mssql_ptr->link);
dbfreelogin(mssql_ptr->login);
efree(mssql_ptr);
! msSQL_GLOBAL(num_links--);
}
static void _close_mssql_plink(mssql_link *mssql_ptr)
{
+ msSQL_TLS_VARS;
+
dbclose(mssql_ptr->link);
dbfreelogin(mssql_ptr->login);
free(mssql_ptr);
! msSQL_GLOBAL(num_persistent--);
! msSQL_GLOBAL(num_links--);
}
int php3_minit_mssql(INIT_FUNC_ARGS)
{
char *interface_file;
! long compatability_mode,connecttimeout;
! #if defined(THREAD_SAFE)
! mssql_module *php3_mssql_module;
! PHP3_MUTEX_ALLOC(mssql_mutex);
! PHP3_MUTEX_LOCK(mssql_mutex);
! numthreads++;
! if (numthreads==1){
! if (!PHP3_TLS_PROC_STARTUP(mssqltls)){
! PHP3_MUTEX_UNLOCK(mssql_mutex);
! PHP3_MUTEX_FREE(mssql_mutex);
! return FAILURE;
! }
! }
! PHP3_MUTEX_UNLOCK(mssql_mutex);
! if(!PHP3_TLS_THREAD_INIT(mssqltls,php3_mssql_module,mssql_module)){
! PHP3_MUTEX_FREE(mssql_mutex);
! return FAILURE;
! }
! #endif
if (dbinit()==FAIL) {
return FAILURE;
}
dberrhandle((DBERRHANDLE_PROC) php3_mssql_error_handler);
dbmsghandle((DBMSGHANDLE_PROC) php3_mssql_message_handler);
!
if (cfg_get_string("mssql.interface_file",&interface_file)==SUCCESS) {
! //dbsetifile(interface_file);
}
! if
(cfg_get_long("mssql.allow_persistent",&msSQL_GLOBAL(allow_persistent))==FAILURE) {
! msSQL_GLOBAL(allow_persistent)=1;
}
! if (cfg_get_long("mssql.max_persistent",&msSQL_GLOBAL(max_persistent))==FAILURE) {
! msSQL_GLOBAL(max_persistent)=-1;
}
! if (cfg_get_long("mssql.max_links",&msSQL_GLOBAL(max_links))==FAILURE) {
! msSQL_GLOBAL(max_links)=-1;
}
! if
(cfg_get_long("mssql.min_error_severity",&msSQL_GLOBAL(cfg_min_error_severity))==FAILURE)
{
! msSQL_GLOBAL(cfg_min_error_severity)=10;
}
! if
(cfg_get_long("mssql.min_message_severity",&msSQL_GLOBAL(cfg_min_message_severity))==FAILURE)
{
! msSQL_GLOBAL(cfg_min_message_severity)=10;
}
if (cfg_get_long("mssql.compatability_mode",&compatability_mode)==FAILURE) {
compatability_mode = 0;
}
+ if (cfg_get_long("mssql.connect_timeout",&connecttimeout)==FAILURE) {
+ connecttimeout = 5;
+ }
+ if
(cfg_get_long("magic_quotes_runtime",&msSQL_GLOBAL(magic_quotes_runtime))==FAILURE) {
+ msSQL_GLOBAL(magic_quotes_runtime) = 0;
+ }
if (compatability_mode) {
! msSQL_GLOBAL(get_column_content) = php3_mssql_get_column_content_with_type;
} else {
! msSQL_GLOBAL(get_column_content) = php3_mssql_get_column_content_without_type;
}
+ /* set a minimum timeout, and exclude infinite timeouts */
+ if(connecttimeout<1)connecttimeout=1;
+ dbsetlogintime(connecttimeout);
+
+ msSQL_GLOBAL(num_persistent)=0;
+ msSQL_GLOBAL(le_link) = register_list_destructors(_close_mssql_link,NULL);
+ msSQL_GLOBAL(le_plink) = register_list_destructors(NULL,_close_mssql_plink);
+ msSQL_GLOBAL(le_result) = register_list_destructors(_free_mssql_result,NULL);
return SUCCESS;
}
int php3_rinit_mssql(INIT_FUNC_ARGS)
{
! msSQL_TLS_VARS;
!
! msSQL_GLOBAL(default_link)=-1;
! msSQL_GLOBAL(num_links) = msSQL_GLOBAL(num_persistent);
! msSQL_GLOBAL(appname) = "PHP";
! msSQL_GLOBAL(server_message) = empty_string;
! msSQL_GLOBAL(min_error_severity) = msSQL_GLOBAL(cfg_min_error_severity);
! msSQL_GLOBAL(min_message_severity) = msSQL_GLOBAL(cfg_min_message_severity);
return SUCCESS;
}
int php3_mshutdown_mssql(void)
{
+ msSQL_TLS_VARS;
+ #ifdef THREAD_SAFE
+ PHP3_TLS_THREAD_FREE(php3_mssql_module);
+ PHP3_MUTEX_LOCK(mssql_mutex);
+ numthreads--;
+ if (numthreads<1) {
+ PHP3_TLS_PROC_SHUTDOWN(mssqltls);
+ PHP3_MUTEX_UNLOCK(mssql_mutex);
+ PHP3_MUTEX_FREE(mssql_mutex);
+ return SUCCESS;
+ }
+ PHP3_MUTEX_UNLOCK(mssql_mutex);
+ #endif
dbexit();
return SUCCESS;
}
int php3_rshutdown_mssql(void)
{
! msSQL_TLS_VARS;
!
! STR_FREE(msSQL_GLOBAL(server_message));
return SUCCESS;
}
***************
*** 278,293 ****
char *hashed_details;
int hashed_details_length;
mssql_link mssql,*mssql_ptr;
! resource_list = list;
! resource_plist = plist;
switch(ARG_COUNT(ht)) {
case 0: /* defaults */
host=user=passwd=NULL;
- hashed_details_length=6+3;
- hashed_details = (char *) emalloc(hashed_details_length+1);
- strcpy(hashed_details,"mssql___");
break;
case 1: {
pval *yyhost;
--- 335,349 ----
char *hashed_details;
int hashed_details_length;
mssql_link mssql,*mssql_ptr;
+ list_entry *le;
+ msSQL_TLS_VARS;
! msSQL_GLOBAL(resource_list) = list;
! msSQL_GLOBAL(resource_plist) = plist;
switch(ARG_COUNT(ht)) {
case 0: /* defaults */
host=user=passwd=NULL;
break;
case 1: {
pval *yyhost;
***************
*** 298,306 ****
convert_to_string(yyhost);
host = yyhost->value.str.val;
user=passwd=NULL;
- hashed_details_length = yyhost->value.str.len+6+3;
- hashed_details = (char *) emalloc(hashed_details_length+1);
- sprintf(hashed_details,"mssql_%s__",yyhost->value.str.val);
}
break;
case 2: {
--- 354,359 ----
***************
*** 314,322 ****
host = yyhost->value.str.val;
user = yyuser->value.str.val;
passwd=NULL;
- hashed_details_length = yyhost->value.str.len+yyuser->value.str.len+6+3;
- hashed_details = (char *) emalloc(hashed_details_length+1);
-
sprintf(hashed_details,"mssql_%s_%s_",yyhost->value.str.val,yyuser->value.str.val);
}
break;
case 3: {
--- 367,372 ----
***************
*** 331,345 ****
host = yyhost->value.str.val;
user = yyuser->value.str.val;
passwd = yypasswd->value.str.val;
- hashed_details_length =
yyhost->value.str.len+yyuser->value.str.len+yypasswd->value.str.len+6+3;
- hashed_details = (char *) emalloc(hashed_details_length+1);
-
sprintf(hashed_details,"mssql_%s_%s_%s",yyhost->value.str.val,yyuser->value.str.val,yypasswd->value.str.val);
/* SAFE */
}
break;
default:
WRONG_PARAM_COUNT;
break;
}
/* set a DBLOGIN record */
--- 381,395 ----
host = yyhost->value.str.val;
user = yyuser->value.str.val;
passwd = yypasswd->value.str.val;
}
break;
default:
WRONG_PARAM_COUNT;
break;
}
+ hashed_details_length = sizeof("mssql___")-1 +
strlen(SAFE_STRING(host))+strlen(SAFE_STRING(user))+strlen(SAFE_STRING(passwd));
+ hashed_details = (char *) emalloc(hashed_details_length+1);
+ sprintf(hashed_details,"mssql_%s_%s_%s",SAFE_STRING(host), SAFE_STRING(user),
SAFE_STRING(passwd));
/* set a DBLOGIN record */
***************
*** 354,384 ****
if (passwd) {
DBSETLPWD(mssql.login,passwd);
}
! DBSETLAPP(mssql.login,php3_mssql_module.appname);
mssql.valid = 1;
DBSETLVERSION(mssql.login, DBVER60);
// DBSETLTIME(mssql.login, TIMEOUT_INFINITE);
!
! if (!php3_mssql_module.allow_persistent) {
persistent=0;
}
if (persistent) {
- list_entry *le;
/* try to find if we already have this link in our persistent list */
! if (_php3_hash_find(plist, hashed_details, hashed_details_length+1, (void **) &le)==FAILURE)
{ /* we don't */
list_entry new_le;
! if (php3_mssql_module.max_links!=-1 &&
php3_mssql_module.num_links>=php3_mssql_module.max_links) {
! php3_error(E_WARNING,"MS SQL: Too many open links
(%d)",php3_mssql_module.num_links);
efree(hashed_details);
dbfreelogin(mssql.login);
RETURN_FALSE;
}
! if (php3_mssql_module.max_persistent!=-1 &&
php3_mssql_module.num_persistent>=php3_mssql_module.max_persistent) {
! php3_error(E_WARNING,"MS SQL: Too many open persistent links
(%d)",php3_mssql_module.num_persistent);
efree(hashed_details);
dbfreelogin(mssql.login);
RETURN_FALSE;
--- 404,433 ----
if (passwd) {
DBSETLPWD(mssql.login,passwd);
}
! DBSETLAPP(mssql.login,msSQL_GLOBAL(appname));
mssql.valid = 1;
DBSETLVERSION(mssql.login, DBVER60);
// DBSETLTIME(mssql.login, TIMEOUT_INFINITE);
! if (!msSQL_GLOBAL(allow_persistent)) {
persistent=0;
}
if (persistent) {
/* try to find if we already have this link in our persistent list */
! if (_php3_hash_find(plist, hashed_details, hashed_details_length+1,
! (void **) &le)==FAILURE) { /* we don't */
list_entry new_le;
! if (msSQL_GLOBAL(max_links)!=-1 && msSQL_GLOBAL(num_links)>=msSQL_GLOBAL(max_links))
{
! php3_error(E_WARNING,"MS SQL: Too many open links (%d)",msSQL_GLOBAL(num_links));
efree(hashed_details);
dbfreelogin(mssql.login);
RETURN_FALSE;
}
! if (msSQL_GLOBAL(max_persistent)!=-1 &&
msSQL_GLOBAL(num_persistent)>=msSQL_GLOBAL(max_persistent)) {
! php3_error(E_WARNING,"MS SQL: Too many open persistent links
(%d)",msSQL_GLOBAL(num_persistent));
efree(hashed_details);
dbfreelogin(mssql.login);
RETURN_FALSE;
***************
*** 402,408 ****
/* hash it up */
mssql_ptr = (mssql_link *) malloc(sizeof(mssql_link));
memcpy(mssql_ptr,&mssql,sizeof(mssql_link));
! new_le.type = php3_mssql_module.le_plink;
new_le.ptr = mssql_ptr;
if (_php3_hash_update(plist, hashed_details, hashed_details_length+1, (void *) &new_le,
sizeof(list_entry),NULL)==FAILURE) {
free(mssql_ptr);
--- 451,457 ----
/* hash it up */
mssql_ptr = (mssql_link *) malloc(sizeof(mssql_link));
memcpy(mssql_ptr,&mssql,sizeof(mssql_link));
! new_le.type = msSQL_GLOBAL(le_plink);
new_le.ptr = mssql_ptr;
if (_php3_hash_update(plist, hashed_details, hashed_details_length+1, (void *) &new_le,
sizeof(list_entry),NULL)==FAILURE) {
free(mssql_ptr);
***************
*** 410,419 ****
dbfreelogin(mssql.login);
RETURN_FALSE;
}
! php3_mssql_module.num_persistent++;
! php3_mssql_module.num_links++;
} else { /* we do */
! if (le->type != php3_mssql_module.le_plink) {
#if BROKEN_MSSQL_PCONNECTS
log_error("PHP/MS SQL: Hashed persistent link is not a MS SQL
link!",php3_rqst->server);
#endif
--- 459,468 ----
dbfreelogin(mssql.login);
RETURN_FALSE;
}
! msSQL_GLOBAL(num_persistent++);
! msSQL_GLOBAL(num_links++);
} else { /* we do */
! if (le->type != msSQL_GLOBAL(le_plink)) {
#if BROKEN_MSSQL_PCONNECTS
log_error("PHP/MS SQL: Hashed persistent link is not a MS SQL
link!",php3_rqst->server);
#endif
***************
*** 431,437 ****
#if BROKEN_MSSQL_PCONNECTS
log_error("PHP/MS SQL: Unable to reconnect!",php3_rqst->server);
#endif
! /*php3_error(E_WARNING,"MS SQL: Link to server lost, unable to reconnect");*/
_php3_hash_del(plist, hashed_details, hashed_details_length+1);
efree(hashed_details);
RETURN_FALSE;
--- 480,486 ----
#if BROKEN_MSSQL_PCONNECTS
log_error("PHP/MS SQL: Unable to reconnect!",php3_rqst->server);
#endif
! php3_error(E_WARNING,"MS SQL: Link to server lost, unable to reconnect");
_php3_hash_del(plist, hashed_details, hashed_details_length+1);
efree(hashed_details);
RETURN_FALSE;
***************
*** 450,456 ****
}
}
}
! return_value->value.lval = php3_list_insert(mssql_ptr,php3_mssql_module.le_plink);
return_value->type = IS_LONG;
} else { /* non persistent */
list_entry *index_ptr,new_index_ptr;
--- 499,505 ----
}
}
}
! return_value->value.lval = php3_list_insert(mssql_ptr,msSQL_GLOBAL(le_plink));
return_value->type = IS_LONG;
} else { /* non persistent */
list_entry *index_ptr,new_index_ptr;
***************
*** 464,476 ****
int type,link;
void *ptr;
if (index_ptr->type != le_index_ptr) {
RETURN_FALSE;
}
link = (int) index_ptr->ptr;
ptr = php3_list_find(link,&type); /* check if the link is still there */
! if (ptr && (type==php3_mssql_module.le_link || type==php3_mssql_module.le_plink)) {
! return_value->value.lval = php3_mssql_module.default_link = link;
return_value->type = IS_LONG;
efree(hashed_details);
return;
--- 513,529 ----
int type,link;
void *ptr;
+ #ifdef THREAD_SAFE
+ if (index_ptr->type != _php3_le_index_ptr()) {
+ #else
if (index_ptr->type != le_index_ptr) {
+ #endif
RETURN_FALSE;
}
link = (int) index_ptr->ptr;
ptr = php3_list_find(link,&type); /* check if the link is still there */
! if (ptr && (type==msSQL_GLOBAL(le_link) || type==msSQL_GLOBAL(le_plink))) {
! return_value->value.lval = msSQL_GLOBAL(default_link) = link;
return_value->type = IS_LONG;
efree(hashed_details);
return;
***************
*** 478,485 ****
_php3_hash_del(list,hashed_details,hashed_details_length+1);
}
}
! if (php3_mssql_module.max_links!=-1 &&
php3_mssql_module.num_links>=php3_mssql_module.max_links) {
! php3_error(E_WARNING,"MS SQL: Too many open links
(%d)",php3_mssql_module.num_links);
efree(hashed_details);
RETURN_FALSE;
}
--- 531,538 ----
_php3_hash_del(list,hashed_details,hashed_details_length+1);
}
}
! if (msSQL_GLOBAL(max_links)!=-1 && msSQL_GLOBAL(num_links)>=msSQL_GLOBAL(max_links))
{
! php3_error(E_WARNING,"MS SQL: Too many open links (%d)",msSQL_GLOBAL(num_links));
efree(hashed_details);
RETURN_FALSE;
}
***************
*** 501,555 ****
/* add it to the list */
mssql_ptr = (mssql_link *) emalloc(sizeof(mssql_link));
memcpy(mssql_ptr,&mssql,sizeof(mssql_link));
! return_value->value.lval = php3_list_insert(mssql_ptr,php3_mssql_module.le_link);
return_value->type = IS_LONG;
/* add it to the hash */
new_index_ptr.ptr = (void *) return_value->value.lval;
new_index_ptr.type = le_index_ptr;
if (_php3_hash_update(list,hashed_details,hashed_details_length+1,(void *) &new_index_ptr,
sizeof(list_entry),NULL)==FAILURE) {
efree(hashed_details);
RETURN_FALSE;
}
! php3_mssql_module.num_links++;
}
efree(hashed_details);
! php3_mssql_module.default_link=return_value->value.lval;
}
static int php3_mssql_get_default_link(INTERNAL_FUNCTION_PARAMETERS)
{
! if (php3_mssql_module.default_link==-1) { /* no link opened yet, implicitly open one */
HashTable dummy;
_php3_hash_init(&dummy,0,NULL,NULL,0);
php3_mssql_do_connect(&dummy,return_value,list,plist,0);
_php3_hash_destroy(&dummy);
}
! return php3_mssql_module.default_link;
}
! DLEXPORT void php3_mssql_connect(INTERNAL_FUNCTION_PARAMETERS)
{
php3_mssql_do_connect(INTERNAL_FUNCTION_PARAM_PASSTHRU,0);
}
! DLEXPORT void php3_mssql_pconnect(INTERNAL_FUNCTION_PARAMETERS)
{
php3_mssql_do_connect(INTERNAL_FUNCTION_PARAM_PASSTHRU,1);
}
! DLEXPORT void php3_mssql_close(INTERNAL_FUNCTION_PARAMETERS)
{
pval *mssql_link_index;
int id,type;
switch (ARG_COUNT(ht)) {
case 0:
! id = php3_mssql_module.default_link;
break;
case 1:
if (getParameters(ht, 1, &mssql_link_index)==FAILURE) {
--- 554,616 ----
/* add it to the list */
mssql_ptr = (mssql_link *) emalloc(sizeof(mssql_link));
memcpy(mssql_ptr,&mssql,sizeof(mssql_link));
! return_value->value.lval = php3_list_insert(mssql_ptr,msSQL_GLOBAL(le_link));
return_value->type = IS_LONG;
/* add it to the hash */
new_index_ptr.ptr = (void *) return_value->value.lval;
+ #ifdef THREAD_SAFE
+ new_index_ptr.type = _php3_le_index_ptr();
+ #else
new_index_ptr.type = le_index_ptr;
+ #endif
if (_php3_hash_update(list,hashed_details,hashed_details_length+1,(void *) &new_index_ptr,
sizeof(list_entry),NULL)==FAILURE) {
efree(hashed_details);
RETURN_FALSE;
}
! msSQL_GLOBAL(num_links++);
}
efree(hashed_details);
! msSQL_GLOBAL(default_link)=return_value->value.lval;
}
static int php3_mssql_get_default_link(INTERNAL_FUNCTION_PARAMETERS)
{
! msSQL_TLS_VARS;
!
! if (msSQL_GLOBAL(default_link)==-1) { /* no link opened yet, implicitly open one */
HashTable dummy;
_php3_hash_init(&dummy,0,NULL,NULL,0);
php3_mssql_do_connect(&dummy,return_value,list,plist,0);
_php3_hash_destroy(&dummy);
}
! return msSQL_GLOBAL(default_link);
}
! void php3_mssql_connect(INTERNAL_FUNCTION_PARAMETERS)
{
php3_mssql_do_connect(INTERNAL_FUNCTION_PARAM_PASSTHRU,0);
}
! void php3_mssql_pconnect(INTERNAL_FUNCTION_PARAMETERS)
{
php3_mssql_do_connect(INTERNAL_FUNCTION_PARAM_PASSTHRU,1);
}
! void php3_mssql_close(INTERNAL_FUNCTION_PARAMETERS)
{
pval *mssql_link_index;
int id,type;
+ msSQL_TLS_VARS;
+
switch (ARG_COUNT(ht)) {
case 0:
! id = msSQL_GLOBAL(default_link);
break;
case 1:
if (getParameters(ht, 1, &mssql_link_index)==FAILURE) {
***************
*** 564,570 ****
}
php3_list_find(id,&type);
! if (type!=php3_mssql_module.le_link && type!=php3_mssql_module.le_plink) {
php3_error(E_WARNING,"%d is not a MS SQL link index",id);
RETURN_FALSE;
}
--- 625,631 ----
}
php3_list_find(id,&type);
! if (type!=msSQL_GLOBAL(le_link) && type!=msSQL_GLOBAL(le_plink)) {
php3_error(E_WARNING,"%d is not a MS SQL link index",id);
RETURN_FALSE;
}
***************
*** 574,584 ****
}
! DLEXPORT void php3_mssql_select_db(INTERNAL_FUNCTION_PARAMETERS)
{
pval *db,*mssql_link_index;
int id,type;
mssql_link *mssql_ptr;
switch(ARG_COUNT(ht)) {
case 1:
--- 635,647 ----
}
! void php3_mssql_select_db(INTERNAL_FUNCTION_PARAMETERS)
{
pval *db,*mssql_link_index;
int id,type;
mssql_link *mssql_ptr;
+ msSQL_TLS_VARS;
+
switch(ARG_COUNT(ht)) {
case 1:
***************
*** 602,608 ****
CHECK_LINK(id);
mssql_ptr = (mssql_link *) php3_list_find(id,&type);
! if (type!=php3_mssql_module.le_link && type!=php3_mssql_module.le_plink) {
php3_error(E_WARNING,"%d is not a MS SQL link index",id);
RETURN_FALSE;
}
--- 665,671 ----
CHECK_LINK(id);
mssql_ptr = (mssql_link *) php3_list_find(id,&type);
! if (type!=msSQL_GLOBAL(le_link) && type!=msSQL_GLOBAL(le_plink)) {
php3_error(E_WARNING,"%d is not a MS SQL link index",id);
RETURN_FALSE;
}
***************
*** 690,700 ****
return;
}
if (dbwillconvert(coltype(offset),SQLCHAR)) {
! char *res_buf;
int res_length = dbdatlen(mssql_ptr->link,offset);
register char *p;
! res_buf = (char *) emalloc(res_length+1);
memset(res_buf, ' ', res_length+1);
dbconvert(NULL,coltype(offset),dbdata(mssql_ptr->link,offset),
res_length,SQLCHAR,res_buf,-1);
--- 753,763 ----
return;
}
if (dbwillconvert(coltype(offset),SQLCHAR)) {
! unsigned char *res_buf;
int res_length = dbdatlen(mssql_ptr->link,offset);
register char *p;
! res_buf = (unsigned char *) emalloc(res_length+1);
memset(res_buf, ' ', res_length+1);
dbconvert(NULL,coltype(offset),dbdata(mssql_ptr->link,offset),
res_length,SQLCHAR,res_buf,-1);
***************
*** 704,710 ****
p--;
res_length--;
}
! *(++p) = 0; /* put a trailing NULL */
result->value.str.len = res_length;
result->value.str.val = res_buf;
--- 767,773 ----
p--;
res_length--;
}
! *(p) = '\0'; /* put a trailing NULL */
result->value.str.len = res_length;
result->value.str.val = res_buf;
***************
*** 716,722 ****
}
! DLEXPORT void php3_mssql_query(INTERNAL_FUNCTION_PARAMETERS)
{
pval *query,*mssql_link_index;
int id,type,retvalue;
--- 779,785 ----
}
! void php3_mssql_query(INTERNAL_FUNCTION_PARAMETERS)
{
pval *query,*mssql_link_index;
int id,type,retvalue;
***************
*** 726,738 ****
int blocks_initialized=1;
int i,j;
int *column_types;
switch(ARG_COUNT(ht)) {
case 1:
if (getParameters(ht, 1, &query)==FAILURE) {
RETURN_FALSE;
}
! id = php3_mssql_module.default_link;
break;
case 2:
if (getParameters(ht, 2, &query, &mssql_link_index)==FAILURE) {
--- 789,803 ----
int blocks_initialized=1;
int i,j;
int *column_types;
+ msSQL_TLS_VARS;
+
switch(ARG_COUNT(ht)) {
case 1:
if (getParameters(ht, 1, &query)==FAILURE) {
RETURN_FALSE;
}
! id = msSQL_GLOBAL(default_link);
break;
case 2:
if (getParameters(ht, 2, &query, &mssql_link_index)==FAILURE) {
***************
*** 747,764 ****
}
mssql_ptr = (mssql_link *) php3_list_find(id,&type);
! if (type!=php3_mssql_module.le_link && type!=php3_mssql_module.le_plink) {
php3_error(E_WARNING,"%d is not a MS SQL link index",id);
RETURN_FALSE;
}
convert_to_string(query);
if (dbcmd(mssql_ptr->link,query->value.str.val)==FAIL) {
! /*php3_error(E_WARNING,"MS SQL: Unable to set query");*/
RETURN_FALSE;
}
if (dbsqlexec(mssql_ptr->link)==FAIL || dbresults(mssql_ptr->link)==FAIL) {
! /*php3_error(E_WARNING,"MS SQL: Query failed");*/
RETURN_FALSE;
}
--- 812,829 ----
}
mssql_ptr = (mssql_link *) php3_list_find(id,&type);
! if (type!=msSQL_GLOBAL(le_link) && type!=msSQL_GLOBAL(le_plink)) {
php3_error(E_WARNING,"%d is not a MS SQL link index",id);
RETURN_FALSE;
}
convert_to_string(query);
if (dbcmd(mssql_ptr->link,query->value.str.val)==FAIL) {
! php3_error(E_WARNING,"MS SQL: Unable to set query");
RETURN_FALSE;
}
if (dbsqlexec(mssql_ptr->link)==FAIL || dbresults(mssql_ptr->link)==FAIL) {
! php3_error(E_WARNING,"MS SQL: Query failed");
RETURN_FALSE;
}
***************
*** 797,803 ****
}
result->data[i] = (pval *) emalloc(sizeof(pval)*num_fields);
for (j=1; j<=num_fields; j++) {
! php3_mssql_module.get_column_content(mssql_ptr, j, &result->data[i][j-1],
column_types[j-1]);
}
retvalue=dbnextrow(mssql_ptr->link);
dbclrbuf(mssql_ptr->link,DBLASTROW(mssql_ptr->link)-1);
--- 862,868 ----
}
result->data[i] = (pval *) emalloc(sizeof(pval)*num_fields);
for (j=1; j<=num_fields; j++) {
! msSQL_GLOBAL(get_column_content(mssql_ptr, j, &result->data[i][j-1],
column_types[j-1]));
}
retvalue=dbnextrow(mssql_ptr->link);
dbclrbuf(mssql_ptr->link,DBLASTROW(mssql_ptr->link)-1);
***************
*** 845,860 ****
}
}
efree(column_types);
! return_value->value.lval = php3_list_insert(result,php3_mssql_module.le_result);
return_value->type = IS_LONG;
}
! DLEXPORT void php3_mssql_free_result(INTERNAL_FUNCTION_PARAMETERS)
{
pval *mssql_result_index;
mssql_result *result;
int type;
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &mssql_result_index)==FAILURE) {
WRONG_PARAM_COUNT;
--- 910,927 ----
}
}
efree(column_types);
! return_value->value.lval = php3_list_insert(result,msSQL_GLOBAL(le_result));
return_value->type = IS_LONG;
}
! void php3_mssql_free_result(INTERNAL_FUNCTION_PARAMETERS)
{
pval *mssql_result_index;
mssql_result *result;
int type;
+ msSQL_TLS_VARS;
+
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &mssql_result_index)==FAILURE) {
WRONG_PARAM_COUNT;
***************
*** 866,872 ****
}
result = (mssql_result *) php3_list_find(mssql_result_index->value.lval,&type);
! if (type!=php3_mssql_module.le_result) {
// php3_error(E_WARNING,"%d is not a MS SQL result
index",mssql_result_index->value.lval);
RETURN_FALSE;
}
--- 933,939 ----
}
result = (mssql_result *) php3_list_find(mssql_result_index->value.lval,&type);
! if (type!=msSQL_GLOBAL(le_result)) {
// php3_error(E_WARNING,"%d is not a MS SQL result
index",mssql_result_index->value.lval);
RETURN_FALSE;
}
***************
*** 875,891 ****
}
! DLEXPORT void php3_mssql_get_last_message(INTERNAL_FUNCTION_PARAMETERS)
{
! RETURN_STRING(php3_mssql_module.server_message,1);
}
! DLEXPORT void php3_mssql_num_rows(INTERNAL_FUNCTION_PARAMETERS)
{
pval *result_index;
int type,id;
mssql_result *result;
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &result_index)==FAILURE) {
WRONG_PARAM_COUNT;
--- 942,962 ----
}
! void php3_mssql_get_last_message(INTERNAL_FUNCTION_PARAMETERS)
{
! msSQL_TLS_VARS;
!
! RETURN_STRING(msSQL_GLOBAL(server_message),1);
}
! void php3_mssql_num_rows(INTERNAL_FUNCTION_PARAMETERS)
{
pval *result_index;
int type,id;
mssql_result *result;
+ msSQL_TLS_VARS;
+
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &result_index)==FAILURE) {
WRONG_PARAM_COUNT;
***************
*** 895,901 ****
id = result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=php3_mssql_module.le_result) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
--- 966,972 ----
id = result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=msSQL_GLOBAL(le_result)) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
***************
*** 905,915 ****
}
! DLEXPORT void php3_mssql_num_fields(INTERNAL_FUNCTION_PARAMETERS)
{
pval *result_index;
int type,id;
mssql_result *result;
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &result_index)==FAILURE) {
WRONG_PARAM_COUNT;
--- 976,988 ----
}
! void php3_mssql_num_fields(INTERNAL_FUNCTION_PARAMETERS)
{
pval *result_index;
int type,id;
mssql_result *result;
+ msSQL_TLS_VARS;
+
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &result_index)==FAILURE) {
WRONG_PARAM_COUNT;
***************
*** 919,925 ****
id = result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=php3_mssql_module.le_result) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
--- 992,998 ----
id = result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=msSQL_GLOBAL(le_result)) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
***************
*** 929,941 ****
}
! DLEXPORT void php3_mssql_fetch_row(INTERNAL_FUNCTION_PARAMETERS)
{
pval *mssql_result_index;
int type,i,id;
mssql_result *result;
pval field_content;
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &mssql_result_index)==FAILURE) {
WRONG_PARAM_COUNT;
}
--- 1002,1016 ----
}
! void php3_mssql_fetch_row(INTERNAL_FUNCTION_PARAMETERS)
{
pval *mssql_result_index;
int type,i,id;
mssql_result *result;
pval field_content;
+ msSQL_TLS_VARS;
+
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &mssql_result_index)==FAILURE) {
WRONG_PARAM_COUNT;
}
***************
*** 944,950 ****
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=php3_mssql_module.le_result) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
--- 1019,1025 ----
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=msSQL_GLOBAL(le_result)) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
***************
*** 970,975 ****
--- 1045,1052 ----
int type;
int i;
pval *yystype_ptr,tmp;
+ msSQL_TLS_VARS;
+
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &mssql_result_index)==FAILURE) {
WRONG_PARAM_COUNT;
***************
*** 978,984 ****
convert_to_long(mssql_result_index);
result = (mssql_result *) php3_list_find(mssql_result_index->value.lval,&type);
! if (type!=php3_mssql_module.le_result) {
php3_error(E_WARNING,"%d is not a MS SQL result
index",mssql_result_index->value.lval);
RETURN_FALSE;
}
--- 1055,1061 ----
convert_to_long(mssql_result_index);
result = (mssql_result *) php3_list_find(mssql_result_index->value.lval,&type);
! if (type!=msSQL_GLOBAL(le_result)) {
php3_error(E_WARNING,"%d is not a MS SQL result
index",mssql_result_index->value.lval);
RETURN_FALSE;
}
***************
*** 994,1000 ****
for (i=0; i<result->num_fields; i++) {
tmp = result->data[result->cur_row][i];
yystype_copy_constructor(&tmp);
! if (php3_ini.magic_quotes_runtime && tmp.type == IS_STRING) {
tmp.value.str.val =
_php3_addslashes(tmp.value.str.val,tmp.value.str.len,&tmp.value.str.len,1);
}
_php3_hash_index_update(return_value->value.ht, i, (void *) &tmp, sizeof(pval), (void **)
&yystype_ptr);
--- 1071,1077 ----
for (i=0; i<result->num_fields; i++) {
tmp = result->data[result->cur_row][i];
yystype_copy_constructor(&tmp);
! if (msSQL_GLOBAL(magic_quotes_runtime) && tmp.type == IS_STRING) {
tmp.value.str.val =
_php3_addslashes(tmp.value.str.val,tmp.value.str.len,&tmp.value.str.len,1);
}
_php3_hash_index_update(return_value->value.ht, i, (void *) &tmp, sizeof(pval), (void **)
&yystype_ptr);
***************
*** 1004,1010 ****
}
! DLEXPORT void php3_mssql_fetch_object(INTERNAL_FUNCTION_PARAMETERS)
{
php3_mssql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU);
if (return_value->type==IS_ARRAY) {
--- 1081,1087 ----
}
! void php3_mssql_fetch_object(INTERNAL_FUNCTION_PARAMETERS)
{
php3_mssql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU);
if (return_value->type==IS_ARRAY) {
***************
*** 1013,1029 ****
}
! DLEXPORT void php3_mssql_fetch_array(INTERNAL_FUNCTION_PARAMETERS)
{
php3_mssql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU);
}
! DLEXPORT void php3_mssql_data_seek(INTERNAL_FUNCTION_PARAMETERS)
{
pval *mssql_result_index,*offset;
int type,id;
mssql_result *result;
if (ARG_COUNT(ht)!=2 || getParameters(ht, 2, &mssql_result_index, &offset)==FAILURE) {
WRONG_PARAM_COUNT;
}
--- 1090,1108 ----
}
! void php3_mssql_fetch_array(INTERNAL_FUNCTION_PARAMETERS)
{
php3_mssql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU);
}
! void php3_mssql_data_seek(INTERNAL_FUNCTION_PARAMETERS)
{
pval *mssql_result_index,*offset;
int type,id;
mssql_result *result;
+ msSQL_TLS_VARS;
+
if (ARG_COUNT(ht)!=2 || getParameters(ht, 2, &mssql_result_index, &offset)==FAILURE) {
WRONG_PARAM_COUNT;
}
***************
*** 1032,1038 ****
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=php3_mssql_module.le_result) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
--- 1111,1117 ----
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=msSQL_GLOBAL(le_result)) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
***************
*** 1099,1104 ****
--- 1178,1185 ----
pval *mssql_result_index,*offset;
int type,id,field_offset;
mssql_result *result;
+ msSQL_TLS_VARS;
+
switch (ARG_COUNT(ht)) {
case 1:
***************
*** 1123,1129 ****
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=php3_mssql_module.le_result) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
--- 1204,1210 ----
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=msSQL_GLOBAL(le_result)) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
***************
*** 1155,1161 ****
--- 1236,1244 ----
pval *mssql_result_index,*offset;
int type,id,field_offset;
mssql_result *result;
+ msSQL_TLS_VARS;
+
switch (ARG_COUNT(ht)) {
case 1:
if (getParameters(ht, 1, &mssql_result_index)==FAILURE) {
***************
*** 1179,1185 ****
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=php3_mssql_module.le_result) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
--- 1262,1268 ----
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=msSQL_GLOBAL(le_result)) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
***************
*** 1205,1210 ****
--- 1288,1295 ----
pval *mssql_result_index,*offset;
int type,id,field_offset;
mssql_result *result;
+ msSQL_TLS_VARS;
+
switch (ARG_COUNT(ht)) {
case 1:
***************
*** 1229,1235 ****
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=php3_mssql_module.le_result) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
--- 1314,1320 ----
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=msSQL_GLOBAL(le_result)) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
***************
*** 1256,1261 ****
--- 1341,1348 ----
pval *mssql_result_index,*offset;
int type,id,field_offset;
mssql_result *result;
+ msSQL_TLS_VARS;
+
switch (ARG_COUNT(ht)) {
case 1:
***************
*** 1280,1286 ****
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=php3_mssql_module.le_result) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
--- 1367,1373 ----
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=msSQL_GLOBAL(le_result)) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
***************
*** 1302,1313 ****
return_value->type = IS_STRING;
}
! DLEXPORT void php3_mssql_field_seek(INTERNAL_FUNCTION_PARAMETERS)
{
pval *mssql_result_index,*offset;
int type,id,field_offset;
mssql_result *result;
if (ARG_COUNT(ht)!=2 || getParameters(ht, 2, &mssql_result_index, &offset)==FAILURE) {
WRONG_PARAM_COUNT;
}
--- 1389,1402 ----
return_value->type = IS_STRING;
}
! void php3_mssql_field_seek(INTERNAL_FUNCTION_PARAMETERS)
{
pval *mssql_result_index,*offset;
int type,id,field_offset;
mssql_result *result;
+ msSQL_TLS_VARS;
+
if (ARG_COUNT(ht)!=2 || getParameters(ht, 2, &mssql_result_index, &offset)==FAILURE) {
WRONG_PARAM_COUNT;
}
***************
*** 1316,1322 ****
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=php3_mssql_module.le_result) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
--- 1405,1411 ----
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=msSQL_GLOBAL(le_result)) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
***************
*** 1334,1345 ****
}
! DLEXPORT void php3_mssql_result(INTERNAL_FUNCTION_PARAMETERS)
{
pval *row, *field, *mssql_result_index;
int id,type,field_offset=0;
mssql_result *result;
!
if (ARG_COUNT(ht)!=3 || getParameters(ht, 3, &mssql_result_index, &row,
&field)==FAILURE) {
WRONG_PARAM_COUNT;
--- 1423,1435 ----
}
! void php3_mssql_result(INTERNAL_FUNCTION_PARAMETERS)
{
pval *row, *field, *mssql_result_index;
int id,type,field_offset=0;
mssql_result *result;
! msSQL_TLS_VARS;
!
if (ARG_COUNT(ht)!=3 || getParameters(ht, 3, &mssql_result_index, &row,
&field)==FAILURE) {
WRONG_PARAM_COUNT;
***************
*** 1349,1355 ****
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=php3_mssql_module.le_result) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
--- 1439,1445 ----
id = mssql_result_index->value.lval;
result = (mssql_result *) php3_list_find(id,&type);
! if (type!=msSQL_GLOBAL(le_result)) {
php3_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
***************
*** 1391,1410 ****
}
! DLEXPORT void php3_info_mssql(void)
{
char maxp[16],maxl[16];
! if (php3_mssql_module.max_persistent==-1) {
strcpy(maxp,"Unlimited");
} else {
! snprintf(maxp,15,"%ld",php3_mssql_module.max_persistent);
maxp[15]=0;
}
! if (php3_mssql_module.max_links==-1) {
strcpy(maxl,"Unlimited");
} else {
! snprintf(maxl,15,"%ld",php3_mssql_module.max_links);
maxl[15]=0;
}
php3_printf("<table cellpadding=5>"
--- 1481,1502 ----
}
! void php3_info_mssql(void)
{
char maxp[16],maxl[16];
+ msSQL_TLS_VARS;
+
! if (msSQL_GLOBAL(max_persistent==-1)) {
strcpy(maxp,"Unlimited");
} else {
! snprintf(maxp,15,"%ld",msSQL_GLOBAL(max_persistent));
maxp[15]=0;
}
! if (msSQL_GLOBAL(max_links==-1)) {
strcpy(maxl,"Unlimited");
} else {
! snprintf(maxl,15,"%ld",msSQL_GLOBAL(max_links));
maxl[15]=0;
}
php3_printf("<table cellpadding=5>"
***************
*** 1414,1448 ****
"<tr><td>Application
name:</td><td>%s</td></tr>\n"
"<tr><td valign=\"top\" width=\"20%%\">Client API
information:</td><td><pre>%s</pre></td></tr>\n"
"</table>\n",
! (php3_mssql_module.allow_persistent?"Yes":"No"),
! php3_mssql_module.num_persistent,maxp,
! php3_mssql_module.num_links,maxl,
! php3_mssql_module.appname,
"MSSQL 6.5");
}
! DLEXPORT void php3_mssql_min_error_severity(INTERNAL_FUNCTION_PARAMETERS)
{
pval *severity;
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &severity)==FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_long(severity);
! php3_mssql_module.min_error_severity = severity->value.lval;
}
! DLEXPORT void php3_mssql_min_message_severity(INTERNAL_FUNCTION_PARAMETERS)
{
pval *severity;
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &severity)==FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_long(severity);
! php3_mssql_module.min_message_severity = severity->value.lval;
}
#endif
--- 1506,1544 ----
"<tr><td>Application
name:</td><td>%s</td></tr>\n"
"<tr><td valign=\"top\" width=\"20%%\">Client API
information:</td><td><pre>%s</pre></td></tr>\n"
"</table>\n",
! (msSQL_GLOBAL(allow_persistent)?"Yes":"No"),
! msSQL_GLOBAL(num_persistent),maxp,
! msSQL_GLOBAL(num_links),maxl,
! msSQL_GLOBAL(appname),
"MSSQL 6.5");
}
! void php3_mssql_min_error_severity(INTERNAL_FUNCTION_PARAMETERS)
{
pval *severity;
+ msSQL_TLS_VARS;
+
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &severity)==FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_long(severity);
! msSQL_GLOBAL(min_error_severity) = severity->value.lval;
}
! void php3_mssql_min_message_severity(INTERNAL_FUNCTION_PARAMETERS)
{
pval *severity;
+ msSQL_TLS_VARS;
+
if (ARG_COUNT(ht)!=1 || getParameters(ht, 1, &severity)==FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_long(severity);
! msSQL_GLOBAL(min_message_severity) = severity->value.lval;
}
#endif
Index: php3/dl/mssql/mssql.dsp
diff -c php3/dl/mssql/mssql.dsp:1.5 php3/dl/mssql/mssql.dsp:1.6
*** php3/dl/mssql/mssql.dsp:1.5 Fri Aug 14 17:57:46 1998
--- php3/dl/mssql/mssql.dsp Mon Sep 7 12:47:25 1998
***************
*** 63,70 ****
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
! # PROP Output_Dir "Debug"
! # PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D
"_WINDOWS" /YX /FD /c
--- 63,70 ----
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
! # PROP Output_Dir "c:\php3"
! # PROP Intermediate_Dir "c:\php3"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D
"_WINDOWS" /YX /FD /c
Index: php3/dl/mssql/php3_mssql.h
diff -c php3/dl/mssql/php3_mssql.h:1.1 php3/dl/mssql/php3_mssql.h:1.2
*** php3/dl/mssql/php3_mssql.h:1.1 Mon Aug 10 14:54:12 1998
--- php3/dl/mssql/php3_mssql.h Mon Sep 7 12:47:25 1998
***************
*** 28,34 ****
*/
! /* $Id: php3_mssql.h,v 1.1 1998/08/10 18:54:12 fmk Exp $ */
#ifndef _PHP3_MSSQL_H
#define _PHP3_MSSQL_H
--- 28,34 ----
*/
! /* $Id: php3_mssql.h,v 1.2 1998/09/07 16:47:25 shane Exp $ */
#ifndef _PHP3_MSSQL_H
#define _PHP3_MSSQL_H
***************
*** 40,79 ****
#if HAVE_MSSQL
! //extern php3_module_entry mssql_module_entry;
! //#define mssql_module_ptr &mssql_module_entry
! #ifdef THREAD_SAFE
! php3_globals_struct *php3_globals;
! #endif
! #include <phpdl.h>
int php3_minit_mssql(INIT_FUNC_ARGS);
int php3_rinit_mssql(INIT_FUNC_ARGS);
int php3_mshutdown_mssql(void);
int php3_rshutdown_mssql(void);
! DLEXPORT void php3_info_mssql(void);
! DLEXPORT void php3_mssql_connect(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_pconnect(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_close(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_select_db(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_query(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_free_result(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_get_last_message(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_num_rows(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_num_fields(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_fetch_field(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_fetch_row(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_fetch_array(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_fetch_object(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_field_length(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_field_name(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_field_type(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_data_seek(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_field_seek(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_result(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_min_error_severity(INTERNAL_FUNCTION_PARAMETERS);
! DLEXPORT void php3_mssql_min_message_severity(INTERNAL_FUNCTION_PARAMETERS);
/*
void php3_mssql_db_query(INTERNAL_FUNCTION_PARAMETERS);
--- 40,76 ----
#if HAVE_MSSQL
! extern php3_module_entry mssql_module_entry;
! #define mssql_module_ptr &mssql_module_entry
! #include "phpdl.h"
int php3_minit_mssql(INIT_FUNC_ARGS);
int php3_rinit_mssql(INIT_FUNC_ARGS);
int php3_mshutdown_mssql(void);
int php3_rshutdown_mssql(void);
! void php3_info_mssql(void);
! void php3_mssql_connect(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_pconnect(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_close(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_select_db(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_query(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_free_result(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_get_last_message(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_num_rows(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_num_fields(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_fetch_field(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_fetch_row(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_fetch_array(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_fetch_object(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_field_length(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_field_name(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_field_type(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_data_seek(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_field_seek(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_result(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_min_error_severity(INTERNAL_FUNCTION_PARAMETERS);
! void php3_mssql_min_message_severity(INTERNAL_FUNCTION_PARAMETERS);
/*
void php3_mssql_db_query(INTERNAL_FUNCTION_PARAMETERS);
***************
*** 95,102 ****
#define anyintcol(j)
(coltype(j)==SQLINT4?intcol(j):(coltype(j)==SQLINT2?smallintcol(j):tinyintcol(j)))
#define charcol(i) ((DBCHAR *) dbdata(mssql_ptr->link,i))
#define floatcol(i) ((float) *(DBFLT8 *) dbdata(mssql_ptr->link,i))
! typedef struct mssql_link_struct mssql_link;
typedef struct {
long default_link;
--- 92,104 ----
#define anyintcol(j)
(coltype(j)==SQLINT4?intcol(j):(coltype(j)==SQLINT2?smallintcol(j):tinyintcol(j)))
#define charcol(i) ((DBCHAR *) dbdata(mssql_ptr->link,i))
#define floatcol(i) ((float) *(DBFLT8 *) dbdata(mssql_ptr->link,i))
+
! typedef struct mssql_link_struct {
! LOGINREC *login;
! DBPROCESS *link;
! int valid;
! }mssql_link;
typedef struct {
long default_link;
***************
*** 106,122 ****
char *appname;
char *server_message;
int le_link,le_plink,le_result;
long min_error_severity,min_message_severity;
long cfg_min_error_severity,cfg_min_message_severity;
void (*get_column_content)(mssql_link *mssql_ptr,int offset,pval *result,int column_type);
} mssql_module;
- struct mssql_link_struct {
- LOGINREC *login;
- DBPROCESS *link;
- int valid;
- };
-
#define MSSQL_ROWS_BLOCK 128
typedef struct {
--- 108,120 ----
char *appname;
char *server_message;
int le_link,le_plink,le_result;
+ int magic_quotes_runtime;
long min_error_severity,min_message_severity;
long cfg_min_error_severity,cfg_min_message_severity;
void (*get_column_content)(mssql_link *mssql_ptr,int offset,pval *result,int column_type);
+ HashTable *resource_list, *resource_plist;
} mssql_module;
#define MSSQL_ROWS_BLOCK 128
typedef struct {
***************
*** 133,140 ****
int num_rows,num_fields;
} mssql_result;
!
extern mssql_module php3_mssql_module;
#else
--- 131,139 ----
int num_rows,num_fields;
} mssql_result;
! #ifndef THREAD_SAFE
extern mssql_module php3_mssql_module;
+ #endif
#else
--
PHP Development Mailing List http://www.php.net/
To unsubscribe send an empty message to php-dev-unsubscribe@lists.php.net
For help: php-dev-help@lists.php.net