Kerala Cyber
Warriors
KCW Uploader V1.1
Path : /usr/include/ |
|
Current File : //usr/include/odbcinstext.h |
/**************************************************
* odbcinstext.h
*
**************************************************
* This code was created by Peter Harvey @ CodeByDesign.
* Released under LGPL 28.JAN.99
*
* Contributions from...
* -----------------------------------------------
* Peter Harvey - pharvey@codebydesign.com
**************************************************/
#ifndef _ODBCINST_H
#define _ODBCINST_H
#ifdef UNIXODBC_SOURCE
#include <ltdl.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_PWD_H
#include <pwd.h>
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#include <stdio.h>
#ifndef ODBCVER
#define ODBCVER 0x0380
#endif
#include <ini.h>
#include <log.h>
#include <odbcinst.h>
/********************************************************
* CONSTANTS WHICH DO NOT EXIST ELSEWHERE
********************************************************/
#ifndef TRUE
#define FALSE 0;
#define TRUE 1;
#endif
#else /* not UNIXODBC_SOURCE */
/********************************************************
* outside the unixODBC source tree only the *
* public interface is exposed *
********************************************************/
#include <odbcinst.h>
/********************************************************
* these limits are originally defined in ini.h *
* but are needed to implement ODBCINSTGetProperties *
* for the Driver Setup *
********************************************************/
#define INI_MAX_LINE 1000
#define INI_MAX_OBJECT_NAME INI_MAX_LINE
#define INI_MAX_PROPERTY_NAME INI_MAX_LINE
#define INI_MAX_PROPERTY_VALUE INI_MAX_LINE
#endif /* UNIXODBC_SOURCE */
/********************************************************
* PUBLIC API
********************************************************/
#ifdef __cplusplus
extern "C"
{
#endif
BOOL INSTAPI SQLConfigDataSource( HWND hWnd,
WORD nRequest,
LPCSTR pszDriver,
LPCSTR pszAttributes );
BOOL INSTAPI SQLGetConfigMode( UWORD *pnConfigMode );
BOOL INSTAPI SQLGetInstalledDrivers( LPSTR pszBuf,
WORD nBufMax,
WORD *pnBufOut );
BOOL INSTAPI SQLInstallDriverEx( LPCSTR pszDriver,
LPCSTR pszPathIn,
LPSTR pszPathOut,
WORD nPathOutMax,
WORD *nPathOut,
WORD nRequest,
LPDWORD pnUsageCount );
BOOL INSTAPI SQLInstallDriverManager( LPSTR pszPath,
WORD nPathMax,
WORD *pnPathOut );
RETCODE INSTAPI SQLInstallerError( WORD nError,
DWORD *pnErrorCode,
LPSTR pszErrorMsg,
WORD nErrorMsgMax,
WORD *nErrorMsg );
BOOL INSTAPI SQLManageDataSources( HWND hWnd );
BOOL INSTAPI SQLReadFileDSN( LPCSTR pszFileName,
LPCSTR pszAppName,
LPCSTR pszKeyName,
LPSTR pszString,
WORD nString,
WORD *pnString );
BOOL INSTAPI SQLRemoveDriver( LPCSTR pszDriver,
BOOL nRemoveDSN,
LPDWORD pnUsageCount );
BOOL INSTAPI SQLRemoveDriverManager( LPDWORD pnUsageCount );
BOOL INSTAPI SQLRemoveDSNFromIni( LPCSTR pszDSN );
BOOL INSTAPI SQLRemoveTranslator( LPCSTR pszTranslator,
LPDWORD pnUsageCount );
BOOL INSTAPI SQLSetConfigMode( UWORD nConfigMode );
BOOL INSTAPI SQLValidDSN( LPCSTR pszDSN );
BOOL INSTAPI SQLWriteDSNToIni( LPCSTR pszDSN,
LPCSTR pszDriver );
BOOL INSTAPI SQLWriteFileDSN( LPCSTR pszFileName,
LPCSTR pszAppName,
LPCSTR pszKeyName,
LPCSTR pszString );
BOOL INSTAPI SQLWritePrivateProfileString(
LPCSTR pszSection,
LPCSTR pszEntry,
LPCSTR pszString,
LPCSTR pszFileName );
#ifdef __cplusplus
}
#endif
#ifdef UNIXODBC_SOURCE
/********************************************************
* PRIVATE API
********************************************************/
#if defined(__cplusplus)
extern "C" {
#endif
BOOL _odbcinst_UserINI(
char *pszFileName,
BOOL bVerify );
BOOL _odbcinst_SystemINI(
char *pszFileName,
BOOL bVerify );
BOOL _odbcinst_FileINI( char *pszPath );
char * INSTAPI odbcinst_system_file_path( char *buffer );
char * INSTAPI odbcinst_system_file_name( char *buffer );
char * INSTAPI odbcinst_user_file_path( char *buffer );
char * INSTAPI odbcinst_user_file_name( char *buffer );
BOOL _odbcinst_ConfigModeINI(
char *pszFileName );
int _odbcinst_GetSections(
HINI hIni,
LPSTR pRetBuffer,
int nRetBuffer,
int *pnBufPos );
int _odbcinst_GetEntries(
HINI hIni,
LPCSTR pszSection,
LPSTR pRetBuffer,
int nRetBuffer,
int *pnBufPos );
int _SQLGetInstalledDrivers(
LPCSTR pszSection,
LPCSTR pszEntry,
LPCSTR pszDefault,
LPCSTR pRetBuffer,
int nRetBuffer );
BOOL _SQLWriteInstalledDrivers(
LPCSTR pszSection,
LPCSTR pszEntry,
LPCSTR pszString );
BOOL _SQLDriverConnectPrompt(
HWND hwnd,
SQLCHAR *dsn,
SQLSMALLINT len_dsn );
void __set_config_mode( int mode );
int __get_config_mode( void );
int inst_logPushMsg(
char *pszModule,
char *pszFunctionName,
int nLine,
int nSeverity,
int nCode,
char *pszMessage );
int inst_logPeekMsg( long nMsg, HLOGMSG *phMsg );
int inst_logClear();
/*
* we should look at caching this info, the calls can become expensive
*/
#ifndef DISABLE_INI_CACHING
struct ini_cache
{
char *fname;
char *section;
char *entry;
char *value;
char *default_value;
int buffer_size;
int ret_value;
int config_mode;
long timestamp;
struct ini_cache *next;
};
#endif
#ifdef __cplusplus
}
#endif
#endif /* UNIXODBC_SOURCE */
/*********************************
* ODBCINST - PROPERTIES
*********************************
*
* PURPOSE:
*
* To provide the caller a mechanism to interact with Data Source properties
* containing Driver specific options while avoiding embedding GUI code in
* the ODBC infrastructure.
*
* DETAILS:
*
* 1. Application calls libodbcinst.ODBCINSTConstructProperties()
* - odbcinst will load the driver and call libMyDrvS.ODBCINSTGetProperties() to build a list of all possible properties
* 2. Application calls libodbcinst.ODBCINSTSetProperty()
* - use, as required, to init values (ie if configuring existing DataSource)
* - use libodbcinst.SetConfigMode() & libodbcinst.SQLGetPrivateProfileString() to read existing Data Source info (do not forget to set the mode back)
* - do not forget to set mode back to ODBC_BOTH_DSN using SetConfigMode() when done reading
* - no call to Driver Setup
* 3. Application calls libodbcinst.ODBCINSTValidateProperty()
* - use as required (ie on leave widget event)
* - an assesment of the entire property list is also done
* - this is passed onto the driver setup DLL
* 4. Application should refresh widgets in case aPromptData or szValue has changed
* - refresh should occur for each property where bRefresh = 1
* 5. Application calls libodbcinst.ODBCINSTValidateProperties()
* - call this just before saving new Data Source or updating existing Data Source
* - should always call this before saving
* - use libodbcinst.SetConfigMode() & libodbcinst.SQLWritePrivateProfileString() to save Data Source info
* - do not forget to set mode back to ODBC_BOTH_DSN using SetConfigMode() when done saving
* - this is passed onto the driver setup DLL
* 6. Application calls ODBCINSTDestructProperties() to free up memory
* - unload Driver Setup DLL
* - frees memory (Driver Setup allocates most of the memory but we free ALL of it in odbcinst)
*
* NOTES
*
* 1. odbcinst implements 5 functions to support this GUI config stuff
* 2. Driver Setup DLL implements just 3 functions for its share of the work
*
*********************************/
#define ODBCINST_SUCCESS 0
#define ODBCINST_WARNING 1
#define ODBCINST_ERROR 2
#define ODBCINST_PROMPTTYPE_LABEL 0 /* readonly */
#define ODBCINST_PROMPTTYPE_TEXTEDIT 1
#define ODBCINST_PROMPTTYPE_LISTBOX 2
#define ODBCINST_PROMPTTYPE_COMBOBOX 3
#define ODBCINST_PROMPTTYPE_FILENAME 4
#define ODBCINST_PROMPTTYPE_HIDDEN 5
#define ODBCINST_PROMPTTYPE_TEXTEDIT_PASSWORD 6
typedef struct tODBCINSTPROPERTY
{
struct tODBCINSTPROPERTY *pNext; /* pointer to next property, NULL if last property */
char szName[INI_MAX_PROPERTY_NAME+1]; /* property name */
char szValue[INI_MAX_PROPERTY_VALUE+1]; /* property value */
int nPromptType; /* PROMPTTYPE_TEXTEDIT, PROMPTTYPE_LISTBOX, PROMPTTYPE_COMBOBOX, PROMPTTYPE_FILENAME */
char **aPromptData; /* array of pointers terminated with a NULL value in array. */
char *pszHelp; /* help on this property (driver setups should keep it short) */
void *pWidget; /* CALLER CAN STORE A POINTER TO ? HERE */
int bRefresh; /* app should refresh widget ie Driver Setup has changed aPromptData or szValue */
void *hDLL; /* for odbcinst internal use... only first property has valid one */
} ODBCINSTPROPERTY, *HODBCINSTPROPERTY;
/*
* Conversion routines for wide interface
*/
char* _multi_string_alloc_and_copy( LPCWSTR in );
char* _single_string_alloc_and_copy( LPCWSTR in );
void _single_string_copy_to_wide( SQLWCHAR *out, LPCSTR in, int len );
void _multi_string_copy_to_wide( SQLWCHAR *out, LPCSTR in, int len );
void _single_copy_to_wide( SQLWCHAR *out, LPCSTR in, int len );
SQLWCHAR* _multi_string_alloc_and_expand( LPCSTR in );
SQLWCHAR* _single_string_alloc_and_expand( LPCSTR in );
void _single_copy_from_wide( SQLCHAR *out, LPCWSTR in, int len );
/*
* To support finding UI plugin
*/
char *_getUIPluginName( char *pszName, char *pszUI );
char *_appendUIPluginExtension( char *pszNameAndExtension, char *pszName );
char *_prependUIPluginPath( char *pszPathAndName, char *pszName );
#if defined(__cplusplus)
extern "C" {
#endif
/* ONLY IMPLEMENTED IN ODBCINST (not in Driver Setup) */
int INSTAPI ODBCINSTConstructProperties( char *szDriver, HODBCINSTPROPERTY *hFirstProperty );
int INSTAPI ODBCINSTSetProperty( HODBCINSTPROPERTY hFirstProperty, char *pszProperty, char *pszValue );
int INSTAPI ODBCINSTDestructProperties( HODBCINSTPROPERTY *hFirstProperty );
int INSTAPI ODBCINSTAddProperty( HODBCINSTPROPERTY hFirstProperty, char *pszProperty, char *pszValue );
/* IMPLEMENTED IN ODBCINST AND DRIVER SETUP */
int INSTAPI ODBCINSTValidateProperty( HODBCINSTPROPERTY hFirstProperty, char *pszProperty, char *pszMessage );
int INSTAPI ODBCINSTValidateProperties( HODBCINSTPROPERTY hFirstProperty, HODBCINSTPROPERTY hBadProperty, char *pszMessage );
/* ONLY IMPLEMENTED IN DRIVER SETUP (not in ODBCINST) */
int INSTAPI ODBCINSTGetProperties( HODBCINSTPROPERTY hFirstProperty );
#if defined(__cplusplus)
}
#endif
#endif
-=[ KCW uplo4d3r c0ded by cJ_n4p573r ]=-
Ⓒ2017 ҠЄГѦLѦ СүѣЄГ ЩѦГГіѺГՏ