[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-internals
Subject:    [PHP-DEV] CVS update: php31/ext/odbc
From:       shane <php-dev () lists ! php ! net>
Date:       1998-10-29 6:05:00
[Download RAW message or body]

Date:	Thursday October 29, 1998 @ 1:05
Author:	shane

Update of /repository/php31/ext/odbc
In directory asf:/u2/tmp/cvs-serv26904/ext/odbc

Modified Files:
	php3_unified_odbc.h unified_odbc.c 
Log Message:
various patches.  including odbc mega patch.

Index: php31/ext/odbc/php3_unified_odbc.h
diff -c php31/ext/odbc/php3_unified_odbc.h:2.3 php31/ext/odbc/php3_unified_odbc.h:2.4
*** php31/ext/odbc/php3_unified_odbc.h:2.3	Sat Oct 17 17:19:14 1998
--- php31/ext/odbc/php3_unified_odbc.h	Thu Oct 29 01:04:54 1998
***************
*** 28,356 ****
     +----------------------------------------------------------------------+
   */
  
! /* $Id: php3_unified_odbc.h,v 2.3 1998/10/17 21:19:14 shane Exp $ */
  
  #ifndef _UNIFIED_ODBC_H
  #define _UNIFIED_ODBC_H
  
  #if HAVE_UODBC
  
  /*these defines are used to seperate the different
  database modules that use the uodbc interface so that
  two or more of them can be compiled into the same
  php binary*/
! 
! /*
! *
! *  Defines for ODBC
! *
! */
! #if HAVE_UODBC
! /* win32 vars for thread local storage */
! #define UODBC_MUTEX uodbc_mutex
! #define UODBC_TLS UODBCTls
! #define UODBC_GLOBAL_STRUCT uodbc_global_struct
! #define UODBC_GLOBALS uodbc_globals
! /* defines for variables, structs, etc */
! #define UODBC_MODULE_NAME "ODBC (uODBC)"
! #define UODBC_FUNCTIONS uodbc_functions
! #define UODBC_MODULE_ENTRY uodbc_module_entry
! #define UODBC_CONNECTION uodbc_connection
! #define UODBC_RESULT_VALUE uodbc_result_value
! #define UODBC_RESULT uodbc_result
! #define UODBC_MODULE uodbc_module
! #define PHP3_UODBC_MODULE php3_uodbc_module
! 
! /* function defines */
! #define PHP3_MINIT_UODBC php3_minit_uodbc
! #define PHP3_MSHUTDOWN_UODBC php3_mshutdown_uodbc
! #define PHP3_RINIT_UODBC php3_rinit_uodbc
! #define PHP3_INFO_UODBC php3_info_uodbc
! #define PHP3_UODBC_SETOPTION php3_uodbc_setoption
! #define PHP3_UODBC_AUTOCOMMIT php3_uodbc_autocommit
! #define PHP3_UODBC_CLOSE php3_uodbc_close
! #define PHP3_UDOBC_CLOSE_ALL php3_uodbc_close_all
! #define PHP3_UODBC_COMMIT php3_uodbc_commit
! #define PHP3_UODBC_CONNECT php3_uodbc_connect
! #define PHP3_UODBC_PCONNECT php3_uodbc_pconnect
! #define PHP3_UODBC_DO_CONNECT php3_uodbc_do_connect
! #define PHP3_UODBC_CURSOR php3_uodbc_cursor
! #define PHP3_UODBC_DO php3_uodbc_do
! #define PHP3_UODBC_EXECUTE php3_uodbc_execute
! #define PHP3_UODBC_FETCH_INTO php3_uodbc_fetch_into
! #define PHP3_UODBC_FETCH_ROW php3_uodbc_fetch_row
! #define PHP3_UODBC_FIELD_LEN php3_uodbc_field_len
! #define PHP3_UODBC_FIELD_NAME php3_uodbc_field_name
! #define PHP3_UODBC_FIELD_TYPE php3_uodbc_field_type
! #define PHP3_UODBC_FIELD_NUM php3_uodbc_field_num
! #define PHP3_UODBC_FREE_RESULT php3_uodbc_free_result
! #define PHP3_UODBC_NUM_FIELDS php3_uodbc_num_fields
! #define PHP3_UODBC_NUM_ROWS php3_uodbc_num_rows
! #define PHP3_UODBC_PREPARE php3_uodbc_prepare
! #define PHP3_UODBC_RESULT php3_uodbc_result
! #define PHP3_UODBC_RESULT_ALL php3_uodbc_result_all
! #define PHP3_UODBC_ROLLBACK php3_uodbc_rollback
! #define PHP3_UODBC_TRANSACT php3_uodbc_transact
! #define PHP3_UODBC_BINMODE php3_uodbc_binmode
! #define PHP3_UODBC_LONGREADLEN php3_uodbc_longreadlen
! 
! /* internal function defines */
! #define UODBC_ADD_RESULT uodbc_add_result
! #define UODBC_GET_RESULT uodbc_get_result
! #define UODBC_DEL_RESULT uodbc_del_result
! #define UODBC_ADD_CONN uodbc_add_conn
! #define UODBC_GET_CONN uodbc_get_conn
! #define UODBC_DEL_CONN uodbc_del_conn
! #define UODBC_SQL_ERROR uodbc_sql_error
! #define UODBC_BINDCOLS uodbc_bindcols
! #define _FREE_UODBC_RESULT _free_uodbc_result
! #define _CLOSE_UODBC_CONNECTION _close_uodbc_connection
! #define _CLOSE_UODBC_PCONNECTION _close_uodbc_pconnection
! /* function name defines */
! #define ODBC_SETOPTION "odbc_setoption"
! #define ODBC_AUTOCOMMIT "odbc_autocommit"
! #define ODBC_CLOSE "odbc_close"
! #define ODBC_CLOSE_ALL "odbc_close_all"
! #define ODBC_COMMIT "odbc_commit"
! #define ODBC_CONNECT "odbc_connect"
! #define ODBC_PCONNECT "odbc_pconnect"
! #define ODBC_CURSOR "odbc_cursor"
! #define ODBC_DO "odbc_do"
! #define ODBC_EXEC "odbc_exec"
! #define ODBC_PREPARE "odbc_prepare"
! #define ODBC_EXECUTE "odbc_execute"
! #define ODBC_FETCH_ROW "odbc_fetch_row"
! #define ODBC_FETCH_INTO "odbc_fetch_into"
! #define ODBC_FIELD_LEN "odbc_field_len"
! #define ODBC_FIELD_NAME "odbc_field_name"
! #define ODBC_FIELD_TYPE "odbc_field_type"
! #define ODBC_FIELD_NUM "odbc_field_num"
! #define ODBC_FREE_RESULT "odbc_free_result"
! #define ODBC_NUM_FIELDS "odbc_num_fields"
! #define ODBC_NUM_ROWS "odbc_num_rows"
! #define ODBC_RESULT "odbc_result"
! #define ODBC_RESULT_ALL "odbc_result_all"
! #define ODBC_ROLLBACK "odbc_rollback"
! #define ODBC_TRANSACT "odbc_transact"
! #define ODBC_DO_CONNECT "odbc_do_connect"
! #define ODBC_LONGREADLEN "odbc_longreadlen"
! #define ODBC_BINMODE "odbc_binmode"
! 
! /* ini variable defines */
! #define ODBC_INI_DEFAULTDB "uodbc.default_db"
! #define ODBC_INI_DEFAULTUSER "uodbc.default_user"
! #define ODBC_INI_DEFAULTPW "uodbc.default_pw"
! #define ODBC_INI_ALLOWPERSISTENT "uodbc.allow_persistent"
! #define ODBC_INI_MAXPERSISTENT "uodbc.max_persistent"
! #define ODBC_INI_MAXLINKS "uodbc.max_links"
! #define ODBC_INI_DEFAULTLRL "uodbc.defaultlrl"
! #define ODBC_INI_DEFAULTBINMODE "uodbc.defaultbinmode"
! #endif
! 
! /*
! *
! *  Defines for SOLID
! *
! */
! 
! 
! #if 0 /* HAVE_SOLID turned off for now,
! 		will use above uodbc defines for now */
! /* win32 vars for thread local storage */
! #define UODBC_MUTEX solid_mutex
! #define UODBC_TLS SOLIDTls
! #define UODBC_GLOBAL_STRUCT solid_global_struct
! #define UODBC_GLOBALS solid_globals
! /* defines for variables, structs, etc */
! #define UODBC_MODULE_NAME "SOLID (uODBC)"
! #define UODBC_FUNCTIONS solid_functions
! #define UODBC_MODULE_ENTRY solid_module_entry
! #define UODBC_CONNECTION solid_connection
! #define UODBC_RESULT_VALUE solid_result_value
! #define UODBC_RESULT solid_result
! #define UODBC_MODULE solid_module
! #define PHP3_UODBC_MODULE php3_solid_module
! 
! /* function defines */
! #define PHP3_MINIT_UODBC php3_minit_solid
! #define PHP3_MSHUTDOWN_UODBC php3_mshutdown_solid
! #define PHP3_RINIT_UODBC php3_rinit_solid
! #define PHP3_INFO_UODBC php3_info_solid
! #define PHP3_UODBC_SETOPTION php3_solid_setoption
! #define PHP3_UODBC_AUTOCOMMIT php3_solid_autocommit
! #define PHP3_UODBC_CLOSE php3_solid_close
! #define PHP3_UDOBC_CLOSE_ALL php3_solid_close_all
! #define PHP3_UODBC_COMMIT php3_solid_commit
! #define PHP3_UODBC_CONNECT php3_solid_connect
! #define PHP3_UODBC_PCONNECT php3_solid_pconnect
! #define PHP3_UODBC_DO_CONNECT php3_solid_do_connect
! #define PHP3_UODBC_CURSOR php3_solid_cursor
! #define PHP3_UODBC_DO php3_solid_do
! #define PHP3_UODBC_EXECUTE php3_solid_execute
! #define PHP3_UODBC_FETCH_INTO php3_solid_fetch_into
! #define PHP3_UODBC_FETCH_ROW php3_solid_fetch_row
! #define PHP3_UODBC_FIELD_LEN php3_solid_field_len
! #define PHP3_UODBC_FIELD_NAME php3_solid_field_name
! #define PHP3_UODBC_FIELD_TYPE php3_solid_field_type
! #define PHP3_UODBC_FREE_RESULT php3_solid_free_result
! #define PHP3_UODBC_NUM_FIELDS php3_solid_num_fields
! #define PHP3_UODBC_NUM_ROWS php3_solid_num_rows
! #define PHP3_UODBC_PREPARE php3_solid_prepare
! #define PHP3_UODBC_RESULT php3_solid_result
! #define PHP3_UODBC_RESULT_ALL php3_solid_result_all
! #define PHP3_UODBC_ROLLBACK php3_solid_rollback
! #define PHP3_UODBC_TRANSACT php3_solid_transact
! 
! /* internal function defines */
! #define UODBC_ADD_RESULT solid_add_result
! #define UODBC_GET_RESULT solid_get_result
! #define UODBC_DEL_RESULT solid_del_result
! #define UODBC_ADD_CONN solid_add_conn
! #define UODBC_GET_CONN solid_get_conn
! #define UODBC_DEL_CONN solid_del_conn
! #define UODBC_SQL_ERROR solid_sql_error
! #define UODBC_BINDCOLS solid_bindcols
! #define _FREE_UODBC_RESULT _free_solid_result
! #define _CLOSE_UODBC_CONNECTION _close_solid_connection
! #define _CLOSE_UODBC_PCONNECTION _close_solid_pconnection
! /* function name defines */
! #define ODBC_SETOPTION "solid_setoption"
! #define ODBC_AUTOCOMMIT "solid_autocommit"
! #define ODBC_CLOSE "solid_close"
! #define ODBC_CLOSE_ALL "solid_close_all"
! #define ODBC_COMMIT "solid_commit"
! #define ODBC_CONNECT "solid_connect"
! #define ODBC_PCONNECT "solid_pconnect"
! #define ODBC_CURSOR "solid_cursor"
! #define ODBC_DO "solid_do"
! #define ODBC_EXEC "solid_exec"
! #define ODBC_PREPARE "solid_prepare"
! #define ODBC_EXECUTE "solid_execute"
! #define ODBC_FETCH_ROW "solid_fetch_row"
! #define ODBC_FETCH_INTO "solid_fetch_into"
! #define ODBC_FIELD_LEN "solid_field_len"
! #define ODBC_FIELD_NAME "solid_field_name"
! #define ODBC_FIELD_TYPE "solid_field_type"
! #define ODBC_FREE_RESULT "solid_free_result"
! #define ODBC_NUM_FIELDS "solid_num_fields"
! #define ODBC_NUM_ROWS "solid_num_rows"
! #define ODBC_RESULT "solid_result"
! #define ODBC_RESULT_ALL "solid_result_all"
! #define ODBC_ROLLBACK "solid_rollback"
! #define ODBC_TRANSACT "solid_transact"
! #define ODBC_DO_CONNECT "solid_do_connect"
! 
! /* ini variable defines */
! #define ODBC_INI_DEFAULTDB "solid.default_db"
! #define ODBC_INI_DEFAULTUSER "solid.default_user"
! #define ODBC_INI_DEFAULTPW "solid.default_pw"
! #define ODBC_INI_ALLOWPERSISTENT "solid.allow_persistent"
! #define ODBC_INI_MAXPERSISTENT "solid.max_persistent"
! #define ODBC_INI_MAXLINKS "solid.max_links"
! #endif
! 
! 
! /*
! *
! *  Defines for ADABAS
! *
! */
! 
! 
! #if 0 /* HAVE_ADABAS turned for for now, uses
!       defines from the ODBC section */
! /* win32 vars for thread local storage */
! #define UODBC_MUTEX adabas_mutex
! #define UODBC_TLS ADABASTls
! #define UODBC_GLOBAL_STRUCT adabas_global_struct
! #define UODBC_GLOBALS adabas_globals
! /* defines for variables, structs, etc */
! #define UODBC_MODULE_NAME "ADABAS D (uODBC)"
! #define UODBC_FUNCTIONS adabas_functions
! #define UODBC_MODULE_ENTRY adabas_module_entry
! #define UODBC_CONNECTION adabas_connection
! #define UODBC_RESULT_VALUE adabas_result_value
! #define UODBC_RESULT adabas_result
! #define UODBC_MODULE adabas_module
! #define PHP3_UODBC_MODULE php3_adabas_module
! 
! /* function defines */
! #define PHP3_MINIT_UODBC php3_minit_adabas
! #define PHP3_MSHUTDOWN_UODBC php3_mshutdown_adabas
! #define PHP3_RINIT_UODBC php3_rinit_adabas
! #define PHP3_INFO_UODBC php3_info_adabas
! #define PHP3_UODBC_SETOPTION php3_adabas_setoption
! #define PHP3_UODBC_AUTOCOMMIT php3_adabas_autocommit
! #define PHP3_UODBC_CLOSE php3_adabas_close
! #define PHP3_UDOBC_CLOSE_ALL php3_adabas_close_all
! #define PHP3_UODBC_COMMIT php3_adabas_commit
! #define PHP3_UODBC_CONNECT php3_adabas_connect
! #define PHP3_UODBC_PCONNECT php3_adabas_pconnect
! #define PHP3_UODBC_DO_CONNECT php3_adabas_do_connect
! #define PHP3_UODBC_CURSOR php3_adabas_cursor
! #define PHP3_UODBC_DO php3_adabas_do
! #define PHP3_UODBC_EXECUTE php3_adabas_execute
! #define PHP3_UODBC_FETCH_INTO php3_adabas_fetch_into
! #define PHP3_UODBC_FETCH_ROW php3_adabas_fetch_row
! #define PHP3_UODBC_FIELD_LEN php3_adabas_field_len
! #define PHP3_UODBC_FIELD_NAME php3_adabas_field_name
! #define PHP3_UODBC_FIELD_TYPE php3_adabas_field_type
! #define PHP3_UODBC_FREE_RESULT php3_adabas_free_result
! #define PHP3_UODBC_NUM_FIELDS php3_adabas_num_fields
! #define PHP3_UODBC_NUM_ROWS php3_adabas_num_rows
! #define PHP3_UODBC_PREPARE php3_adabas_prepare
! #define PHP3_UODBC_RESULT php3_adabas_result
! #define PHP3_UODBC_RESULT_ALL php3_adabas_result_all
! #define PHP3_UODBC_ROLLBACK php3_adabas_rollback
! #define PHP3_UODBC_TRANSACT php3_adabas_transact
! 
! /* internal function defines */
! #define UODBC_ADD_RESULT adabas_add_result
! #define UODBC_GET_RESULT adabas_get_result
! #define UODBC_DEL_RESULT adabas_del_result
! #define UODBC_ADD_CONN adabas_add_conn
! #define UODBC_GET_CONN adabas_get_conn
! #define UODBC_DEL_CONN adabas_del_conn
! #define UODBC_SQL_ERROR adabas_sql_error
! #define UODBC_BINDCOLS adabas_bindcols
! #define _FREE_UODBC_RESULT _free_adabas_result
! #define _CLOSE_UODBC_CONNECTION _close_adabas_connection
! #define _CLOSE_UODBC_PCONNECTION _close_adabas_pconnection
! /* function name defines */
! #define ODBC_SETOPTION "adabas_setoption"
! #define ODBC_AUTOCOMMIT "adabas_autocommit"
! #define ODBC_CLOSE "adabas_close"
! #define ODBC_CLOSE_ALL "adabas_close_all"
! #define ODBC_COMMIT "adabas_commit"
! #define ODBC_CONNECT "adabas_connect"
! #define ODBC_PCONNECT "adabas_pconnect"
! #define ODBC_CURSOR "adabas_cursor"
! #define ODBC_DO "adabas_do"
! #define ODBC_EXEC "adabas_exec"
! #define ODBC_PREPARE "adabas_prepare"
! #define ODBC_EXECUTE "adabas_execute"
! #define ODBC_FETCH_ROW "adabas_fetch_row"
! #define ODBC_FETCH_INTO "adabas_fetch_into"
! #define ODBC_FIELD_LEN "adabas_field_len"
! #define ODBC_FIELD_NAME "adabas_field_name"
! #define ODBC_FIELD_TYPE "adabas_field_type"
! #define ODBC_FREE_RESULT "adabas_free_result"
! #define ODBC_NUM_FIELDS "adabas_num_fields"
! #define ODBC_NUM_ROWS "adabas_num_rows"
! #define ODBC_RESULT "adabas_result"
! #define ODBC_RESULT_ALL "adabas_result_all"
! #define ODBC_ROLLBACK "adabas_rollback"
! #define ODBC_TRANSACT "adabas_transact"
! #define ODBC_DO_CONNECT "adabas_do_connect"
! 
! /* ini variable defines */
! #define ODBC_INI_DEFAULTDB "adabas.default_db"
! #define ODBC_INI_DEFAULTUSER "adabas.default_user"
! #define ODBC_INI_DEFAULTPW "adabas.default_pw"
! #define ODBC_INI_ALLOWPERSISTENT "adabas.allow_persistent"
! #define ODBC_INI_MAXPERSISTENT "adabas.max_persistent"
! #define ODBC_INI_MAXLINKS "adabas.max_links"
! #endif
  
  /* checking in the same order as in configure.in */
  # if HAVE_SOLID
--- 28,52 ----
     +----------------------------------------------------------------------+
   */
  
! /* $Id: php3_unified_odbc.h,v 2.4 1998/10/29 06:04:54 shane Exp $ */
  
  #ifndef _UNIFIED_ODBC_H
  #define _UNIFIED_ODBC_H
  
  #if HAVE_UODBC
  
+ /* ODBC_UNIQUE_NAMES should be defined in config.h if you are
+  * compiling more than one of any of the uodbc databases
+  * this will give each module unique function names
+  * to avoid clashes between modules.
+  */
+ 
  /*these defines are used to seperate the different
  database modules that use the uodbc interface so that
  two or more of them can be compiled into the same
  php binary*/
! #define UODBC_NAMED_FE(php_name, name, arg_types) { #php_name, name, arg_types }
! #define UODBC_NAMED_FUNCTION(name) void name(INTERNAL_FUNCTION_PARAMETERS)
  
  /* checking in the same order as in configure.in */
  # if HAVE_SOLID
***************
*** 358,364 ****
  #  include <cli0ext1.h>
  #  define HAVE_SQL_EXTENDED_FETCH 0
  extern void php3_solid_fetch_prev(INTERNAL_FUNCTION_PARAMETERS);
! # elif HAVE_IODBC  && !MSVC5
  #  include <isql.h>
  #  include <isqlext.h>
  #  include <odbc_types.h>
--- 54,70 ----
  #  include <cli0ext1.h>
  #  define HAVE_SQL_EXTENDED_FETCH 0
  extern void php3_solid_fetch_prev(INTERNAL_FUNCTION_PARAMETERS);
! #  if defined(UODBC_UNIQUE_NAMES)
! #   define UODBC_TYPE solid
! #   define UODBC_FE(name, arg_types) UODBC_NAMED_FE(uodbc_##name, \
                php3_solid_##name, arg_types)
! #   define UODBC_FUNCTION(name) UODBC_NAMED_FUNCTION(php3_solid_##name)
! #   define UODBC_FNAME(name) php3i_solid_##name
! #   define ODBC_INI_VAR_NAME(name) #name
! #   define ODBC_INI_VAR(a) ODBC_INI_VAR_NAME(solid.##a)
! #  endif
! 
! 
! # elif HAVE_IODBC  && !(WIN32|WINNT)
  #  include <isql.h>
  #  include <isqlext.h>
  #  include <odbc_types.h>
***************
*** 370,375 ****
--- 76,89 ----
  #  define SQL_SO_DYNAMIC          0x00000004L
  #  define SQL_LEN_DATA_AT_EXEC_OFFSET  (-100)
  #  define SQL_LEN_DATA_AT_EXEC(length) (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET)
+ #  if defined(UODBC_UNIQUE_NAMES)
+ #   define UODBC_TYPE iodbc
+ #   define UODBC_FE(name, arg_types) UODBC_NAMED_FE(uodbc_##name, \
php3_iodbc_##name, arg_types) + #   define UODBC_FUNCTION(name) \
UODBC_NAMED_FUNCTION(php3_iodbc_##name) + #   define UODBC_FNAME(name) \
php3i_iodbc_##name + #   define ODBC_INI_VAR_NAME(name) #name
+ #   define ODBC_INI_VAR(a) ODBC_INI_VAR_NAME(iodbc.##a)
+ #  endif
  
  #elif HAVE_OPENLINK
  
***************
*** 378,383 ****
--- 92,105 ----
  #  include <isqlext.h>
  #  include <udbcext.h>
  #  define HAVE_SQL_EXTENDED_FETCH 1
+ #  if defined(UODBC_UNIQUE_NAMES)
+ #   define UODBC_TYPE opnlnk
+ #   define UODBC_FE(name, arg_types) UODBC_NAMED_FE(uodbc_##name, \
php3_opnlnk_##name, arg_types) + #   define UODBC_FUNCTION(name) \
UODBC_NAMED_FUNCTION(php3_opnlnk_##name) + #   define UODBC_FNAME(name) \
php3i_opnlnk_##name + #   define ODBC_INI_VAR_NAME(name) #name
+ #   define ODBC_INI_VAR(a) ODBC_INI_VAR_NAME(opnlnk.##a)
+ #  endif
  
  #elif HAVE_VELOCIS
  /* Nothing ??? */
***************
*** 385,407 ****
  #  define HAVE_SQL_EXTENDED_FETCH 1
  #  include <sql.h>
  #  include <sqlext.h>
  
  #elif HAVE_CODBC
  #  define HAVE_SQL_EXTENDED_FETCH 1
  #  include <odbc.h>
  
! # else
  #  define HAVE_SQL_EXTENDED_FETCH 1
  #  include <WINDOWS.H>
  #  include <sql.h>
  #  include <sqlext.h>
  # endif
  
  # ifndef MSVC5
  #  define FAR
  # endif
  
  extern php3_module_entry UODBC_MODULE_ENTRY;
  # define uodbc_module_ptr &UODBC_MODULE_ENTRY
  
  /* uODBC functions */
--- 107,209 ----
  #  define HAVE_SQL_EXTENDED_FETCH 1
  #  include <sql.h>
  #  include <sqlext.h>
+ #  if defined(UODBC_UNIQUE_NAMES)
+ #   define UODBC_TYPE velocis
+ #   define UODBC_FE(name, arg_types) UODBC_NAMED_FE(uodbc_##name, \
php3_velocis_##name, arg_types) + #   define UODBC_FUNCTION(name) \
UODBC_NAMED_FUNCTION(php3_velocis_##name) + #   define UODBC_FNAME(name) \
php3i_velocis_##name + #   define ODBC_INI_VAR_NAME(name) #name
+ #   define ODBC_INI_VAR(a) ODBC_INI_VAR_NAME(velocis.##a)
+ #  endif
  
  #elif HAVE_CODBC
  #  define HAVE_SQL_EXTENDED_FETCH 1
  #  include <odbc.h>
+ #  if defined(UODBC_UNIQUE_NAMES)
+ #   define UODBC_TYPE codbc
+ #   define UODBC_FE(name, arg_types) UODBC_NAMED_FE(uodbc_##name, \
php3_codbc_##name, arg_types) + #   define UODBC_FUNCTION(name) \
UODBC_NAMED_FUNCTION(php3_codbc_##name) + #   define UODBC_FNAME(name) \
php3i_codbc_##name + #   define ODBC_INI_VAR_NAME(name) #name
+ #   define ODBC_INI_VAR(a) ODBC_INI_VAR_NAME(codbc.##a)
+ #  endif
  
! # else /* MS ODBC */
  #  define HAVE_SQL_EXTENDED_FETCH 1
  #  include <WINDOWS.H>
  #  include <sql.h>
  #  include <sqlext.h>
+ #  if defined(UODBC_UNIQUE_NAMES)
+ #   define UODBC_TYPE odbc
+ #   define UODBC_FE(name, arg_types) UODBC_NAMED_FE(odbc_##name, php3_odbc_##name, \
arg_types) + #   define UODBC_FUNCTION(name) UODBC_NAMED_FUNCTION(php3_odbc_##name)
+ #   define UODBC_FNAME(name) php3i_odbc_##name
+ #   define ODBC_INI_VAR_NAME(name) #name
+ #   define ODBC_INI_VAR(a) ODBC_INI_VAR_NAME(uodbc.##a)
+ #  endif
  # endif
  
+ 
+ #if !defined(UODBC_UNIQUE_NAMES)
+ #define UODBC_TYPE odbc
+ #define UODBC_FE(name, arg_types) UODBC_NAMED_FE(odbc_##name, php3_odbc_##name, \
arg_types) + #define UODBC_FUNCTION(name) UODBC_NAMED_FUNCTION(php3_odbc_##name)
+ #define UODBC_FNAME(name) php3i_odbc_##name
+ #define ODBC_INI_VAR_NAME(name) #name
+ #define ODBC_INI_VAR(a) ODBC_INI_VAR_NAME(uodbc.##a)
+ #define UODBC_VAR_NAME(name) name
+ #define UODBC_VAR(a) UODBC_VAR_NAME(uodbc_##a)
+ #define PHP3_UODBC_VAR(a) UODBC_VAR_NAME(php3_uodbc_##a)
+ #endif
+ 
+ 
+ 
+ /*
+ *
+ *  Defines for ODBC
+ *
+ */
+ 
+ /* win32 vars for thread local storage */
+ #define UODBC_MUTEX UODBC_VAR(mutex)
+ #define UODBC_TLS UODBC_VAR(Tls)
+ #define UODBC_GLOBAL_STRUCT UODBC_VAR(global_struct)
+ #define UODBC_GLOBALS UODBC_VAR(globals)
+ /* defines for variables, structs, etc */
+ #define UODBC_MODULE_NAME "ODBC (UODBC_TYPE)"
+ #define UODBC_FUNCTIONS UODBC_VAR(functions)
+ #define UODBC_MODULE_ENTRY UODBC_VAR(module_entry)
+ #define UODBC_CONNECTION UODBC_VAR(connection)
+ #define UODBC_RESULT_VALUE UODBC_VAR(result_value)
+ #define UODBC_RESULT UODBC_VAR(result)
+ #define UODBC_MODULE UODBC_VAR(module)
+ #define UODBC_MODULE_PTR UODBC_VAR(module_ptr)
+ #define PHP3_UODBC_MODULE PHP3_UODBC_VAR(module)
+ 
+ /* function defines */
+ #define PHP3_MINIT_UODBC UODBC_FNAME(minit)
+ #define PHP3_MSHUTDOWN_UODBC UODBC_FNAME(mshutdown)
+ #define PHP3_RINIT_UODBC UODBC_FNAME(rinit)
+ #define PHP3_INFO_UODBC UODBC_FNAME(info)
+ 
+ /* internal function defines */
+ #define UODBC_ADD_RESULT UODBC_FNAME(add_result)
+ #define UODBC_GET_RESULT UODBC_FNAME(get_result)
+ #define UODBC_DEL_RESULT UODBC_FNAME(del_result)
+ #define UODBC_ADD_CONN UODBC_FNAME(add_conn)
+ #define UODBC_GET_CONN UODBC_FNAME(get_conn)
+ #define UODBC_DEL_CONN UODBC_FNAME(del_conn)
+ #define UODBC_SQL_ERROR UODBC_FNAME(sql_error)
+ #define UODBC_BINDCOLS UODBC_FNAME(bindcols)
+ #define PHP3_UODBC_DO_CONNECT UODBC_FNAME(_do_connect)
+ #define PHP3_UODBC_TRANSACT UODBC_FNAME(_do_transact)
+ 
  # ifndef MSVC5
  #  define FAR
  # endif
  
  extern php3_module_entry UODBC_MODULE_ENTRY;
+ /* FIXME 3.1.  have to do something with this define */
  # define uodbc_module_ptr &UODBC_MODULE_ENTRY
  
  /* uODBC functions */
***************
*** 409,441 ****
  extern int PHP3_MSHUTDOWN_UODBC(void);
  extern int PHP3_RINIT_UODBC(INIT_FUNC_ARGS);
  extern void PHP3_INFO_UODBC(void);
! extern void PHP3_UODBC_SETOPTION(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_AUTOCOMMIT(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_CLOSE(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UDOBC_CLOSE_ALL(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_COMMIT(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_CONNECT(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_PCONNECT(INTERNAL_FUNCTION_PARAMETERS);
  extern void PHP3_UODBC_DO_CONNECT(INTERNAL_FUNCTION_PARAMETERS, int);
! extern void PHP3_UODBC_CURSOR(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_DO(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_EXECUTE(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_FETCH_INTO(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_FETCH_ROW(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_FIELD_LEN(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_FIELD_NAME(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_FIELD_TYPE(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_FIELD_NUM(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_FREE_RESULT(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_NUM_FIELDS(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_NUM_ROWS(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_PREPARE(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_RESULT(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_RESULT_ALL(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_ROLLBACK(INTERNAL_FUNCTION_PARAMETERS);
  extern void PHP3_UODBC_TRANSACT(INTERNAL_FUNCTION_PARAMETERS, int);
! extern void PHP3_UODBC_BINMODE(INTERNAL_FUNCTION_PARAMETERS);
! extern void PHP3_UODBC_LONGREADLEN(INTERNAL_FUNCTION_PARAMETERS);
  
  typedef struct UODBC_CONNECTION {
  	HDBC hdbc;
--- 211,244 ----
  extern int PHP3_MSHUTDOWN_UODBC(void);
  extern int PHP3_RINIT_UODBC(INIT_FUNC_ARGS);
  extern void PHP3_INFO_UODBC(void);
! extern UODBC_FUNCTION(setoption);
! extern UODBC_FUNCTION(autocommit);
! extern UODBC_FUNCTION(close);
! extern UODBC_FUNCTION(close_all);
! extern UODBC_FUNCTION(commit);
! extern UODBC_FUNCTION(connect);
! extern UODBC_FUNCTION(pconnect);
  extern void PHP3_UODBC_DO_CONNECT(INTERNAL_FUNCTION_PARAMETERS, int);
! extern UODBC_FUNCTION(cursor);
! extern UODBC_FUNCTION(exec);
! extern UODBC_FUNCTION(do);
! extern UODBC_FUNCTION(execute);
! extern UODBC_FUNCTION(fetch_into);
! extern UODBC_FUNCTION(fetch_row);
! extern UODBC_FUNCTION(field_len);
! extern UODBC_FUNCTION(field_name);
! extern UODBC_FUNCTION(field_type);
! extern UODBC_FUNCTION(field_num);
! extern UODBC_FUNCTION(free_result);
! extern UODBC_FUNCTION(num_fields);
! extern UODBC_FUNCTION(num_rows);
! extern UODBC_FUNCTION(prepare);
! extern UODBC_FUNCTION(result);
! extern UODBC_FUNCTION(result_all);
! extern UODBC_FUNCTION(rollback);
  extern void PHP3_UODBC_TRANSACT(INTERNAL_FUNCTION_PARAMETERS, int);
! extern UODBC_FUNCTION(binmode);
! extern UODBC_FUNCTION(longreadlen);
  
  typedef struct UODBC_CONNECTION {
  	HDBC hdbc;
***************
*** 495,502 ****
  int UODBC_BINDCOLS(UODBC_RESULT *result);
  
  #define IS_SQL_LONG(x) (x == SQL_LONGVARBINARY || x == SQL_LONGVARCHAR)
! #define IS_SQL_BINARY(x) (x == SQL_BINARY || x == SQL_VARBINARY || \
!                           x == SQL_LONGVARBINARY)
  
  #else
  # define uodbc_module_ptr NULL
--- 298,304 ----
  int UODBC_BINDCOLS(UODBC_RESULT *result);
  
  #define IS_SQL_LONG(x) (x == SQL_LONGVARBINARY || x == SQL_LONGVARCHAR)
! #define IS_SQL_BINARY(x) (x == SQL_BINARY || x == SQL_VARBINARY || x == \
SQL_LONGVARBINARY)  
  #else
  # define uodbc_module_ptr NULL
Index: php31/ext/odbc/unified_odbc.c
diff -c php31/ext/odbc/unified_odbc.c:2.16 php31/ext/odbc/unified_odbc.c:2.17
*** php31/ext/odbc/unified_odbc.c:2.16	Sat Oct 17 16:45:37 1998
--- php31/ext/odbc/unified_odbc.c	Thu Oct 29 01:04:58 1998
***************
*** 69,76 ****
  
  #define UODBC_GLOBAL(a) UODBC_GLOBALS->a
  
! #define UODBC_TLS_VARS \
! 	UODBC_GLOBAL_STRUCT *UODBC_GLOBALS = TlsGetValue(UODBC_TLS); 
  
  #else
  UODBC_MODULE PHP3_UODBC_MODULE;
--- 69,75 ----
  
  #define UODBC_GLOBAL(a) UODBC_GLOBALS->a
  
! #define UODBC_TLS_VARS UODBC_GLOBAL_STRUCT *UODBC_GLOBALS = TlsGetValue(UODBC_TLS); \
  
  #else
  UODBC_MODULE PHP3_UODBC_MODULE;
***************
*** 79,114 ****
  #endif
  
  function_entry UODBC_FUNCTIONS[] = {
! 	{ODBC_SETOPTION,	PHP3_UODBC_SETOPTION,	NULL},
! 	{ODBC_AUTOCOMMIT,	PHP3_UODBC_AUTOCOMMIT,	NULL},
! 	{ODBC_CLOSE,		PHP3_UODBC_CLOSE,		NULL},
! 	{ODBC_CLOSE_ALL,	PHP3_UDOBC_CLOSE_ALL,	NULL},
! 	{ODBC_COMMIT,		PHP3_UODBC_COMMIT,		NULL},
! 	{ODBC_CONNECT,		PHP3_UODBC_CONNECT,		NULL},
! 	{ODBC_PCONNECT,		PHP3_UODBC_PCONNECT,	NULL},
! 	{ODBC_CURSOR,		PHP3_UODBC_CURSOR,		NULL},
! 	{ODBC_DO,			PHP3_UODBC_DO,			NULL},
! 	{ODBC_EXEC,			PHP3_UODBC_DO,			NULL},
! 	{ODBC_PREPARE,		PHP3_UODBC_PREPARE,		NULL},
! 	{ODBC_EXECUTE,		PHP3_UODBC_EXECUTE,		NULL},
! 	{ODBC_FETCH_ROW, 	PHP3_UODBC_FETCH_ROW,	NULL},
! 	{ODBC_FETCH_INTO,	PHP3_UODBC_FETCH_INTO,	NULL},
! 	{ODBC_FIELD_LEN, 	PHP3_UODBC_FIELD_LEN,	NULL},
! 	{ODBC_FIELD_NAME,	PHP3_UODBC_FIELD_NAME,	NULL},
! 	{ODBC_FIELD_TYPE,	PHP3_UODBC_FIELD_TYPE,	NULL},
! 	{ODBC_FIELD_NUM,	PHP3_UODBC_FIELD_NUM,	NULL},
! 	{ODBC_FREE_RESULT,	PHP3_UODBC_FREE_RESULT,	NULL},
! 	{ODBC_NUM_FIELDS,	PHP3_UODBC_NUM_FIELDS,	NULL},
! 	{ODBC_NUM_ROWS,		PHP3_UODBC_NUM_ROWS,	NULL},
! 	{ODBC_RESULT,		PHP3_UODBC_RESULT,		NULL},
! 	{ODBC_RESULT_ALL,	PHP3_UODBC_RESULT_ALL,	NULL},
! 	{ODBC_ROLLBACK,		PHP3_UODBC_ROLLBACK,	NULL},
! 	{ODBC_BINMODE,		PHP3_UODBC_BINMODE,	NULL},
! 	{ODBC_LONGREADLEN,	PHP3_UODBC_LONGREADLEN,	NULL},
  #if HAVE_SOLID
  	{"solid_fetch_prev",php3_solid_fetch_prev,	NULL},
  #endif
! #if HAVE_IODBC
  /* for backwards compatibility with the older odbc module*/
  	{"sqlconnect",		php3_uodbc_connect,		NULL},
  	{"sqldisconnect",	php3_uodbc_close,		NULL},
--- 78,113 ----
  #endif
  
  function_entry UODBC_FUNCTIONS[] = {
! 	UODBC_FE(setoption, NULL),
! 	UODBC_FE(autocommit, NULL),
! 	UODBC_FE(close, NULL),
! 	UODBC_FE(close_all, NULL),
! 	UODBC_FE(commit, NULL),
! 	UODBC_FE(connect, NULL),
! 	UODBC_FE(pconnect, NULL),
! 	UODBC_FE(cursor, NULL),
! 	UODBC_FE(do, NULL),
! 	UODBC_FE(exec, NULL),
! 	UODBC_FE(prepare, NULL),
! 	UODBC_FE(execute, NULL),
! 	UODBC_FE(fetch_row, NULL),
! 	UODBC_FE(fetch_into, NULL),
! 	UODBC_FE(field_len, NULL),
! 	UODBC_FE(field_name, NULL),
! 	UODBC_FE(field_type, NULL),
! 	UODBC_FE(field_num, NULL),
! 	UODBC_FE(free_result, NULL),
! 	UODBC_FE(num_fields, NULL),
! 	UODBC_FE(num_rows, NULL),
! 	UODBC_FE(result, NULL),
! 	UODBC_FE(result_all, NULL),
! 	UODBC_FE(rollback, NULL),
! 	UODBC_FE(binmode, NULL),
! 	UODBC_FE(longreadlen, NULL),
  #if HAVE_SOLID
  	{"solid_fetch_prev",php3_solid_fetch_prev,	NULL},
  #endif
! #if 0 && HAVE_IODBC /* this won't work with the new system */
  /* for backwards compatibility with the older odbc module*/
  	{"sqlconnect",		php3_uodbc_connect,		NULL},
  	{"sqldisconnect",	php3_uodbc_close,		NULL},
***************
*** 122,129 ****
  };
  
  php3_module_entry UODBC_MODULE_ENTRY = {
!     UODBC_MODULE_NAME, UODBC_FUNCTIONS, PHP3_MINIT_UODBC, PHP3_MSHUTDOWN_UODBC,
!     PHP3_RINIT_UODBC, NULL, PHP3_INFO_UODBC, STANDARD_MODULE_PROPERTIES
  };
  
  
--- 121,134 ----
  };
  
  php3_module_entry UODBC_MODULE_ENTRY = {
!     UODBC_MODULE_NAME, 
! 	UODBC_FUNCTIONS, 
! 	PHP3_MINIT_UODBC, 
! 	PHP3_MSHUTDOWN_UODBC,
!     PHP3_RINIT_UODBC, 
! 	NULL, 
! 	PHP3_INFO_UODBC, 
! 	STANDARD_MODULE_PROPERTIES
  };
  
  
***************
*** 134,140 ****
  
  #include "php3_list.h"
  
! static void _FREE_UODBC_RESULT(UODBC_RESULT *res)
  {
  	int i;
  	
--- 139,145 ----
  
  #include "php3_list.h"
  
! static void _free_result(UODBC_RESULT *res)
  {
  	int i;
  	
***************
*** 173,179 ****
  	return 0;
  }
  
! static void _CLOSE_UODBC_CONNECTION(UODBC_CONNECTION *conn)
  {
  	/* FIXME
  	 * Closing a connection will fail if there are
--- 178,184 ----
  	return 0;
  }
  
! static void _close_connection(UODBC_CONNECTION *conn)
  {
  	/* FIXME
  	 * Closing a connection will fail if there are
***************
*** 191,197 ****
  }
  
  
! static void _CLOSE_UODBC_PCONNECTION(UODBC_CONNECTION *conn)
  {
  	UODBC_TLS_VARS;
  
--- 196,202 ----
  }
  
  
! static void _close_pconnection(UODBC_CONNECTION *conn)
  {
  	UODBC_TLS_VARS;
  
***************
*** 239,261 ****
  	SQLAllocEnv(&UODBC_GLOBAL(PHP3_UODBC_MODULE).henv);
  	
  #if !PHP_31
! 	cfg_get_string(ODBC_INI_DEFAULTDB,
  				   &UODBC_GLOBAL(PHP3_UODBC_MODULE).defDB);
! 	cfg_get_string(ODBC_INI_DEFAULTUSER,
  				   &UODBC_GLOBAL(PHP3_UODBC_MODULE).defUser);
! 	cfg_get_string(ODBC_INI_DEFAULTPW,
  				   &UODBC_GLOBAL(PHP3_UODBC_MODULE).defPW);
! 	if (cfg_get_long(ODBC_INI_ALLOWPERSISTENT,
  					 &UODBC_GLOBAL(PHP3_UODBC_MODULE).allow_persistent)
  		== FAILURE) {
  		UODBC_GLOBAL(PHP3_UODBC_MODULE).allow_persistent = -1;
  	}
! 	if (cfg_get_long(ODBC_INI_MAXPERSISTENT,
  					 &UODBC_GLOBAL(PHP3_UODBC_MODULE).max_persistent)
  		== FAILURE) {
  		UODBC_GLOBAL(PHP3_UODBC_MODULE).max_persistent = -1;
  	}
! 	if (cfg_get_long(ODBC_INI_MAXLINKS,
  					 &UODBC_GLOBAL(PHP3_UODBC_MODULE).max_links)
  		== FAILURE) {
  		UODBC_GLOBAL(PHP3_UODBC_MODULE).max_links = -1;
--- 244,266 ----
  	SQLAllocEnv(&UODBC_GLOBAL(PHP3_UODBC_MODULE).henv);
  	
  #if !PHP_31
! 	cfg_get_string(ODBC_INI_VAR(default_db),
  				   &UODBC_GLOBAL(PHP3_UODBC_MODULE).defDB);
! 	cfg_get_string(ODBC_INI_VAR(default_user),
  				   &UODBC_GLOBAL(PHP3_UODBC_MODULE).defUser);
! 	cfg_get_string(ODBC_INI_VAR(default_pw),
  				   &UODBC_GLOBAL(PHP3_UODBC_MODULE).defPW);
! 	if (cfg_get_long(ODBC_INI_VAR(allow_persistent),
  					 &UODBC_GLOBAL(PHP3_UODBC_MODULE).allow_persistent)
  		== FAILURE) {
  		UODBC_GLOBAL(PHP3_UODBC_MODULE).allow_persistent = -1;
  	}
! 	if (cfg_get_long(ODBC_INI_VAR(max_persistent),
  					 &UODBC_GLOBAL(PHP3_UODBC_MODULE).max_persistent)
  		== FAILURE) {
  		UODBC_GLOBAL(PHP3_UODBC_MODULE).max_persistent = -1;
  	}
! 	if (cfg_get_long(ODBC_INI_VAR(max_links),
  					 &UODBC_GLOBAL(PHP3_UODBC_MODULE).max_links)
  		== FAILURE) {
  		UODBC_GLOBAL(PHP3_UODBC_MODULE).max_links = -1;
***************
*** 269,279 ****
  	UODBC_GLOBAL(PHP3_UODBC_MODULE).num_persistent = 0;
  
  	UODBC_GLOBAL(PHP3_UODBC_MODULE).le_result =
! 		register_list_destructors(_FREE_UODBC_RESULT, NULL);
  	UODBC_GLOBAL(PHP3_UODBC_MODULE).le_conn =
! 		register_list_destructors(_CLOSE_UODBC_CONNECTION, NULL);
  	UODBC_GLOBAL(PHP3_UODBC_MODULE).le_pconn =
! 		register_list_destructors(NULL, _CLOSE_UODBC_PCONNECTION);
  
  #ifdef SQLANY_BUG
  /* Make a dumb connection to avoid crash on SQLFreeEnv(),
--- 274,284 ----
  	UODBC_GLOBAL(PHP3_UODBC_MODULE).num_persistent = 0;
  
  	UODBC_GLOBAL(PHP3_UODBC_MODULE).le_result =
! 		register_list_destructors(_free_result, NULL);
  	UODBC_GLOBAL(PHP3_UODBC_MODULE).le_conn =
! 		register_list_destructors(_close_connection, NULL);
  	UODBC_GLOBAL(PHP3_UODBC_MODULE).le_pconn =
! 		register_list_destructors(NULL, _close_pconnection);
  
  #ifdef SQLANY_BUG
  /* Make a dumb connection to avoid crash on SQLFreeEnv(),
***************
*** 312,322 ****
  		UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultlrl = 4096;
  		UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultbinmode = 1;
  #else
! 	if (cfg_get_long(ODBC_INI_DEFAULTLRL, &UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultlrl)
  		== FAILURE){
  		UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultlrl = 4096;
  	}
! 	if (cfg_get_long(ODBC_INI_DEFAULTBINMODE, \
&UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultbinmode) == FAILURE){  \
UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultbinmode = 1;  }
  #endif
--- 317,327 ----
  		UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultlrl = 4096;
  		UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultbinmode = 1;
  #else
! 	if (cfg_get_long(ODBC_INI_VAR(defaultlrl), \
&UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultlrl)  == FAILURE){
  		UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultlrl = 4096;
  	}
! 	if (cfg_get_long(ODBC_INI_VAR(defaultbinmode), \
&UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultbinmode) == FAILURE){  \
UODBC_GLOBAL(PHP3_UODBC_MODULE).defaultbinmode = 1;  }
  #endif
***************
*** 346,354 ****
  
  void PHP3_INFO_UODBC(void)
  {
! #if !defined(COMPILE_DL) && defined(THREAD_SAFE)
! 	TLS_VARS;
! #endif
  #if HAVE_SOLID
  	PUTS("Unified ODBC Support active (compiled with Solid)");
  #elif HAVE_ADABAS
--- 351,358 ----
  
  void PHP3_INFO_UODBC(void)
  {
! 	UODBC_TLS_VARS;
! 
  #if HAVE_SOLID
  	PUTS("Unified ODBC Support active (compiled with Solid)");
  #elif HAVE_ADABAS
***************
*** 362,368 ****
  #else
  	PUTS("Unified ODBC Support active (compiled with unknown library)");
  #endif
! }
  
  
  /*
--- 366,384 ----
  #else
  	PUTS("Unified ODBC Support active (compiled with unknown library)");
  #endif
! 	PUTS("<BR>");
! #if DEBUG
! 	php3_printf("default_db: %s<br>\n",UODBC_GLOBAL(PHP3_UODBC_MODULE).defDB);
! 	php3_printf("default_user: %s<br>\n",UODBC_GLOBAL(PHP3_UODBC_MODULE).defUser);
! 	php3_printf("default_pw: %s<br>\n",UODBC_GLOBAL(PHP3_UODBC_MODULE).defPW);
! #endif
! 	php3_printf("allow_persistent: \
                %d<br>\n",UODBC_GLOBAL(PHP3_UODBC_MODULE).allow_persistent);
! 	php3_printf("max_persistent: \
                %d<br>\n",UODBC_GLOBAL(PHP3_UODBC_MODULE).max_persistent);
! 	php3_printf("max_links: %d<br>\n",UODBC_GLOBAL(PHP3_UODBC_MODULE).max_links);
! }	 
! 	 
! 	 
! 
  
  
  /*
***************
*** 473,479 ****
  
  /* Main User Functions */
  
! void PHP3_UDOBC_CLOSE_ALL(INTERNAL_FUNCTION_PARAMETERS)
  {
  	void *ptr;
  	int type;
--- 489,495 ----
  
  /* Main User Functions */
  
! UODBC_FUNCTION(close_all)
  {
  	void *ptr;
  	int type;
***************
*** 505,511 ****
  	res_ind = arg1->value.lval;
  
      if (res_ind){           
!         if ((result = uodbc_get_result(list, res_ind)) == NULL){
              RETURN_FALSE;
          }
          if (mode)
--- 521,527 ----
  	res_ind = arg1->value.lval;
  
      if (res_ind){           
!         if ((result = UODBC_GET_RESULT(list, res_ind)) == NULL){
              RETURN_FALSE;
          }
          if (mode)
***************
*** 522,533 ****
  	RETURN_TRUE
  }
  
! void PHP3_UODBC_BINMODE(INTERNAL_FUNCTION_PARAMETERS)
  {
  	php3_uodbc_fetch_attribs(INTERNAL_FUNCTION_PARAM_PASSTHRU,0);
  }
  
! void PHP3_UODBC_LONGREADLEN(INTERNAL_FUNCTION_PARAMETERS)
  {
  	php3_uodbc_fetch_attribs(INTERNAL_FUNCTION_PARAM_PASSTHRU,1);
  }
--- 538,549 ----
  	RETURN_TRUE
  }
  
! UODBC_FUNCTION(binmode)
  {
  	php3_uodbc_fetch_attribs(INTERNAL_FUNCTION_PARAM_PASSTHRU,0);
  }
  
! UODBC_FUNCTION(longreadlen)
  {
  	php3_uodbc_fetch_attribs(INTERNAL_FUNCTION_PARAM_PASSTHRU,1);
  }
***************
*** 591,597 ****
      return 1;
  }
  
! void PHP3_UODBC_PREPARE(INTERNAL_FUNCTION_PARAMETERS)
  {
  	pval     *arg1, *arg2;
  	int         conn;
--- 607,613 ----
      return 1;
  }
  
! UODBC_FUNCTION(prepare)
  {
  	pval     *arg1, *arg2;
  	int         conn;
***************
*** 663,669 ****
   * Execute prepared SQL statement. Supports only input parameters.
   */
  
! void PHP3_UODBC_EXECUTE(INTERNAL_FUNCTION_PARAMETERS)
  { 
      pval *arg1, *arg2, arr, *tmp;
      typedef struct params_t {
--- 679,685 ----
   * Execute prepared SQL statement. Supports only input parameters.
   */
  
! extern UODBC_FUNCTION(execute)
  { 
      pval *arg1, *arg2, arr, *tmp;
      typedef struct params_t {
***************
*** 786,792 ****
  	rc = SQLFreeStmt(result->stmt, SQL_CLOSE);
  
  	if (rc == SQL_ERROR){
! 		uodbc_sql_error(result->conn_ptr->hdbc, result->stmt, "SQLFreeStmt");	
  	}
  
  	rc = SQLExecute(result->stmt);
--- 802,808 ----
  	rc = SQLFreeStmt(result->stmt, SQL_CLOSE);
  
  	if (rc == SQL_ERROR){
! 		UODBC_SQL_ERROR(result->conn_ptr->hdbc, result->stmt, "SQLFreeStmt");	
  	}
  
  	rc = SQLExecute(result->stmt);
***************
*** 829,835 ****
   * Adabas automagically generates cursor names, other drivers may not
   */
  
! void PHP3_UODBC_CURSOR(INTERNAL_FUNCTION_PARAMETERS)
  {
  	pval     *arg1;
  	int			res_ind;
--- 845,851 ----
   * Adabas automagically generates cursor names, other drivers may not
   */
  
! UODBC_FUNCTION(cursor)
  {
  	pval     *arg1;
  	int			res_ind;
***************
*** 892,899 ****
  		RETVAL_FALSE;
  	}
  }
  
! void PHP3_UODBC_DO(INTERNAL_FUNCTION_PARAMETERS)
  {
  	pval 	*arg1, *arg2;
  	int         conn;
--- 908,920 ----
  		RETVAL_FALSE;
  	}
  }
+ 
+ UODBC_FUNCTION(do)
+ {
+ 	UODBC_FUNCTION(exec);
+ }
  
! UODBC_FUNCTION(exec)
  {
  	pval 	*arg1, *arg2;
  	int         conn;
***************
*** 989,995 ****
  	RETURN_LONG(UODBC_ADD_RESULT(list, result));
  }
  
! void PHP3_UODBC_FETCH_INTO(INTERNAL_FUNCTION_PARAMETERS)
  {
  	int         res_ind, numArgs, i;
  	UODBC_RESULT   *result;
--- 1010,1016 ----
  	RETURN_LONG(UODBC_ADD_RESULT(list, result));
  }
  
! UODBC_FUNCTION(fetch_into)
  {
  	int         res_ind, numArgs, i;
  	UODBC_RESULT   *result;
***************
*** 1105,1111 ****
  								buf, result->longreadlen + 1, &result->values[i].vallen);
  
                  if (rc == SQL_ERROR) {
! 					uodbc_sql_error(result->conn_ptr->hdbc, result->stmt, "SQLGetData");
  					efree(buf);
  					RETURN_FALSE;
  				}
--- 1126,1132 ----
  								buf, result->longreadlen + 1, &result->values[i].vallen);
  
                  if (rc == SQL_ERROR) {
! 					UODBC_SQL_ERROR(result->conn_ptr->hdbc, result->stmt, "SQLGetData");
  					efree(buf);
  					RETURN_FALSE;
  				}
***************
*** 1170,1176 ****
  }
  #endif
  						
! void PHP3_UODBC_FETCH_ROW(INTERNAL_FUNCTION_PARAMETERS)
  {
  	int         res_ind, numArgs;
  	SDWORD      rownum = 1;
--- 1191,1197 ----
  }
  #endif
  						
! UODBC_FUNCTION(fetch_row)
  {
  	int         res_ind, numArgs;
  	SDWORD      rownum = 1;
***************
*** 1229,1235 ****
  	RETURN_TRUE;
  }	
  
! void PHP3_UODBC_RESULT(INTERNAL_FUNCTION_PARAMETERS)
  {
  	char        *field;
  	int         res_ind;
--- 1250,1256 ----
  	RETURN_TRUE;
  }	
  
! UODBC_FUNCTION(result)
  {
  	char        *field;
  	int         res_ind;
***************
*** 1344,1350 ****
                              field, fieldsize, &result->values[field_ind].vallen);
              
              if (rc == SQL_ERROR) {
!                 uodbc_sql_error(result->conn_ptr->hdbc, result->stmt, \
"SQLGetData");  efree(field);
                  RETURN_FALSE;
              }
--- 1365,1371 ----
                              field, fieldsize, &result->values[field_ind].vallen);
              
              if (rc == SQL_ERROR) {
!                 UODBC_SQL_ERROR(result->conn_ptr->hdbc, result->stmt, \
"SQLGetData");  efree(field);
                  RETURN_FALSE;
              }
***************
*** 1391,1397 ****
                              field, fieldsize, &result->values[field_ind].vallen);
  
  		if (rc == SQL_ERROR) {
! 			uodbc_sql_error(result->conn_ptr->hdbc, result->stmt, "SQLGetData");
              efree(field);
  			RETURN_FALSE;
  		}
--- 1412,1418 ----
                              field, fieldsize, &result->values[field_ind].vallen);
  
  		if (rc == SQL_ERROR) {
! 			UODBC_SQL_ERROR(result->conn_ptr->hdbc, result->stmt, "SQLGetData");
              efree(field);
  			RETURN_FALSE;
  		}
***************
*** 1412,1418 ****
  	RETURN_TRUE;
  }
  
! void PHP3_UODBC_RESULT_ALL(INTERNAL_FUNCTION_PARAMETERS)
  {
  	char *buf = NULL;
  	int         res_ind, numArgs;
--- 1433,1439 ----
  	RETURN_TRUE;
  }
  
! UODBC_FUNCTION(result_all)
  {
  	char *buf = NULL;
  	int         res_ind, numArgs;
***************
*** 1504,1510 ****
                      php3_printf("<td>");
  
                      if (rc == SQL_ERROR) {
!                         uodbc_sql_error(result->conn_ptr->hdbc, result->stmt, \
"SQLGetData");  php3_printf("</td></tr></table>");
                          efree(buf);
                          RETURN_FALSE;
--- 1525,1531 ----
                      php3_printf("<td>");
  
                      if (rc == SQL_ERROR) {
!                         UODBC_SQL_ERROR(result->conn_ptr->hdbc, result->stmt, \
"SQLGetData");  php3_printf("</td></tr></table>");
                          efree(buf);
                          RETURN_FALSE;
***************
*** 1542,1548 ****
  	RETURN_LONG(result->fetched);
  }
  
! void PHP3_UODBC_FREE_RESULT(INTERNAL_FUNCTION_PARAMETERS)
  {
  	pval *arg1;
  	
--- 1563,1569 ----
  	RETURN_LONG(result->fetched);
  }
  
! UODBC_FUNCTION(free_result)
  {
  	pval *arg1;
  	
***************
*** 1554,1565 ****
  	RETURN_TRUE;
  }
  
! void PHP3_UODBC_CONNECT(INTERNAL_FUNCTION_PARAMETERS)
  {
  	PHP3_UODBC_DO_CONNECT(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
  }
  
! void PHP3_UODBC_PCONNECT(INTERNAL_FUNCTION_PARAMETERS)
  {
  	PHP3_UODBC_DO_CONNECT(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
  }
--- 1575,1586 ----
  	RETURN_TRUE;
  }
  
! UODBC_FUNCTION(connect)
  {
  	PHP3_UODBC_DO_CONNECT(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
  }
  
! UODBC_FUNCTION(pconnect)
  {
  	PHP3_UODBC_DO_CONNECT(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
  }
***************
*** 1767,1773 ****
  	return_value->type = IS_LONG;
  }
  
! void PHP3_UODBC_CLOSE(INTERNAL_FUNCTION_PARAMETERS)
  {
  	pval *arg1;
  	HDBC conn;
--- 1788,1794 ----
  	return_value->type = IS_LONG;
  }
  
! UODBC_FUNCTION(close)
  {
  	pval *arg1;
  	HDBC conn;
***************
*** 1788,1794 ****
  	php3_list_delete(ind);
  }
  
! void PHP3_UODBC_NUM_ROWS(INTERNAL_FUNCTION_PARAMETERS)
  {
  	UODBC_RESULT   *result;
  	SDWORD      rows;
--- 1809,1815 ----
  	php3_list_delete(ind);
  }
  
! UODBC_FUNCTION(num_rows)
  {
  	UODBC_RESULT   *result;
  	SDWORD      rows;
***************
*** 1808,1814 ****
  	RETURN_LONG(rows);
  }
  
! void PHP3_UODBC_NUM_FIELDS(INTERNAL_FUNCTION_PARAMETERS)
  {
  	UODBC_RESULT   *result;
  	pval     *arg1;
--- 1829,1835 ----
  	RETURN_LONG(rows);
  }
  
! UODBC_FUNCTION(num_fields)
  {
  	UODBC_RESULT   *result;
  	pval     *arg1;
***************
*** 1825,1831 ****
  	RETURN_LONG(result->numcols);
  }
  
! void PHP3_UODBC_FIELD_NAME(INTERNAL_FUNCTION_PARAMETERS)
  {
  	UODBC_RESULT       *result;
  	pval     *arg1, *arg2;
--- 1846,1852 ----
  	RETURN_LONG(result->numcols);
  }
  
! UODBC_FUNCTION(field_name)
  {
  	UODBC_RESULT       *result;
  	pval     *arg1, *arg2;
***************
*** 1859,1865 ****
  	RETURN_STRING(result->values[arg2->value.lval - 1].name,1)
  }
  
! void PHP3_UODBC_FIELD_TYPE(INTERNAL_FUNCTION_PARAMETERS)
  {
  	UODBC_RESULT	*result;
  	char    	tmp[32];
--- 1880,1886 ----
  	RETURN_STRING(result->values[arg2->value.lval - 1].name,1)
  }
  
! UODBC_FUNCTION(field_type)
  {
  	UODBC_RESULT	*result;
  	char    	tmp[32];
***************
*** 1892,1898 ****
  	RETURN_STRING(tmp,1)
  }
  
! void PHP3_UODBC_FIELD_LEN(INTERNAL_FUNCTION_PARAMETERS)
  {
  	UODBC_RESULT       *result;
  	SDWORD  len;
--- 1913,1919 ----
  	RETURN_STRING(tmp,1)
  }
  
! UODBC_FUNCTION(field_len)
  {
  	UODBC_RESULT       *result;
  	SDWORD  len;
***************
*** 1924,1930 ****
  	RETURN_LONG(len);
  }
  
! void PHP3_UODBC_FIELD_NUM(INTERNAL_FUNCTION_PARAMETERS)
  {
  	int         field_ind;
  	char        *fname;
--- 1945,1951 ----
  	RETURN_LONG(len);
  }
  
! UODBC_FUNCTION(field_num)
  {
  	int         field_ind;
  	char        *fname;
***************
*** 1958,1964 ****
  	RETURN_LONG(field_ind);
  }
  
! void PHP3_UODBC_AUTOCOMMIT(INTERNAL_FUNCTION_PARAMETERS)
  {
  	UODBC_CONNECTION *curr_conn;
  	RETCODE rc;
--- 1979,1985 ----
  	RETURN_LONG(field_ind);
  }
  
! UODBC_FUNCTION(autocommit)
  {
  	UODBC_CONNECTION *curr_conn;
  	RETCODE rc;
***************
*** 2034,2051 ****
  	RETURN_TRUE;
  }
  
! void PHP3_UODBC_COMMIT(INTERNAL_FUNCTION_PARAMETERS)
  {
  	PHP3_UODBC_TRANSACT(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
  }
  
! void PHP3_UODBC_ROLLBACK(INTERNAL_FUNCTION_PARAMETERS)
  {
  	PHP3_UODBC_TRANSACT(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
  }
  
  
! void PHP3_UODBC_SETOPTION(INTERNAL_FUNCTION_PARAMETERS)
  {
  	UODBC_CONNECTION *curr_conn;
  	UODBC_RESULT	*result;
--- 2055,2072 ----
  	RETURN_TRUE;
  }
  
! UODBC_FUNCTION(commit)
  {
  	PHP3_UODBC_TRANSACT(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
  }
  
! UODBC_FUNCTION(rollback)
  {
  	PHP3_UODBC_TRANSACT(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
  }
  
  
! UODBC_FUNCTION(setoption)
  {
  	UODBC_CONNECTION *curr_conn;
  	UODBC_RESULT	*result;

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic