cvs: /php4/ext/mssql mssql.dsp php_mssql.h php_mssql.c
| From: | Frank M. Kromann | Date: | Sun, 13 Feb 2000 19:07:22 +0000 |
| Subject: | cvs: /php4/ext/mssql mssql.dsp php_mssql.h php_mssql.c | ||
| Groups: | php.version4 | ||
| Request: | Send a blank email to php-version4+get-10224@lists.php.net to get a copy of this message | ||
fmk Sun Feb 13 11:07:22 2000 EDT
Modified files:
/php4/ext/mssql mssql.dsp php_mssql.h php_mssql.c
Log:
Fixing compile and link with current cvs.
Index: php4/ext/mssql/mssql.dsp
diff -u php4/ext/mssql/mssql.dsp:1.4 php4/ext/mssql/mssql.dsp:1.5
--- php4/ext/mssql/mssql.dsp:1.4 Sun Dec 19 13:02:44 1999
+++ php4/ext/mssql/mssql.dsp Sun Feb 13 11:06:51 2000
@@ -19,8 +19,9 @@
!MESSAGE
!MESSAGE "mssql - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "mssql - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "mssql - Win32 MSSQL 65 Release" (based on "Win32 (x86) Dynamic-Link
Library")
-!MESSAGE "mssql - Win32 MSSQL 70 Release" (based on "Win32 (x86) Dynamic-Link
Library")
+!MESSAGE "mssql - Win32 MSSQL 65 Release_TS" (based on "Win32 (x86) Dynamic-Link
Library")
+!MESSAGE "mssql - Win32 MSSQL 70 Release_TS" (based on "Win32 (x86) Dynamic-Link
Library")
+!MESSAGE "mssql - Win32 MSSQL 70 Debug" (based on "Win32 (x86) Dynamic-Link
Library")
!MESSAGE
# Begin Project
@@ -82,7 +83,7 @@
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug
/machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386
/pdbtype:sept
-!ELSEIF "$(CFG)" == "mssql - Win32 MSSQL 65 Release"
+!ELSEIF "$(CFG)" == "mssql - Win32 MSSQL 65 Release_TS"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -97,7 +98,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\..\Zend" /I
"..\..\..\bindlib_w32" /I "..\..\..\TSRM" /D "WIN32" /D
"NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D
"MSSQL_EXPORTS" /D "COMPILE_DL" /D "DBNTWIN32" /D ZTS=1 /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\Zend" /I
"..\..\..\bindlib_w32" /I "..\..\TSRM" /I "mssql-65" /D
"WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D
"_USRDLL" /D "MSSQL_EXPORTS" /D "COMPILE_DL" /D "DBNTWIN32"
/D ZTS=1 /D MSSQL65=1 /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\Zend" /I
"..\..\..\bindlib_w32" /I "..\..\TSRM" /I "mssql-65" /D
"WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D
"_USRDLL" /D "MSSQL_EXPORTS" /D "COMPILE_DL" /D "DBNTWIN32"
/D ZTS=1 /D MSSQL65=1 /D ZEND_WIN32=1 /D PHP_WIN32=1 /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x406 /d "NDEBUG"
@@ -109,7 +110,7 @@
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib php4ts.lib ntwdblib.lib /nologo
/dll /machine:I386 /out:"MSSQL_65_Release/php_mssql.dll"
/libpath:"..\..\Release_TS"
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib php4ts.lib ntwdblib.lib /nologo /dll
/machine:I386 /out:"MSSQL_65_Release/php_mssql.dll" /libpath:"..\..\Release_TS"
/libpath:"mssql-65"
-!ELSEIF "$(CFG)" == "mssql - Win32 MSSQL 70 Release"
+!ELSEIF "$(CFG)" == "mssql - Win32 MSSQL 70 Release_TS"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
@@ -124,7 +125,7 @@
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\..\Zend" /I
"..\..\..\bindlib_w32" /I "..\..\..\TSRM" /D "WIN32" /D
"NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D
"MSSQL_EXPORTS" /D "COMPILE_DL" /D "DBNTWIN32" /D ZTS=1 /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\Zend" /I
"..\..\..\bindlib_w32" /I "..\..\TSRM" /I "mssql-70" /D
"WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D
"_USRDLL" /D "MSSQL_EXPORTS" /D "COMPILE_DL" /D "DBNTWIN32"
/D ZTS=1 /D MSSQL70=1 /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\Zend" /I
"..\..\..\bindlib_w32" /I "..\..\TSRM" /I "mssql-70" /D
"WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D
"_USRDLL" /D "MSSQL_EXPORTS" /D "COMPILE_DL" /D "DBNTWIN32"
/D ZTS=1 /D MSSQL70=1 /D ZEND_WIN32=1 /D PHP_WIN32=1 /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x406 /d "NDEBUG"
@@ -134,7 +135,34 @@
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib php4ts.lib ntwdblib.lib /nologo
/dll /machine:I386 /out:"MSSQL_65_Release/php_mssql.dll"
/libpath:"..\..\Release_TS"
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib php4ts.lib ntwdblib.lib /nologo /dll
/machine:I386 /out:"MSSQL_65_Release/php_mssql.dll" /libpath:"..\..\Release_TS"
/libpath:"mssql-70"
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib php4ts.lib ntwdblib.lib /nologo /dll
/machine:I386 /out:"MSSQL_70_Release/php_mssql.dll" /libpath:"..\..\Release_TS"
/libpath:"mssql-70"
+
+!ELSEIF "$(CFG)" == "mssql - Win32 MSSQL 70 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "mssql___Win32_MSSQL_70_Debug"
+# PROP BASE Intermediate_Dir "mssql___Win32_MSSQL_70_Debug"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "mssql___Win32_MSSQL_70_Debug"
+# PROP Intermediate_Dir "mssql___Win32_MSSQL_70_Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\Zend" /I
"..\..\..\bindlib_w32" /I "..\..\TSRM" /I "mssql-70" /D
"WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D
"_USRDLL" /D "MSSQL_EXPORTS" /D "COMPILE_DL" /D "DBNTWIN32"
/D ZTS=1 /D MSSQL70=1 /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "..\..\Zend" /I
"..\..\..\bindlib_w32" /I "..\..\TSRM" /I "mssql-70" /D
"WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D
"_USRDLL" /D "MSSQL_EXPORTS" /D "COMPILE_DL" /D "DBNTWIN32"
/D ZTS=1 /D MSSQL70=1 /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x406 /d "NDEBUG"
+# ADD RSC /l 0x406 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib php4ts.lib ntwdblib.lib /nologo
/dll /machine:I386 /out:"MSSQL_65_Release/php_mssql.dll"
/libpath:"..\..\Release_TS" /libpath:"mssql-70"
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib php4ts.lib ntwdblib.lib /nologo /dll
/machine:I386 /out:"MSSQL_70_Debug/php_mssql.dll" /libpath:"..\..\Debug_TS"
/libpath:"mssql-70"
!ENDIF
@@ -142,8 +170,9 @@
# Name "mssql - Win32 Release"
# Name "mssql - Win32 Debug"
-# Name "mssql - Win32 MSSQL 65 Release"
-# Name "mssql - Win32 MSSQL 70 Release"
+# Name "mssql - Win32 MSSQL 65 Release_TS"
+# Name "mssql - Win32 MSSQL 70 Release_TS"
+# Name "mssql - Win32 MSSQL 70 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
Index: php4/ext/mssql/php_mssql.h
diff -u php4/ext/mssql/php_mssql.h:1.2 php4/ext/mssql/php_mssql.h:1.3
--- php4/ext/mssql/php_mssql.h:1.2 Fri Dec 31 17:31:42 1999
+++ php4/ext/mssql/php_mssql.h Sun Feb 13 11:06:51 2000
@@ -17,7 +17,7 @@
*/
-/* $Id: php_mssql.h,v 1.2 2000/01/01 01:31:42 sas Exp $ */
+/* $Id: php_mssql.h,v 1.3 2000/02/13 19:06:51 fmk Exp $ */
#ifndef _PHP_MSSQL_H
#define _PHP_MSSQL_H
@@ -27,6 +27,12 @@
#include "sqlfront.h"
#include "sqldb.h"
+#ifdef PHP_WIN32
+#define PHP_MSSQL_API __declspec(dllexport)
+#else
+#define PHP_MSSQL_API
+#endif
+
#if MSSQL65
#define MSSQL_VERSION "6.5"
#elif MSSQL70
@@ -47,7 +53,7 @@
#define DLEXPORT
#endif
-#ifdef ZTS
+#ifdef __ZTS
#include "TSRM.h"
#endif
@@ -95,7 +101,6 @@
long allow_persistent;
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;
long compatability_mode, connect_timeout;
@@ -136,7 +141,7 @@
# define MSSQLLS_CC
# define MS_SQL_G(v) (mssql_globals.v)
# define MSSQLLS_FETCH()
-extern ZEND_API php_mssql_globals mssql_globals;
+extern PHP_MSSQL_API php_mssql_globals mssql_globals;
#endif
#else
Index: php4/ext/mssql/php_mssql.c
diff -u php4/ext/mssql/php_mssql.c:1.8 php4/ext/mssql/php_mssql.c:1.9
--- php4/ext/mssql/php_mssql.c:1.8 Sat Feb 5 09:26:35 2000
+++ php4/ext/mssql/php_mssql.c Sun Feb 13 11:06:51 2000
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_mssql.c,v 1.8 2000/02/05 17:26:35 zeev Exp $ */
+/* $Id: php_mssql.c,v 1.9 2000/02/13 19:06:51 fmk Exp $ */
#if COMPILE_DL
#include "dl/phpdl.h"
@@ -32,31 +32,33 @@
#if HAVE_MSSQL
#define SAFE_STRING(s) ((s)?(s):"")
+static int le_result, le_link, le_plink;
+
static void php_mssql_get_column_content_with_type(mssql_link *mssql_ptr,int offset,zval *result,
int column_type);
static void php_mssql_get_column_content_without_type(mssql_link *mssql_ptr,int offset,zval
*result, int column_type);
function_entry mssql_functions[] = {
- PHP_FE(mssql_connect, NULL)
- PHP_FE(mssql_pconnect, NULL)
- PHP_FE(mssql_close, NULL)
- PHP_FE(mssql_select_db, NULL)
- PHP_FE(mssql_query, NULL)
- PHP_FE(mssql_free_result, NULL)
- PHP_FE(mssql_get_last_message, NULL)
- PHP_FE(mssql_num_rows, NULL)
- PHP_FE(mssql_num_fields, NULL)
- PHP_FE(mssql_fetch_field, NULL)
- PHP_FE(mssql_fetch_row, NULL)
- PHP_FE(mssql_fetch_array, NULL)
- PHP_FE(mssql_fetch_object, NULL)
- PHP_FE(mssql_field_length, NULL)
- PHP_FE(mssql_field_name, NULL)
- PHP_FE(mssql_field_type, NULL)
- PHP_FE(mssql_data_seek, NULL)
- PHP_FE(mssql_field_seek, NULL)
- PHP_FE(mssql_result, NULL)
- PHP_FE(mssql_min_error_severity, NULL)
- PHP_FE(mssql_min_message_severity, NULL)
+ PHP_FE(mssql_connect, NULL)
+ PHP_FE(mssql_pconnect, NULL)
+ PHP_FE(mssql_close, NULL)
+ PHP_FE(mssql_select_db, NULL)
+ PHP_FE(mssql_query, NULL)
+ PHP_FE(mssql_free_result, NULL)
+ PHP_FE(mssql_get_last_message, NULL)
+ PHP_FE(mssql_num_rows, NULL)
+ PHP_FE(mssql_num_fields, NULL)
+ PHP_FE(mssql_fetch_field, NULL)
+ PHP_FE(mssql_fetch_row, NULL)
+ PHP_FE(mssql_fetch_array, NULL)
+ PHP_FE(mssql_fetch_object, NULL)
+ PHP_FE(mssql_field_length, NULL)
+ PHP_FE(mssql_field_name, NULL)
+ PHP_FE(mssql_field_type, NULL)
+ PHP_FE(mssql_data_seek, NULL)
+ PHP_FE(mssql_field_seek, NULL)
+ PHP_FE(mssql_result, NULL)
+ PHP_FE(mssql_min_error_severity, NULL)
+ PHP_FE(mssql_min_message_severity, NULL)
{NULL, NULL, NULL}
};
@@ -74,7 +76,7 @@
#ifdef ZTS
int mssql_globals_id;
#else
-ZEND_API php_mssql_globals mssql_globals;
+PHP_MSSQL_API php_mssql_globals mssql_globals;
#endif
#ifdef COMPILE_DL
@@ -90,7 +92,7 @@
STD_PHP_INI_ENTRY_EX("mssql.max_links", "-1", PHP_INI_SYSTEM, OnUpdateInt, max_links, php_mssql_globals, mssql_globals, display_link_numbers)
STD_PHP_INI_ENTRY_EX("mssql.min_error_severity", "10", PHP_INI_ALL, OnUpdateInt, cfg_min_error_severity, php_mssql_globals, mssql_globals, display_link_numbers)
STD_PHP_INI_ENTRY_EX("mssql.min_message_severity", "10", PHP_INI_ALL, OnUpdateInt, cfg_min_message_severity, php_mssql_globals, mssql_globals, display_link_numbers)
- STD_PHP_INI_ENTRY_EX("mssql.compatability_mode", "0", PHP_INI_ALL, OnUpdateInt, compatability_mode, php_mssql_globals, mssql_globals, display_link_numbers)
+ STD_PHP_INI_BOOLEAN("mssql.compatability_mode", "0", PHP_INI_ALL, OnUpdateBool, compatability_mode, php_mssql_globals, mssql_globals)
STD_PHP_INI_ENTRY_EX("mssql.connect_timeout",
"5", PHP_INI_ALL, OnUpdateInt, connect_timeout, php_mssql_globals, mssql_globals, display_link_numbers)
STD_PHP_INI_ENTRY_EX("mssql.textsize",
"-1", PHP_INI_ALL, OnUpdateInt, textsize, php_mssql_globals, mssql_globals, display_link_numbers)
STD_PHP_INI_ENTRY_EX("mssql.textlimit",
"-1", PHP_INI_ALL, OnUpdateInt, textlimit, php_mssql_globals, mssql_globals, display_link_numbers)
@@ -121,8 +123,7 @@
static int _clean_invalid_results(list_entry *le)
{
MSSQLLS_FETCH();
-
- if (le->type == MS_SQL_G(le_result)) {
+ if (le->type == le_result) {
mssql_link *mssql_ptr = ((mssql_result *) le->ptr)->mssql_ptr;
if (!mssql_ptr->valid) {
@@ -156,13 +157,24 @@
efree(result);
}
+static void php_mssql_set_default_link(int id)
+{
+ MSSQLLS_FETCH();
+
+ if (MS_SQL_G(default_link)!=-1) {
+ zend_list_delete(MS_SQL_G(default_link));
+ }
+ MS_SQL_G(default_link) = id;
+ zend_list_addref(id);
+}
static void _close_mssql_link(mssql_link *mssql_ptr)
{
MSSQLLS_FETCH();
+ ELS_FETCH();
mssql_ptr->valid = 0;
- zend_hash_apply(MS_SQL_G(resource_list),(int (*)(void *))_clean_invalid_results);
+ zend_hash_apply(&EG(regular_list),(int (*)(void *))_clean_invalid_results);
dbclose(mssql_ptr->link);
dbfreelogin(mssql_ptr->login);
efree(mssql_ptr);
@@ -176,7 +188,7 @@
dbclose(mssql_ptr->link);
dbfreelogin(mssql_ptr->login);
- free(mssql_ptr);
+ efree(mssql_ptr);
MS_SQL_G(num_persistent)--;
MS_SQL_G(num_links)--;
}
@@ -190,7 +202,6 @@
PHP_MINIT_FUNCTION(mssql)
{
- ELS_FETCH();
MSSQLLS_D;
#ifdef ZTS
@@ -199,11 +210,11 @@
#else
MS_SQL_G(num_persistent) = 0;
#endif
- REGISTER_INI_ENTRIES();
- MS_SQL_G(le_result) = register_list_destructors(_free_mssql_result, NULL);
- MS_SQL_G(le_link) = register_list_destructors(_close_mssql_link, NULL);
- MS_SQL_G(le_plink) = register_list_destructors(NULL, _close_mssql_plink);
+ REGISTER_INI_ENTRIES();
+ le_result = register_list_destructors(_free_mssql_result, NULL);
+ le_link = register_list_destructors(_close_mssql_link, NULL);
+ le_plink = register_list_destructors(NULL, _close_mssql_plink);
mssql_module_entry.type = type;
if (dbinit()==FAIL) {
@@ -216,16 +227,14 @@
} else {
MS_SQL_G(get_column_content) = php_mssql_get_column_content_without_type;
}
-// if (MS_SQL_G(connecttimeout) < 1) MS_SQL_G(connecttimeout) = 1;
-// dbsetlogintime(MS_SQL_G(connecttimeout));
+ if (MS_SQL_G(connect_timeout) < 1) MS_SQL_G(connect_timeout) = 1;
+ dbsetlogintime(MS_SQL_G(connect_timeout));
return SUCCESS;
}
PHP_MSHUTDOWN_FUNCTION(mssql)
{
- MSSQLLS_FETCH();
-
UNREGISTER_INI_ENTRIES();
dbexit();
return SUCCESS;
@@ -238,7 +247,7 @@
MS_SQL_G(default_link) = -1;
MS_SQL_G(num_links) = MS_SQL_G(num_persistent);
- MS_SQL_G(appname) = "PHP";
+ MS_SQL_G(appname) = estrndup("PHP 4.0",7);
MS_SQL_G(server_message) = empty_string;
MS_SQL_G(min_error_severity) = MS_SQL_G(cfg_min_error_severity);
MS_SQL_G(min_message_severity) = MS_SQL_G(cfg_min_message_severity);
@@ -249,7 +258,11 @@
PHP_RSHUTDOWN_FUNCTION(mssql)
{
MSSQLLS_FETCH();
- STR_FREE(MS_SQL_G(server_message));
+
+ STR_FREE(MS_SQL_G(appname));
+ if (MS_SQL_G(server_message)) {
+ STR_FREE(MS_SQL_G(server_message));
+ }
return SUCCESS;
}
@@ -282,12 +295,12 @@
MSSQLLS_FETCH();
// PLS_FETCH();
- MS_SQL_G(resource_list) = list;
- MS_SQL_G(resource_plist) = plist;
-
switch(ARG_COUNT(ht)) {
case 0: /* defaults */
host=user=passwd=NULL;
+ hashed_details_length=5+3;
+ hashed_details = (char *) emalloc(hashed_details_length+1);
+ strcpy(hashed_details,"mssql___");
break;
case 1: {
zval **yyhost;
@@ -298,6 +311,9 @@
convert_to_string_ex(yyhost);
host = (*yyhost)->value.str.val;
user=passwd=NULL;
+ hashed_details_length = (*yyhost)->value.str.len+5+3;
+ hashed_details = (char *) emalloc(hashed_details_length+1);
+ sprintf(hashed_details,"mssql_%s__",(*yyhost)->value.str.val);
}
break;
case 2: {
@@ -311,6 +327,9 @@
host = (*yyhost)->value.str.val;
user = (*yyuser)->value.str.val;
passwd=NULL;
+ hashed_details_length = (*yyhost)->value.str.len+(*yyuser)->value.str.len+5+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: {
@@ -325,6 +344,9 @@
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+5+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:
@@ -332,19 +354,11 @@
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);
-
if (hashed_details == NULL) {
php_error(E_WARNING, "Out of memory");
RETURN_FALSE;
}
- sprintf(hashed_details,"mssql_%s_%s_%s", SAFE_STRING(host), SAFE_STRING(user),
SAFE_STRING(passwd));
-
-// return_value->value.lval = 0;
-// return_value->type = IS_RESOURCE;
-
/* set a DBLOGIN record */
if ((mssql.login = dblogin()) == NULL) {
php_error(E_WARNING,"MS SQL: Unable to allocate login record");
@@ -370,8 +384,7 @@
list_entry *le;
/* try to find if we already have this link in our persistent list */
- if (zend_hash_find(plist, hashed_details, hashed_details_length + 1,
- (void **) &le)==FAILURE) { /* we don't */
+ if (zend_hash_find(&EG(persistent_list), hashed_details, hashed_details_length + 1, (void **)
&le)==FAILURE) { /* we don't */
list_entry new_le;
if (MS_SQL_G(max_links) != -1 && MS_SQL_G(num_links) >= MS_SQL_G(max_links)) {
@@ -419,9 +432,9 @@
/* hash it up */
mssql_ptr = (mssql_link *) emalloc(sizeof(mssql_link));
memcpy(mssql_ptr, &mssql, sizeof(mssql_link));
- new_le.type = MS_SQL_G(le_plink);
+ new_le.type = le_plink;
new_le.ptr = mssql_ptr;
- if (zend_hash_update(plist, hashed_details, hashed_details_length + 1, &new_le,
sizeof(list_entry), NULL)==FAILURE) {
+ if (zend_hash_update(&EG(persistent_list), hashed_details, hashed_details_length + 1,
&new_le, sizeof(list_entry), NULL)==FAILURE) {
efree(mssql_ptr);
efree(hashed_details);
dbfreelogin(mssql.login);
@@ -430,7 +443,7 @@
MS_SQL_G(num_persistent)++;
MS_SQL_G(num_links)++;
} else { /* we do */
- if (le->type != MS_SQL_G(le_plink)) {
+ if (le->type != le_plink) {
#if BROKEN_MSSQL_PCONNECTS
log_error("PHP/MS SQL: Hashed persistent link is not a MS SQL
link!",php_rqst->server);
#endif
@@ -449,7 +462,7 @@
log_error("PHP/MS SQL: Unable to reconnect!",php_rqst->server);
#endif
php_error(E_WARNING,"MS SQL: Link to server lost, unable to reconnect");
- zend_hash_del(plist, hashed_details, hashed_details_length+1);
+ zend_hash_del(&EG(persistent_list), hashed_details, hashed_details_length+1);
efree(hashed_details);
RETURN_FALSE;
}
@@ -460,13 +473,13 @@
#if BROKEN_MSSQL_PCONNECTS
log_error("PHP/MS SQL: Unable to set required options",php_rqst->server);
#endif
- zend_hash_del(plist, hashed_details, hashed_details_length + 1);
+ zend_hash_del(&EG(persistent_list), hashed_details, hashed_details_length + 1);
efree(hashed_details);
RETURN_FALSE;
}
}
}
- ZEND_REGISTER_RESOURCE(return_value, mssql_ptr, MS_SQL_G(le_plink));
+ ZEND_REGISTER_RESOURCE(return_value, mssql_ptr, le_plink);
} else { /* non persistent */
list_entry *index_ptr, new_index_ptr;
@@ -475,7 +488,7 @@
* if it doesn't, open a new mssql link, add it to the resource list,
* and add a pointer to it with hashed_details as the key.
*/
- if (zend_hash_find(list, hashed_details, hashed_details_length + 1,(void **)
&index_ptr)==SUCCESS) {
+ if (zend_hash_find(&EG(regular_list), hashed_details, hashed_details_length + 1,(void **)
&index_ptr)==SUCCESS) {
int type,link;
void *ptr;
@@ -484,14 +497,15 @@
}
link = (int) index_ptr->ptr;
ptr = zend_list_find(link,&type); /* check if the link is still there */
- if (ptr && (type==MS_SQL_G(le_link) || type==MS_SQL_G(le_plink))) {
+ if (ptr && (type==le_link || type==le_plink)) {
zend_list_addref(link);
- return_value->value.lval = MS_SQL_G(default_link) = link;
+ return_value->value.lval = link;
+ php_mssql_set_default_link(link);
return_value->type = IS_RESOURCE;
efree(hashed_details);
return;
} else {
- zend_hash_del(list, hashed_details, hashed_details_length + 1);
+ zend_hash_del(&EG(regular_list), hashed_details, hashed_details_length + 1);
}
}
if (MS_SQL_G(max_links) != -1 && MS_SQL_G(num_links) >= MS_SQL_G(max_links)) {
@@ -531,19 +545,19 @@
/* add it to the list */
mssql_ptr = (mssql_link *) emalloc(sizeof(mssql_link));
memcpy(mssql_ptr, &mssql, sizeof(mssql_link));
- ZEND_REGISTER_RESOURCE(return_value, mssql_ptr, MS_SQL_G(le_link));
+ ZEND_REGISTER_RESOURCE(return_value, mssql_ptr, le_link);
/* add it to the hash */
new_index_ptr.ptr = (void *) return_value->value.lval;
new_index_ptr.type = le_index_ptr;
- if (zend_hash_update(list, hashed_details, hashed_details_length + 1,(void *) &new_index_ptr,
sizeof(list_entry),NULL)==FAILURE) {
+ if (zend_hash_update(&EG(regular_list), hashed_details, hashed_details_length + 1,(void *)
&new_index_ptr, sizeof(list_entry),NULL)==FAILURE) {
efree(hashed_details);
RETURN_FALSE;
}
MS_SQL_G(num_links)++;
}
efree(hashed_details);
-// MS_SQL_G(default_link)=return_value->value.lval;
+ php_mssql_set_default_link(return_value->value.lval);
}
@@ -571,7 +585,7 @@
PHP_FUNCTION(mssql_close)
{
- zval **mssql_link_index;
+ zval **mssql_link_index=NULL;
int id;
mssql_link *mssql_ptr;
MSSQLLS_FETCH();
@@ -579,21 +593,21 @@
switch (ARG_COUNT(ht)) {
case 0:
- id = MS_SQL_G(default_link);
+ id = php_mssql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+ CHECK_LINK(id);
break;
case 1:
if (zend_get_parameters_ex(1, &mssql_link_index)==FAILURE) {
RETURN_FALSE;
}
- ZEND_FETCH_RESOURCE2(mssql_ptr, mssql_link *, mssql_link_index, -1, "MS SQL-Link",
MS_SQL_G(le_link), MS_SQL_G(le_plink));
- id = (*mssql_link_index)->value.lval;
+ id = -1;
break;
default:
WRONG_PARAM_COUNT;
break;
}
-
- zend_list_delete(id);
+ ZEND_FETCH_RESOURCE2(mssql_ptr, mssql_link *, mssql_link_index, id, "MS SQL-Link",
le_link, le_plink);
+ zend_list_delete((*mssql_link_index)->value.lval);
RETURN_TRUE;
}
@@ -612,20 +626,20 @@
RETURN_FALSE;
}
id = php_mssql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+ CHECK_LINK(id);
break;
case 2:
if (zend_get_parameters_ex(2, &db, &mssql_link_index)==FAILURE) {
RETURN_FALSE;
}
- ZEND_FETCH_RESOURCE2(mssql_ptr, mssql_link *, mssql_link_index, -1, "MS SQL-Link",
MS_SQL_G(le_link), MS_SQL_G(le_plink));
- id = (*mssql_link_index)->value.lval;
+ id = -1;
break;
default:
WRONG_PARAM_COUNT;
break;
}
-
- CHECK_LINK(id);
+
+ ZEND_FETCH_RESOURCE2(mssql_ptr, mssql_link *, mssql_link_index, id, "MS SQL-Link",
le_link, le_plink);
convert_to_string_ex(db);
@@ -701,6 +715,7 @@
var_reset(result);
return;
}
+
if (dbwillconvert(coltype(offset),SQLCHAR)) {
unsigned char *res_buf;
int res_length = dbdatlen(mssql_ptr->link,offset);
@@ -724,6 +739,7 @@
int retvalue;
mssql_link *mssql_ptr;
mssql_result *result;
+ int id;
int num_fields;
int blocks_initialized=1;
int i,j;
@@ -736,18 +752,21 @@
if (zend_get_parameters_ex(1, &query)==FAILURE) {
RETURN_FALSE;
}
-// id = MS_SQL_G(default_link);
+ id = php_mssql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+ CHECK_LINK(id);
break;
case 2:
if (zend_get_parameters_ex(2, &query, &mssql_link_index)==FAILURE) {
RETURN_FALSE;
}
- ZEND_FETCH_RESOURCE2(mssql_ptr, mssql_link *, mssql_link_index, -1, "MS SQL-Link",
MS_SQL_G(le_link), MS_SQL_G(le_plink));
+ id = -1;
break;
default:
WRONG_PARAM_COUNT;
break;
}
+
+ ZEND_FETCH_RESOURCE2(mssql_ptr, mssql_link *, mssql_link_index, id, "MS SQL-Link",
le_link, le_plink);
convert_to_string_ex(query);
@@ -846,7 +865,7 @@
}
efree(column_types);
- ZEND_REGISTER_RESOURCE(return_value, result, MS_SQL_G(le_result));
+ ZEND_REGISTER_RESOURCE(return_value, result, le_result);
}
PHP_FUNCTION(mssql_free_result)
@@ -860,7 +879,7 @@
WRONG_PARAM_COUNT;
}
- ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result",
MS_SQL_G(le_result));
+ ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result",
le_result);
zend_list_delete((*mssql_result_index)->value.lval);
RETURN_TRUE;
}
@@ -883,7 +902,7 @@
WRONG_PARAM_COUNT;
}
- ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result",
MS_SQL_G(le_result));
+ ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result",
le_result);
return_value->value.lval = result->num_rows;
return_value->type = IS_LONG;
@@ -900,7 +919,7 @@
WRONG_PARAM_COUNT;
}
- ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result",
MS_SQL_G(le_result));
+ ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result",
le_result);
return_value->value.lval = result->num_fields;
return_value->type = IS_LONG;
@@ -918,7 +937,7 @@
WRONG_PARAM_COUNT;
}
- ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result",
MS_SQL_G(le_result));
+ ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result",
le_result);
if (result->cur_row >= result->num_rows) {
RETURN_FALSE;
@@ -939,7 +958,7 @@
zval **mssql_result_index;
mssql_result *result;
int i;
- zval *zvalue_ptr, *tmp;
+ zval *tmp;
MSSQLLS_FETCH();
PLS_FETCH();
@@ -948,7 +967,7 @@
WRONG_PARAM_COUNT;
}
- ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result",
MS_SQL_G(le_result));
+ ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result",
le_result);
if (result->cur_row >= result->num_rows) {
RETURN_FALSE;
@@ -1001,7 +1020,7 @@
id = mssql_result_index->value.lval;
result = (mssql_result *) zend_list_find(id,&type);
- if (type!=MS_SQL_G(le_result)) {
+ if (type!=le_result) {
php_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
@@ -1097,7 +1116,7 @@
id = mssql_result_index->value.lval;
result = (mssql_result *) zend_list_find(id,&type);
- if (type!=MS_SQL_G(le_result)) {
+ if (type!=le_result) {
php_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
@@ -1155,7 +1174,7 @@
id = mssql_result_index->value.lval;
result = (mssql_result *) zend_list_find(id,&type);
- if (type!=MS_SQL_G(le_result)) {
+ if (type!=le_result) {
php_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
@@ -1207,7 +1226,7 @@
id = mssql_result_index->value.lval;
result = (mssql_result *) zend_list_find(id,&type);
- if (type!=MS_SQL_G(le_result)) {
+ if (type!=le_result) {
php_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
@@ -1260,7 +1279,7 @@
id = mssql_result_index->value.lval;
result = (mssql_result *) zend_list_find(id,&type);
- if (type!=MS_SQL_G(le_result)) {
+ if (type!=le_result) {
php_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
@@ -1298,7 +1317,7 @@
id = mssql_result_index->value.lval;
result = (mssql_result *) zend_list_find(id,&type);
- if (type!=MS_SQL_G(le_result)) {
+ if (type!=le_result) {
php_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}
@@ -1331,7 +1350,7 @@
id = mssql_result_index->value.lval;
result = (mssql_result *) zend_list_find(id,&type);
- if (type!=MS_SQL_G(le_result)) {
+ if (type!=le_result) {
php_error(E_WARNING,"%d is not a MS SQL result index",id);
RETURN_FALSE;
}