Import Tcl 8.6.12
This commit is contained in:
282
pkgs/tdbcodbc1.1.3/generic/fakesql.h
Normal file
282
pkgs/tdbcodbc1.1.3/generic/fakesql.h
Normal file
@@ -0,0 +1,282 @@
|
||||
/*
|
||||
* fakesql.h --
|
||||
*
|
||||
* Include file that defines the subset of SQL/CLI that TDBC
|
||||
* uses, so that tdbc::odbc can build without an explicit ODBC
|
||||
* dependency. It comprises only data type, constant and
|
||||
* function declarations.
|
||||
*
|
||||
* The programmers of this file believe that it contains material not
|
||||
* subject to copyright under the doctrines of scenes a faire and
|
||||
* of merger of idea and expression. Accordingly, this file is in the
|
||||
* public domain.
|
||||
*
|
||||
*-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#ifndef FAKESQL_H_INCLUDED
|
||||
#define FAKESQL_H_INCLUDED
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifndef MODULE_SCOPE
|
||||
#define MODULE_SCOPE extern
|
||||
#endif
|
||||
|
||||
/* Limits */
|
||||
|
||||
#define SQL_MAX_DSN_LENGTH 32
|
||||
#define SQL_MAX_MESSAGE_LENGTH 512
|
||||
|
||||
/* Fundamental data types */
|
||||
|
||||
#ifndef _WIN32
|
||||
typedef int BOOL;
|
||||
typedef unsigned int DWORD;
|
||||
typedef void* HANDLE;
|
||||
typedef HANDLE HWND;
|
||||
typedef unsigned short WCHAR;
|
||||
typedef char* LPSTR;
|
||||
typedef WCHAR* LPWSTR;
|
||||
typedef const char* LPCSTR;
|
||||
typedef const WCHAR* LPCWSTR;
|
||||
typedef unsigned short WORD;
|
||||
#endif
|
||||
typedef void* PVOID;
|
||||
typedef short RETCODE;
|
||||
typedef long SDWORD;
|
||||
typedef short SWORD;
|
||||
typedef unsigned short USHORT;
|
||||
typedef USHORT UWORD;
|
||||
|
||||
/* ODBC data types */
|
||||
|
||||
typedef Tcl_WideInt SQLBIGINT;
|
||||
typedef unsigned char SQLCHAR;
|
||||
typedef double SQLDOUBLE;
|
||||
typedef void* SQLHANDLE;
|
||||
typedef SDWORD SQLINTEGER;
|
||||
typedef PVOID SQLPOINTER;
|
||||
typedef SWORD SQLSMALLINT;
|
||||
typedef Tcl_WideUInt SQLUBIGINT;
|
||||
typedef unsigned char SQLUCHAR;
|
||||
typedef unsigned int SQLUINTEGER;
|
||||
typedef UWORD SQLUSMALLINT;
|
||||
typedef WCHAR SQLWCHAR;
|
||||
|
||||
typedef SQLSMALLINT SQLRETURN;
|
||||
|
||||
/* TODO - Check how the SQLLEN and SQLULEN types are handled on
|
||||
* 64-bit Unix. */
|
||||
|
||||
#if defined(_WIN64)
|
||||
typedef Tcl_WideInt SQLLEN;
|
||||
typedef Tcl_WideUInt SQLULEN;
|
||||
#else
|
||||
typedef SQLINTEGER SQLLEN;
|
||||
typedef SQLUINTEGER SQLULEN;
|
||||
#endif
|
||||
|
||||
/* Handle types */
|
||||
|
||||
typedef SQLHANDLE SQLHENV;
|
||||
typedef SQLHANDLE SQLHDBC;
|
||||
typedef SQLHANDLE SQLHSTMT;
|
||||
typedef HWND SQLHWND;
|
||||
|
||||
#define SQL_HANDLE_DBC 2
|
||||
#define SQL_HANDLE_ENV 1
|
||||
#define SQL_HANDLE_STMT 3
|
||||
|
||||
/* Null handles */
|
||||
|
||||
#define SQL_NULL_HANDLE ((SQLHANDLE) 0)
|
||||
#define SQL_NULL_HENV ((SQLHENV) 0)
|
||||
#define SQL_NULL_HDBC ((SQLHDBC) 0)
|
||||
#define SQL_NULL_HSTMT ((SQLHSTMT) 0)
|
||||
|
||||
/* SQL data types */
|
||||
|
||||
enum _SQL_DATATYPE {
|
||||
SQL_BIGINT = -5,
|
||||
SQL_BINARY = -2,
|
||||
SQL_BIT = -7,
|
||||
SQL_CHAR = 1,
|
||||
SQL_DATE = 9,
|
||||
SQL_DECIMAL = 3,
|
||||
SQL_DOUBLE = 8,
|
||||
SQL_FLOAT = 6,
|
||||
SQL_INTEGER = 4,
|
||||
SQL_LONGVARBINARY = -4,
|
||||
SQL_LONGVARCHAR = -1,
|
||||
SQL_NUMERIC = 2,
|
||||
SQL_REAL = 7,
|
||||
SQL_SMALLINT = 5,
|
||||
SQL_TIME = 10,
|
||||
SQL_TIMESTAMP = 11,
|
||||
SQL_TINYINT = -6,
|
||||
SQL_VARBINARY = -3,
|
||||
SQL_VARCHAR = 12,
|
||||
SQL_WCHAR = -8,
|
||||
SQL_WVARCHAR = -9,
|
||||
SQL_WLONGVARCHAR = -10,
|
||||
};
|
||||
|
||||
/* C data types */
|
||||
|
||||
#define SQL_SIGNED_OFFSET (-20)
|
||||
|
||||
#define SQL_C_BINARY SQL_BINARY
|
||||
#define SQL_C_CHAR SQL_CHAR
|
||||
#define SQL_C_DOUBLE SQL_DOUBLE
|
||||
#define SQL_C_LONG SQL_INTEGER
|
||||
#define SQL_C_SBIGINT SQL_BIGINT + SQL_SIGNED_OFFSET
|
||||
#define SQL_C_SLONG SQL_INTEGER + SQL_SIGNED_OFFSET
|
||||
#define SQL_C_WCHAR SQL_WCHAR
|
||||
|
||||
/* Parameter transmission diretions */
|
||||
|
||||
#define SQL_PARAM_INPUT 1
|
||||
|
||||
/* Status returns */
|
||||
|
||||
#define SQL_ERROR (-1)
|
||||
#define SQL_NO_DATA 100
|
||||
#define SQL_NO_TOTAL (-4)
|
||||
#define SQL_SUCCESS 0
|
||||
#define SQL_SUCCESS_WITH_INFO 1
|
||||
#define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
|
||||
|
||||
/* Diagnostic fields */
|
||||
|
||||
enum _SQL_DIAG {
|
||||
SQL_DIAG_SQLSTATE = 4,
|
||||
};
|
||||
|
||||
/* Transaction isolation levels */
|
||||
|
||||
#define SQL_TXN_READ_COMMITTED 2
|
||||
#define SQL_TXN_READ_UNCOMMITTED 1
|
||||
#define SQL_TXN_REPEATABLE_READ 4
|
||||
#define SQL_TXN_SERIALIZABLE 8
|
||||
|
||||
/* Access modes */
|
||||
|
||||
#define SQL_MODE_READ_ONLY 1UL
|
||||
#define SQL_MODE_READ_WRITE 0UL
|
||||
|
||||
/* ODBC properties */
|
||||
|
||||
#define SQL_ACCESS_MODE 101
|
||||
#define SQL_AUTOCOMMIT 102
|
||||
#define SQL_TXN_ISOLATION 108
|
||||
|
||||
/* ODBC attributes */
|
||||
|
||||
#define SQL_ATTR_ACCESS_MODE SQL_ACCESS_MODE
|
||||
#define SQL_ATTR_CONNECTION_TIMEOUT 113
|
||||
#define SQL_ATTR_ODBC_VERSION 200
|
||||
#define SQL_ATTR_TXN_ISOLATION SQL_TXN_ISOLATION
|
||||
#define SQL_ATTR_AUTOCOMMIT SQL_AUTOCOMMIT
|
||||
|
||||
/* Nullable? */
|
||||
|
||||
#define SQL_NULLABLE_UNKNOWN 2
|
||||
|
||||
/* Placeholder for length of missing data */
|
||||
|
||||
#define SQL_NULL_DATA (-1)
|
||||
|
||||
/* ODBC versions */
|
||||
|
||||
#define SQL_OV_ODBC3 3UL
|
||||
#define SQL_ODBC_VER 10
|
||||
|
||||
/* SQLDriverConnect flags */
|
||||
|
||||
#define SQL_DRIVER_COMPLETE_REQUIRED 3
|
||||
#define SQL_DRIVER_NOPROMPT 0
|
||||
|
||||
/* SQLGetTypeInfo flags */
|
||||
|
||||
#define SQL_ALL_TYPES 0
|
||||
|
||||
/* Transaction actions */
|
||||
|
||||
#define SQL_COMMIT 0
|
||||
#define SQL_ROLLBACK 1
|
||||
|
||||
/* Data source fetch flags */
|
||||
|
||||
#define SQL_FETCH_FIRST 2
|
||||
#define SQL_FETCH_FIRST_SYSTEM 32
|
||||
#define SQL_FETCH_FIRST_USER 31
|
||||
#define SQL_FETCH_NEXT 1
|
||||
|
||||
/* ODBCINST actions */
|
||||
|
||||
#define ODBC_ADD_DSN 1
|
||||
#define ODBC_CONFIG_DSN 2
|
||||
#define ODBC_REMOVE_DSN 3
|
||||
#define ODBC_ADD_SYS_DSN 4
|
||||
#define ODBC_CONFIG_SYS_DSN 5
|
||||
#define ODBC_REMOVE_SYS_DSN 6
|
||||
|
||||
/* ODBCINST errors */
|
||||
|
||||
#define ODBC_ERROR_GENERAL_ERR 1
|
||||
#define ODBC_ERROR_INVALID_BUFF_LEN 2
|
||||
#define ODBC_ERROR_INVALID_HWND 3
|
||||
#define ODBC_ERROR_INVALID_STR 4
|
||||
#define ODBC_ERROR_INVALID_REQUEST_TYPE 5
|
||||
#define ODBC_ERROR_COMPONENT_NOT_FOUND 6
|
||||
#define ODBC_ERROR_INVALID_NAME 7
|
||||
#define ODBC_ERROR_INVALID_KEYWORD_VALUE 8
|
||||
#define ODBC_ERROR_INVALID_DSN 9
|
||||
#define ODBC_ERROR_INVALID_INF 10
|
||||
#define ODBC_ERROR_REQUEST_FAILED 11
|
||||
#define ODBC_ERROR_INVALID_PATH 12
|
||||
#define ODBC_ERROR_LOAD_LIB_FAILED 13
|
||||
#define ODBC_ERROR_INVALID_PARAM_SEQUENCE 14
|
||||
#define ODBC_ERROR_INVALID_LOG_FILE 15
|
||||
#define ODBC_ERROR_USER_CANCELED 16
|
||||
#define ODBC_ERROR_USAGE_UPDATE_FAILED 17
|
||||
#define ODBC_ERROR_CREATE_DSN_FAILED 18
|
||||
#define ODBC_ERROR_WRITING_SYSINFO_FAILED 19
|
||||
#define ODBC_ERROR_REMOVE_DSN_FAILED 20
|
||||
#define ODBC_ERROR_OUT_OF_MEM 21
|
||||
#define ODBC_ERROR_OUTPUT_STRING_TRUNCATED 22
|
||||
|
||||
/* ODBC client library entry points */
|
||||
|
||||
#ifdef _WIN32
|
||||
#define SQL_API __stdcall
|
||||
#define INSTAPI __stdcall
|
||||
#else
|
||||
#define SQL_API /* nothing */
|
||||
#define INSTAPI /* nothing */
|
||||
#endif
|
||||
|
||||
#include "odbcStubs.h"
|
||||
MODULE_SCOPE const odbcStubDefs* odbcStubs;
|
||||
|
||||
/*
|
||||
* Additional entry points in ODBCINST - all of these are optional
|
||||
* and resolved with Tcl_FindSymbol, not directly in Tcl_LoadLibrary.
|
||||
*/
|
||||
|
||||
MODULE_SCOPE BOOL (INSTAPI* SQLConfigDataSourceW)(HWND, WORD, LPCWSTR,
|
||||
LPCWSTR);
|
||||
MODULE_SCOPE BOOL (INSTAPI* SQLConfigDataSource)(HWND, WORD, LPCSTR, LPCSTR);
|
||||
MODULE_SCOPE BOOL (INSTAPI* SQLInstallerErrorW)(WORD, DWORD*, LPWSTR, WORD,
|
||||
WORD*);
|
||||
MODULE_SCOPE BOOL (INSTAPI* SQLInstallerError)(WORD, DWORD*, LPSTR, WORD,
|
||||
WORD*);
|
||||
|
||||
/*
|
||||
* Function that initialises the stubs
|
||||
*/
|
||||
|
||||
MODULE_SCOPE Tcl_LoadHandle OdbcInitStubs(Tcl_Interp*, Tcl_LoadHandle*);
|
||||
|
||||
#endif
|
||||
24
pkgs/tdbcodbc1.1.3/generic/int2ptr_ptr2int.h
Normal file
24
pkgs/tdbcodbc1.1.3/generic/int2ptr_ptr2int.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Macros used to cast between pointers and integers (e.g. when storing an int
|
||||
* in ClientData), on 64-bit architectures they avoid gcc warning about "cast
|
||||
* to/from pointer from/to integer of different size".
|
||||
*/
|
||||
|
||||
#if !defined(INT2PTR) && !defined(PTR2INT)
|
||||
# if defined(HAVE_INTPTR_T) || defined(intptr_t)
|
||||
# define INT2PTR(p) ((void *)(intptr_t)(p))
|
||||
# define PTR2INT(p) ((int)(intptr_t)(p))
|
||||
# else
|
||||
# define INT2PTR(p) ((void *)(p))
|
||||
# define PTR2INT(p) ((int)(p))
|
||||
# endif
|
||||
#endif
|
||||
#if !defined(UINT2PTR) && !defined(PTR2UINT)
|
||||
# if defined(HAVE_UINTPTR_T) || defined(uintptr_t)
|
||||
# define UINT2PTR(p) ((void *)(uintptr_t)(p))
|
||||
# define PTR2UINT(p) ((unsigned int)(uintptr_t)(p))
|
||||
# else
|
||||
# define UINT2PTR(p) ((void *)(p))
|
||||
# define PTR2UINT(p) ((unsigned int)(p))
|
||||
# endif
|
||||
#endif
|
||||
47
pkgs/tdbcodbc1.1.3/generic/odbcStubDefs.txt
Normal file
47
pkgs/tdbcodbc1.1.3/generic/odbcStubDefs.txt
Normal file
@@ -0,0 +1,47 @@
|
||||
# odbcStubDefs.txt --
|
||||
#
|
||||
# Definitions of routines in the ODBC DLL that will be resolved
|
||||
# and imported at run time.
|
||||
#
|
||||
# This file contains only function declarations necessary to interoperability
|
||||
# with the SQL/CLI application programming interface. The programmers believe
|
||||
# that the material in this file is not subject to copyright, under the
|
||||
# doctrines of scenes a faire and of the merger of idea and expression.
|
||||
# Accordingly, this file is in the public domain.
|
||||
#
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
* STUBSTRUCT: odbcStubs
|
||||
* CONVENTION: SQL_API
|
||||
|
||||
SQLRETURN SQLAllocHandle(SQLSMALLINT,SQLHANDLE,SQLHANDLE*);
|
||||
SQLRETURN SQLBindParameter(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLULEN,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
|
||||
SQLRETURN SQLCloseCursor(SQLHSTMT);
|
||||
SQLRETURN SQLColumnsW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT ,SQLWCHAR*,SQLSMALLINT );
|
||||
SQLRETURN SQLDataSourcesW(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
|
||||
SQLRETURN SQLDescribeColW(SQLHSTMT,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
|
||||
SQLRETURN SQLDescribeParam(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
|
||||
SQLRETURN SQLDisconnect(SQLHDBC);
|
||||
SQLRETURN SQLDriverConnectW(SQLHDBC,SQLHWND,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLUSMALLINT);
|
||||
SQLRETURN SQLDriversW(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
|
||||
SQLRETURN SQLEndTran(SQLSMALLINT,SQLHANDLE,SQLSMALLINT);
|
||||
SQLRETURN SQLExecute(SQLHSTMT);
|
||||
SQLRETURN SQLFetch(SQLHSTMT);
|
||||
SQLRETURN SQLForeignKeysW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
|
||||
SQLRETURN SQLFreeHandle(SQLSMALLINT,SQLHANDLE);
|
||||
SQLRETURN SQLGetConnectAttr(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
|
||||
SQLRETURN SQLGetData(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
|
||||
SQLRETURN SQLGetDiagFieldA(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
|
||||
SQLRETURN SQLGetDiagRecW(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLWCHAR*,SQLINTEGER*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
|
||||
SQLRETURN SQLGetInfoW(SQLHANDLE,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
|
||||
SQLRETURN SQLGetTypeInfo(SQLHSTMT,SQLSMALLINT);
|
||||
SQLRETURN SQLMoreResults(SQLHSTMT);
|
||||
SQLRETURN SQLNumParams(SQLHSTMT,SQLSMALLINT*);
|
||||
SQLRETURN SQLNumResultCols(SQLHSTMT,SQLSMALLINT*);
|
||||
SQLRETURN SQLPrepareW(SQLHSTMT,SQLWCHAR*,SQLINTEGER);
|
||||
SQLRETURN SQLPrimaryKeysW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
|
||||
SQLRETURN SQLRowCount(SQLHSTMT,SQLLEN*);
|
||||
SQLRETURN SQLSetConnectAttr(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER);
|
||||
SQLRETURN SQLSetConnectOption(SQLHDBC,SQLUSMALLINT,SQLULEN); /* deprecated */
|
||||
SQLRETURN SQLSetEnvAttr(SQLHENV,SQLINTEGER,SQLPOINTER,SQLINTEGER);
|
||||
SQLRETURN SQLTablesW(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
|
||||
214
pkgs/tdbcodbc1.1.3/generic/odbcStubInit.c
Normal file
214
pkgs/tdbcodbc1.1.3/generic/odbcStubInit.c
Normal file
@@ -0,0 +1,214 @@
|
||||
/*
|
||||
* odbcStubInit.c --
|
||||
*
|
||||
* Stubs tables for the foreign ODBC libraries so that
|
||||
* Tcl extensions can use them without the linker's knowing about them.
|
||||
*
|
||||
* @CREATED@ 2018-05-12 16:18:48Z by genExtStubs.tcl from odbcStubDefs.txt
|
||||
*
|
||||
* Copyright (c) 2010 by Kevin B. Kenny.
|
||||
*
|
||||
* Please refer to the file, 'license.terms' for the conditions on
|
||||
* redistribution of this file and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
*
|
||||
*-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include <tcl.h>
|
||||
#ifdef _WIN32
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#endif
|
||||
#include "fakesql.h"
|
||||
|
||||
/*
|
||||
* Static data used in this file
|
||||
*/
|
||||
|
||||
/*
|
||||
* Names of the libraries that might contain the ODBC API
|
||||
*/
|
||||
|
||||
static const char *const odbcStubLibNames[] = {
|
||||
#if defined(__APPLE__)
|
||||
"libiodbc.2",
|
||||
#elif defined(__OpenBSD__)
|
||||
"libiodbc",
|
||||
#else
|
||||
"odbc32", "odbc", "libodbc32", "libodbc", "libiodbc",
|
||||
#endif
|
||||
NULL
|
||||
/* @END@ */
|
||||
};
|
||||
static const char *const odbcOptLibNames[] = {
|
||||
#if defined(__APPLE__)
|
||||
"libiodbcinst.2",
|
||||
#elif defined(__OpenBSD__)
|
||||
"libiodbcinst",
|
||||
#else
|
||||
"odbccp", "odbccp32", "odbcinst",
|
||||
"libodbccp", "libodbccp32", "libodbcinst", "libiodbcinst",
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
|
||||
/*
|
||||
* Names of the functions that we need from ODBC
|
||||
*/
|
||||
|
||||
static const char *const odbcSymbolNames[] = {
|
||||
/* @SYMNAMES@: DO NOT EDIT THESE NAMES */
|
||||
"SQLAllocHandle",
|
||||
"SQLBindParameter",
|
||||
"SQLCloseCursor",
|
||||
"SQLColumnsW",
|
||||
"SQLDataSourcesW",
|
||||
"SQLDescribeColW",
|
||||
"SQLDescribeParam",
|
||||
"SQLDisconnect",
|
||||
"SQLDriverConnectW",
|
||||
"SQLDriversW",
|
||||
"SQLEndTran",
|
||||
"SQLExecute",
|
||||
"SQLFetch",
|
||||
"SQLForeignKeysW",
|
||||
"SQLFreeHandle",
|
||||
"SQLGetConnectAttr",
|
||||
"SQLGetData",
|
||||
"SQLGetDiagFieldA",
|
||||
"SQLGetDiagRecW",
|
||||
"SQLGetInfoW",
|
||||
"SQLGetTypeInfo",
|
||||
"SQLMoreResults",
|
||||
"SQLNumParams",
|
||||
"SQLNumResultCols",
|
||||
"SQLPrepareW",
|
||||
"SQLPrimaryKeysW",
|
||||
"SQLRowCount",
|
||||
"SQLSetConnectAttr",
|
||||
"SQLSetConnectOption",
|
||||
"SQLSetEnvAttr",
|
||||
"SQLTablesW",
|
||||
NULL
|
||||
/* @END@ */
|
||||
};
|
||||
|
||||
/*
|
||||
* Table containing pointers to the functions named above.
|
||||
*/
|
||||
|
||||
static odbcStubDefs odbcStubsTable;
|
||||
const odbcStubDefs* odbcStubs = &odbcStubsTable;
|
||||
|
||||
/*
|
||||
* Pointers to optional functions in ODBCINST
|
||||
*/
|
||||
|
||||
BOOL (INSTAPI* SQLConfigDataSourceW)(HWND, WORD, LPCWSTR, LPCWSTR)
|
||||
= NULL;
|
||||
BOOL (INSTAPI* SQLConfigDataSource)(HWND, WORD, LPCSTR, LPCSTR)
|
||||
= NULL;
|
||||
BOOL (INSTAPI* SQLInstallerError)(WORD, DWORD*, LPSTR, WORD, WORD*)
|
||||
= NULL;
|
||||
|
||||
/*
|
||||
*-----------------------------------------------------------------------------
|
||||
*
|
||||
* OdbcInitStubs --
|
||||
*
|
||||
* Initialize the Stubs table for the ODBC API
|
||||
*
|
||||
* Results:
|
||||
* Returns the handle to the loaded ODBC client library, or NULL
|
||||
* if the load is unsuccessful. Leaves an error message in the
|
||||
* interpreter.
|
||||
*
|
||||
*-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
MODULE_SCOPE Tcl_LoadHandle
|
||||
OdbcInitStubs(Tcl_Interp* interp,
|
||||
/* Tcl interpreter */
|
||||
Tcl_LoadHandle* handle2Ptr)
|
||||
/* Pointer to a second load handle
|
||||
* that represents the ODBCINST library */
|
||||
{
|
||||
int i;
|
||||
int status; /* Status of Tcl library calls */
|
||||
Tcl_Obj* path; /* Path name of a module to be loaded */
|
||||
Tcl_Obj* shlibext; /* Extension to use for load modules */
|
||||
Tcl_LoadHandle handle = NULL;
|
||||
/* Handle to a load module */
|
||||
|
||||
SQLConfigDataSourceW = NULL;
|
||||
SQLConfigDataSource = NULL;
|
||||
SQLInstallerError = NULL;
|
||||
|
||||
/*
|
||||
* Determine the shared library extension
|
||||
*/
|
||||
status = Tcl_EvalEx(interp, "::info sharedlibextension", -1,
|
||||
TCL_EVAL_GLOBAL);
|
||||
if (status != TCL_OK) return NULL;
|
||||
shlibext = Tcl_GetObjResult(interp);
|
||||
Tcl_IncrRefCount(shlibext);
|
||||
|
||||
/*
|
||||
* Walk the list of possible library names to find an ODBC client
|
||||
*/
|
||||
status = TCL_ERROR;
|
||||
for (i = 0; status == TCL_ERROR && odbcStubLibNames[i] != NULL; ++i) {
|
||||
path = Tcl_NewStringObj(odbcStubLibNames[i], -1);
|
||||
Tcl_AppendObjToObj(path, shlibext);
|
||||
Tcl_IncrRefCount(path);
|
||||
Tcl_ResetResult(interp);
|
||||
|
||||
/*
|
||||
* Try to load a client library and resolve the ODBC API within it.
|
||||
*/
|
||||
status = Tcl_LoadFile(interp, path, odbcSymbolNames, 0,
|
||||
(void*)odbcStubs, &handle);
|
||||
Tcl_DecrRefCount(path);
|
||||
}
|
||||
|
||||
/*
|
||||
* If a client library is found, then try to load ODBCINST as well.
|
||||
*/
|
||||
if (status == TCL_OK) {
|
||||
int status2 = TCL_ERROR;
|
||||
for (i = 0; status2 == TCL_ERROR && odbcOptLibNames[i] != NULL; ++i) {
|
||||
path = Tcl_NewStringObj(odbcOptLibNames[i], -1);
|
||||
Tcl_AppendObjToObj(path, shlibext);
|
||||
Tcl_IncrRefCount(path);
|
||||
status2 = Tcl_LoadFile(interp, path, NULL, 0, NULL, handle2Ptr);
|
||||
if (status2 == TCL_OK) {
|
||||
SQLConfigDataSourceW =
|
||||
(BOOL (INSTAPI*)(HWND, WORD, LPCWSTR, LPCWSTR))
|
||||
Tcl_FindSymbol(NULL, *handle2Ptr, "SQLConfigDataSourceW");
|
||||
if (SQLConfigDataSourceW == NULL) {
|
||||
SQLConfigDataSource =
|
||||
(BOOL (INSTAPI*)(HWND, WORD, LPCSTR, LPCSTR))
|
||||
Tcl_FindSymbol(NULL, *handle2Ptr,
|
||||
"SQLConfigDataSource");
|
||||
}
|
||||
SQLInstallerError =
|
||||
(BOOL (INSTAPI*)(WORD, DWORD*, LPSTR, WORD, WORD*))
|
||||
Tcl_FindSymbol(NULL, *handle2Ptr, "SQLInstallerError");
|
||||
} else {
|
||||
Tcl_ResetResult(interp);
|
||||
}
|
||||
Tcl_DecrRefCount(path);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Either we've successfully loaded a library (status == TCL_OK),
|
||||
* or we've run out of library names (in which case status==TCL_ERROR
|
||||
* and the error message reflects the last unsuccessful load attempt).
|
||||
*/
|
||||
Tcl_DecrRefCount(shlibext);
|
||||
if (status != TCL_OK) {
|
||||
return NULL;
|
||||
}
|
||||
return handle;
|
||||
}
|
||||
78
pkgs/tdbcodbc1.1.3/generic/odbcStubs.h
Normal file
78
pkgs/tdbcodbc1.1.3/generic/odbcStubs.h
Normal file
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
*-----------------------------------------------------------------------------
|
||||
*
|
||||
* odbcStubs.h --
|
||||
*
|
||||
* Stubs for procedures in odbcStubDefs.txt
|
||||
*
|
||||
* Generated by genExtStubs.tcl: DO NOT EDIT
|
||||
* 2018-05-12 16:18:48Z
|
||||
*
|
||||
*-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
typedef struct odbcStubDefs {
|
||||
SQLRETURN (SQL_API*SQLAllocHandlePtr)(SQLSMALLINT,SQLHANDLE,SQLHANDLE*);
|
||||
SQLRETURN (SQL_API*SQLBindParameterPtr)(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLULEN,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
|
||||
SQLRETURN (SQL_API*SQLCloseCursorPtr)(SQLHSTMT);
|
||||
SQLRETURN (SQL_API*SQLColumnsWPtr)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT ,SQLWCHAR*,SQLSMALLINT );
|
||||
SQLRETURN (SQL_API*SQLDataSourcesWPtr)(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLDescribeColWPtr)(SQLHSTMT,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLDescribeParamPtr)(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLDisconnectPtr)(SQLHDBC);
|
||||
SQLRETURN (SQL_API*SQLDriverConnectWPtr)(SQLHDBC,SQLHWND,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLUSMALLINT);
|
||||
SQLRETURN (SQL_API*SQLDriversWPtr)(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLEndTranPtr)(SQLSMALLINT,SQLHANDLE,SQLSMALLINT);
|
||||
SQLRETURN (SQL_API*SQLExecutePtr)(SQLHSTMT);
|
||||
SQLRETURN (SQL_API*SQLFetchPtr)(SQLHSTMT);
|
||||
SQLRETURN (SQL_API*SQLForeignKeysWPtr)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
|
||||
SQLRETURN (SQL_API*SQLFreeHandlePtr)(SQLSMALLINT,SQLHANDLE);
|
||||
SQLRETURN (SQL_API*SQLGetConnectAttrPtr)(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
|
||||
SQLRETURN (SQL_API*SQLGetDataPtr)(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
|
||||
SQLRETURN (SQL_API*SQLGetDiagFieldAPtr)(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLGetDiagRecWPtr)(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLWCHAR*,SQLINTEGER*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLGetInfoWPtr)(SQLHANDLE,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLGetTypeInfoPtr)(SQLHSTMT,SQLSMALLINT);
|
||||
SQLRETURN (SQL_API*SQLMoreResultsPtr)(SQLHSTMT);
|
||||
SQLRETURN (SQL_API*SQLNumParamsPtr)(SQLHSTMT,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLNumResultColsPtr)(SQLHSTMT,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLPrepareWPtr)(SQLHSTMT,SQLWCHAR*,SQLINTEGER);
|
||||
SQLRETURN (SQL_API*SQLPrimaryKeysWPtr)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
|
||||
SQLRETURN (SQL_API*SQLRowCountPtr)(SQLHSTMT,SQLLEN*);
|
||||
SQLRETURN (SQL_API*SQLSetConnectAttrPtr)(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER);
|
||||
SQLRETURN (SQL_API*SQLSetConnectOptionPtr)(SQLHDBC,SQLUSMALLINT,SQLULEN);
|
||||
SQLRETURN (SQL_API*SQLSetEnvAttrPtr)(SQLHENV,SQLINTEGER,SQLPOINTER,SQLINTEGER);
|
||||
SQLRETURN (SQL_API*SQLTablesWPtr)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
|
||||
} odbcStubDefs;
|
||||
#define SQLAllocHandle (odbcStubs->SQLAllocHandlePtr)
|
||||
#define SQLBindParameter (odbcStubs->SQLBindParameterPtr)
|
||||
#define SQLCloseCursor (odbcStubs->SQLCloseCursorPtr)
|
||||
#define SQLColumnsW (odbcStubs->SQLColumnsWPtr)
|
||||
#define SQLDataSourcesW (odbcStubs->SQLDataSourcesWPtr)
|
||||
#define SQLDescribeColW (odbcStubs->SQLDescribeColWPtr)
|
||||
#define SQLDescribeParam (odbcStubs->SQLDescribeParamPtr)
|
||||
#define SQLDisconnect (odbcStubs->SQLDisconnectPtr)
|
||||
#define SQLDriverConnectW (odbcStubs->SQLDriverConnectWPtr)
|
||||
#define SQLDriversW (odbcStubs->SQLDriversWPtr)
|
||||
#define SQLEndTran (odbcStubs->SQLEndTranPtr)
|
||||
#define SQLExecute (odbcStubs->SQLExecutePtr)
|
||||
#define SQLFetch (odbcStubs->SQLFetchPtr)
|
||||
#define SQLForeignKeysW (odbcStubs->SQLForeignKeysWPtr)
|
||||
#define SQLFreeHandle (odbcStubs->SQLFreeHandlePtr)
|
||||
#define SQLGetConnectAttr (odbcStubs->SQLGetConnectAttrPtr)
|
||||
#define SQLGetData (odbcStubs->SQLGetDataPtr)
|
||||
#define SQLGetDiagFieldA (odbcStubs->SQLGetDiagFieldAPtr)
|
||||
#define SQLGetDiagRecW (odbcStubs->SQLGetDiagRecWPtr)
|
||||
#define SQLGetInfoW (odbcStubs->SQLGetInfoWPtr)
|
||||
#define SQLGetTypeInfo (odbcStubs->SQLGetTypeInfoPtr)
|
||||
#define SQLMoreResults (odbcStubs->SQLMoreResultsPtr)
|
||||
#define SQLNumParams (odbcStubs->SQLNumParamsPtr)
|
||||
#define SQLNumResultCols (odbcStubs->SQLNumResultColsPtr)
|
||||
#define SQLPrepareW (odbcStubs->SQLPrepareWPtr)
|
||||
#define SQLPrimaryKeysW (odbcStubs->SQLPrimaryKeysWPtr)
|
||||
#define SQLRowCount (odbcStubs->SQLRowCountPtr)
|
||||
#define SQLSetConnectAttr (odbcStubs->SQLSetConnectAttrPtr)
|
||||
#define SQLSetConnectOption (odbcStubs->SQLSetConnectOptionPtr)
|
||||
#define SQLSetEnvAttr (odbcStubs->SQLSetEnvAttrPtr)
|
||||
#define SQLTablesW (odbcStubs->SQLTablesWPtr)
|
||||
MODULE_SCOPE const odbcStubDefs *odbcStubs;
|
||||
5670
pkgs/tdbcodbc1.1.3/generic/tdbcodbc.c
Normal file
5670
pkgs/tdbcodbc1.1.3/generic/tdbcodbc.c
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user