84 строки
2.4 KiB
C
84 строки
2.4 KiB
C
|
/**************************************************
|
||
|
* ODBCINSTSetProperty
|
||
|
*
|
||
|
**************************************************
|
||
|
* This code was created by Peter Harvey @ CodeByDesign.
|
||
|
* Released under LGPL 28.JAN.99
|
||
|
*
|
||
|
* Contributions from...
|
||
|
* -----------------------------------------------
|
||
|
* Peter Harvey - pharvey@codebydesign.com
|
||
|
**************************************************/
|
||
|
#include <config.h>
|
||
|
#include <odbcinstext.h>
|
||
|
|
||
|
int ODBCINSTSetProperty( HODBCINSTPROPERTY hFirstProperty, char *pszProperty, char *pszValue )
|
||
|
{
|
||
|
char szError[LOG_MSG_MAX+1];
|
||
|
HODBCINSTPROPERTY hCurProperty;
|
||
|
|
||
|
/* SANITY CHECKS */
|
||
|
if ( hFirstProperty == NULL )
|
||
|
{
|
||
|
inst_logPushMsg( __FILE__, __FILE__, __LINE__, LOG_CRITICAL, ODBC_ERROR_GENERAL_ERR, "Invalid property list handle" );
|
||
|
return ODBCINST_ERROR;
|
||
|
}
|
||
|
if ( pszProperty == NULL )
|
||
|
{
|
||
|
inst_logPushMsg( __FILE__, __FILE__, __LINE__, LOG_CRITICAL, ODBC_ERROR_GENERAL_ERR, "Invalid Property Name" );
|
||
|
return ODBCINST_ERROR;
|
||
|
}
|
||
|
if ( pszValue == NULL )
|
||
|
{
|
||
|
inst_logPushMsg( __FILE__, __FILE__, __LINE__, LOG_CRITICAL, ODBC_ERROR_GENERAL_ERR, "Invalid Value buffer" );
|
||
|
return ODBCINST_ERROR;
|
||
|
}
|
||
|
|
||
|
/* FIND pszProperty */
|
||
|
for ( hCurProperty = hFirstProperty; hCurProperty != NULL; hCurProperty = hCurProperty->pNext )
|
||
|
{
|
||
|
if ( strcasecmp( pszProperty, hCurProperty->szName ) == 0 )
|
||
|
{
|
||
|
/* CHANGE IT */
|
||
|
strncpy( hCurProperty->szValue, pszValue, INI_MAX_PROPERTY_VALUE );
|
||
|
return ODBCINST_SUCCESS;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
sprintf( szError, "Could not find property (%s)", pszProperty );
|
||
|
inst_logPushMsg( __FILE__, __FILE__, __LINE__, LOG_WARNING, ODBC_ERROR_GENERAL_ERR, szError );
|
||
|
|
||
|
return ODBCINST_ERROR;
|
||
|
}
|
||
|
|
||
|
int ODBCINSTAddProperty( HODBCINSTPROPERTY hFirstProperty, char *pszProperty, char *pszValue )
|
||
|
{
|
||
|
HODBCINSTPROPERTY hNew;
|
||
|
|
||
|
hNew = (HODBCINSTPROPERTY)malloc( sizeof(ODBCINSTPROPERTY) );
|
||
|
memset(hNew, 0, sizeof(ODBCINSTPROPERTY));
|
||
|
hNew->nPromptType = ODBCINST_PROMPTTYPE_HIDDEN;
|
||
|
hNew->pNext = NULL;
|
||
|
hNew->bRefresh = 0;
|
||
|
hNew->hDLL = hFirstProperty->hDLL;
|
||
|
hNew->pWidget = NULL;
|
||
|
hNew->pszHelp = NULL;
|
||
|
hNew->aPromptData = NULL;
|
||
|
strcpy(hNew->szName, pszProperty );
|
||
|
strcpy( hNew->szValue, pszValue );
|
||
|
|
||
|
/*
|
||
|
* add to end of list
|
||
|
*/
|
||
|
|
||
|
while ( hFirstProperty -> pNext )
|
||
|
{
|
||
|
hFirstProperty = hFirstProperty -> pNext;
|
||
|
}
|
||
|
|
||
|
hNew -> pNext = NULL;
|
||
|
hFirstProperty -> pNext = hNew;
|
||
|
|
||
|
return 0;
|
||
|
}
|