CVS update: php31/ext/db
| From: | shane | Date: | Sat, 17 Oct 1998 21:37:33 +0000 |
| Subject: | CVS update: php31/ext/db | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-1897@lists.php.net to get a copy of this message | ||
Date: Saturday October 17, 1998 @ 17:37
Author: shane
Update of /repository/php31/ext/db
In directory asf:/u2/tmp/cvs-serv439/ext/db
Modified Files:
db.c dbm.dsp
Log Message:
fixing up dbm thread safety for 3.1
Index: php31/ext/db/db.c
diff -c php31/ext/db/db.c:2.2 php31/ext/db/db.c:2.3
*** php31/ext/db/db.c:2.2 Tue Sep 15 09:01:40 1998
--- php31/ext/db/db.c Sat Oct 17 17:37:31 1998
***************
*** 28,42 ****
+----------------------------------------------------------------------+
*/
! /* $Id: db.c,v 2.2 1998/09/15 13:01:40 ssb Exp $ */
#define IS_EXT_MODULE
#if COMPILE_DL
! #include "../phpdl.h"
#endif
#include "php.h"
#include "internal_functions.h"
#include "php3_list.h"
#include <stdlib.h>
#include <string.h>
--- 28,51 ----
+----------------------------------------------------------------------+
*/
! /* $Id: db.c,v 2.3 1998/10/17 21:37:31 shane Exp $ */
#define IS_EXT_MODULE
#if COMPILE_DL
! #ifdef PHP_31
! # include "../phpdl.h"
! #else
! # ifdef THREAD_SAFE
! # undef THREAD_SAFE
! # endif
! # include "dl/phpdl.h"
! #endif
#endif
#include "php.h"
#include "internal_functions.h"
#include "php3_list.h"
+ #include "safe_mode.h"
+ #include "fopen-wrappers.h"
#include <stdlib.h>
#include <string.h>
***************
*** 47,54 ****
--- 56,67 ----
#if HAVE_SYS_FILE_H && !HAVE_LOCKF && HAVE_FLOCK
#if WIN32|WINNT
+ #ifdef PHP_31
#include "os/nt/flock.h"
#else
+ #include "win32/flock.h"
+ #endif
+ #else
#include <sys/file.h>
#endif
#endif
***************
*** 148,155 ****
--- 161,173 ----
datum flatfile_nextkey(FILE *dbf);
#endif
+ #ifdef PHP_31
#include "php3_db.h"
#include "ext/standard/php3_string.h"
+ #else
+ #include "functions/db.h"
+ #include "functions/php3_string.h"
+ #endif
#if THREAD_SAFE
DWORD DbmTls;
***************
*** 160,170 ****
}dbm_global_struct;
#define DBM_GLOBAL(a) dbm_globals->a
- #define DBM_TLS_VARS \
- dbm_global_struct *dbm_globals; \
- dbm_globals=TlsGetValue(DbmTls);
-
#else
static int le_db;
#define DBM_GLOBAL(a) a
--- 178,185 ----
}dbm_global_struct;
#define DBM_GLOBAL(a) dbm_globals->a
+ #define DBM_TLS_VARS dbm_global_struct *dbm_globals = TlsGetValue(DbmTls);
#else
static int le_db;
#define DBM_GLOBAL(a) a
***************
*** 295,300 ****
--- 310,325 ----
return NULL;
}
+ #ifndef PHP_31 /* FIXME php3_ini cannot be accessed in modules */
+ if (php3_ini.safe_mode && (!_php3_checkuid(filename, 2))) {
+ return NULL;
+ }
+ #endif
+
+ if (_php3_check_open_basedir(filename)) {
+ return NULL;
+ }
+
switch (*mode) {
case 'w':
imode = DBM_WRITE_MODE;
***************
*** 542,553 ****
int ret;
datum key_datum, value_datum;
! /* FIXME cant get at a global in an external module!
if (php3_ini.magic_quotes_runtime) {
_php3_stripslashes(key,NULL);
_php3_stripslashes(value,NULL);
}
! */
value_datum.dptr = estrdup(value);
value_datum.dsize = strlen(value);
--- 567,578 ----
int ret;
datum key_datum, value_datum;
! #ifndef PHP_31 /* FIXME php3_ini cannot be accessed in modules */
if (php3_ini.magic_quotes_runtime) {
_php3_stripslashes(key,NULL);
_php3_stripslashes(value,NULL);
}
! #endif
value_datum.dptr = estrdup(value);
value_datum.dsize = strlen(value);
***************
*** 635,644 ****
else
ret = NULL;
! /* FIXME global in module
if (ret && php3_ini.magic_quotes_runtime) {
ret = _php3_addslashes(ret, value_datum.dsize, NULL, 1);
! }*/
return(ret);
}
--- 660,670 ----
else
ret = NULL;
! #ifndef PHP_31 /* FIXME php3_ini cannot be accessed in modules */
if (ret && php3_ini.magic_quotes_runtime) {
ret = _php3_addslashes(ret, value_datum.dsize, NULL, 1);
! }
! #endif
return(ret);
}
***************
*** 850,859 ****
}
else ret=NULL;
! /*FIXME global in module
if (ret && php3_ini.magic_quotes_runtime) {
ret = _php3_addslashes(ret, ret_datum.dsize, NULL, 1);
! }*/
return(ret);
}
--- 876,886 ----
}
else ret=NULL;
! #ifndef PHP_31 /* FIXME php3_ini cannot be accessed in modules */
if (ret && php3_ini.magic_quotes_runtime) {
ret = _php3_addslashes(ret, ret_datum.dsize, NULL, 1);
! }
! #endif
return(ret);
}
***************
*** 1086,1106 ****
int php3_minit_db(INIT_FUNC_ARGS)
{
! #ifdef THREAD_SAFE
dbm_global_struct *dbm_globals;
! #if !COMPILE_DL
! CREATE_MUTEX(dbm_mutex,"DBM_TLS");
! SET_MUTEX(dbm_mutex);
numthreads++;
if (numthreads==1){
! if ((DbmTls=TlsAlloc())==0xFFFFFFFF){
! FREE_MUTEX(dbm_mutex);
! return 0;
! }}
! FREE_MUTEX(dbm_mutex);
! #endif
! dbm_globals = (dbm_global_struct *) LocalAlloc(LPTR, sizeof(dbm_global_struct));
! TlsSetValue(DbmTls, (void *) dbm_globals);
#endif
DBM_GLOBAL(le_db) = register_list_destructors(_php3_dbmclose,NULL);
--- 1113,1135 ----
int php3_minit_db(INIT_FUNC_ARGS)
{
! #if defined(THREAD_SAFE)
dbm_global_struct *dbm_globals;
! PHP3_MUTEX_ALLOC(dbm_mutex);
! PHP3_MUTEX_LOCK(dbm_mutex);
numthreads++;
if (numthreads==1){
! if (!PHP3_TLS_PROC_STARTUP(DbmTls)){
! PHP3_MUTEX_UNLOCK(dbm_mutex);
! PHP3_MUTEX_FREE(dbm_mutex);
! return FAILURE;
! }
! }
! PHP3_MUTEX_UNLOCK(dbm_mutex);
! if(!PHP3_TLS_THREAD_INIT(DbmTls,dbm_globals,dbm_global_struct)){
! PHP3_MUTEX_FREE(dbm_mutex);
! return FAILURE;
! }
#endif
DBM_GLOBAL(le_db) = register_list_destructors(_php3_dbmclose,NULL);
***************
*** 1108,1128 ****
}
static int php3_mend_db(void){
#ifdef THREAD_SAFE
! dbm_global_struct *dbm_globals;
! dbm_globals = TlsGetValue(DbmTls);
! if (dbm_globals != 0)
! LocalFree((HLOCAL) dbm_globals);
! #if !COMPILE_DL
! SET_MUTEX(dbm_mutex);
numthreads--;
! if (!numthreads){
! if (!TlsFree(DbmTls)){
! FREE_MUTEX(dbm_mutex);
! return 0;
! }}
! FREE_MUTEX(dbm_mutex);
! #endif
#endif
return SUCCESS;
}
--- 1137,1154 ----
}
static int php3_mend_db(void){
+ DBM_TLS_VARS;
#ifdef THREAD_SAFE
! PHP3_TLS_THREAD_FREE(dbm_globals);
! PHP3_MUTEX_LOCK(dbm_mutex);
numthreads--;
! if (numthreads<1) {
! PHP3_TLS_PROC_SHUTDOWN(DbmTls);
! PHP3_MUTEX_UNLOCK(dbm_mutex);
! PHP3_MUTEX_FREE(dbm_mutex);
! return SUCCESS;
! }
! PHP3_MUTEX_UNLOCK(dbm_mutex);
#endif
return SUCCESS;
}
***************
*** 1155,1188 ****
#if COMPILE_DL
DLEXPORT php3_module_entry *get_module(void) { return &dbm_module_entry; }
-
- #if (WIN32|WINNT) && defined(THREAD_SAFE)
-
- /*NOTE: You should have an odbc.def file where you
- export DllMain*/
- BOOL WINAPI DllMain(HANDLE hModule,
- DWORD ul_reason_for_call,
- LPVOID lpReserved)
- {
- switch( ul_reason_for_call ) {
- case DLL_PROCESS_ATTACH:
- if ((DbmTls=TlsAlloc())==0xFFFFFFFF){
- return 0;
- }
- break;
- case DLL_THREAD_ATTACH:
- break;
- case DLL_THREAD_DETACH:
- break;
- case DLL_PROCESS_DETACH:
- if (!TlsFree(DbmTls)){
- return 0;
- }
- break;
- }
- return 1;
- }
- #endif
#endif
/*
--- 1181,1186 ----
Index: php31/ext/db/dbm.dsp
diff -c php31/ext/db/dbm.dsp:2.3 php31/ext/db/dbm.dsp:2.4
*** php31/ext/db/dbm.dsp:2.3 Sat Oct 17 16:45:28 1998
--- php31/ext/db/dbm.dsp Sat Oct 17 17:37:31 1998
***************
*** 69,75 ****
# 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
! # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "./" /I
"../../" /I "../../main" /D NDBM=1 /D BSD2=1 /D "DEBUG" /D
"_DEBUG" /D "THREAD_SAFE" /D "COMPILE_DL" /D "MSVC5" /D
"WIN32" /D "_WINDOWS" /YX /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
--- 69,75 ----
# 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
! # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../../include" /I "./" /I
"../../" /I "../../main" /D PHP_31=1 /D NDBM=1 /D BSD2=1 /D "DEBUG" /D
"_DEBUG" /D "THREAD_SAFE" /D "COMPILE_DL" /D "MSVC5" /D
"WIN32" /D "_WINDOWS" /YX /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
--
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