CVS update: php31/ext/db

From: 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

« previous php.dev (#1897) next »