-/** Load driver and resolve driver's function entry point
-
- Copyright (C) 1995 by Ke Jin <kejin@empress.com>
+/** Load driver and resolve driver's function entry point
+
+ Copyright (C) 1995 by Ke Jin <kejin@empress.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
GNU General Public License for more details.
**/
+
#include <../iodbc/iodbc.h>
#include <../iodbc/isql.h>
#include "../iodbc/henv.ci"
-HPROC _iodbcdm_getproc( HDBC hdbc, int idx )
+HPROC _iodbcdm_getproc( HDBC hdbc, int idx )
{
- DBC_t FAR* pdbc = (DBC_t FAR*)hdbc;
- ENV_t FAR* penv;
-/* HDLL hdll; */
- HPROC FAR* phproc;
-
- if( idx <= 0 || idx > SQL_EXT_API_LAST )
- /* first entry naver used */
- {
- return SQL_NULL_HPROC;
- }
-
- penv = (ENV_t FAR*)(pdbc->henv);
-
- if( penv == NULL )
- {
- return SQL_NULL_HPROC;
- }
-
- phproc = penv->dllproc_tab + idx;
-
- if( *phproc == SQL_NULL_HPROC )
- {
- int i, en_idx;
-
- for( i=0 ; ; i++ )
- {
- en_idx = odbcapi_symtab[i].en_idx;
-
- if( en_idx == en_NullProc )
- {
- break;
- }
-
- if( en_idx == idx )
- {
- *phproc = _iodbcdm_dllproc( penv->hdll,
- odbcapi_symtab[i].symbol );
-
- break;
- }
- }
- }
-
- return *phproc;
+ DBC_t FAR* pdbc = (DBC_t FAR*)hdbc;
+ ENV_t FAR* penv;
+ HDLL hdll;
+ static HPROC FAR* phproc;
+
+ if( idx <= 0 || idx > SQL_EXT_API_LAST )
+ /* first entry never used */
+ {
+ return SQL_NULL_HPROC;
+ }
+
+ penv = (ENV_t FAR*)(pdbc->henv);
+
+ if( penv == NULL )
+ {
+ return SQL_NULL_HPROC;
+ }
+
+ phproc = penv->dllproc_tab + idx;
+
+ if( *phproc == SQL_NULL_HPROC )
+ {
+ int i, en_idx;
+
+ for( i=0 ; ; i++ )
+ {
+ en_idx = odbcapi_symtab[i].en_idx;
+
+ if( en_idx == en_NullProc )
+ {
+ break;
+ }
+
+ if( en_idx == idx )
+ {
+ *phproc = _iodbcdm_dllproc( penv->hdll,
+ odbcapi_symtab[i].symbol );
+
+ break;
+ }
+ }
+ }
+
+ return *phproc;
}
-HDLL _iodbcdm_dllopen( char FAR* path )
+HDLL _iodbcdm_dllopen( char FAR* path )
{
- return (HDLL)DLL_OPEN( path );
+ return (HDLL)DLL_OPEN( path );
}
-HPROC _iodbcdm_dllproc( HDLL hdll, char FAR* sym )
+HPROC _iodbcdm_dllproc( HDLL hdll, char FAR* sym )
{
- return (HPROC)DLL_PROC( hdll, sym );
+ return (HPROC)DLL_PROC( hdll, sym );
}
-int _iodbcdm_dllclose( HDLL hdll )
+int _iodbcdm_dllclose( HDLL hdll )
{
- DLL_CLOSE( hdll );
+ DLL_CLOSE( hdll );
- return 0;
+ return 0;
}
-char* _iodbcdm_dllerror( )
+char* _iodbcdm_dllerror( )
{
- return DLL_ERROR();
+ return DLL_ERROR();
}