/usr/include/odbcinstext.h is in unixodbc-dev 2.3.4-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 | /**************************************************
* 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
|