1/**************************************************
2 * ODBCINSTDestructProperties
3 *
4 **************************************************
5 * This code was created by Peter Harvey @ CodeByDesign.
6 * Released under LGPL 28.JAN.99
7 *
8 * Contributions from...
9 * -----------------------------------------------
10 * Peter Harvey - pharvey@codebydesign.com
11 **************************************************/
12#include <config.h>
13#include <odbcinstext.h>
14
15int ODBCINSTDestructProperties( HODBCINSTPROPERTY *hFirstProperty )
16{
17 HODBCINSTPROPERTY hNextProperty;
18 HODBCINSTPROPERTY hCurProperty;
19
20 /* SANITY CHECKS */
21 if ( (*hFirstProperty) == NULL )
22 {
23 inst_logPushMsg( __FILE__, __FILE__, __LINE__, LOG_CRITICAL, ODBC_ERROR_GENERAL_ERR, "Invalid property list handle" );
24 return ODBCINST_ERROR;
25 }
26
27 /* FREE MEMORY */
28 for ( hCurProperty = (*hFirstProperty); hCurProperty != NULL; hCurProperty = hNextProperty )
29 {
30 hNextProperty = hCurProperty->pNext;
31
32 /* FREE ANY PROMPT DATA (ie pick list options and such) */
33 if ( hCurProperty->aPromptData != NULL )
34 free( hCurProperty->aPromptData );
35
36 /* 1st PROPERTY HAS HANDLE TO DriverSetup DLL; LETS LET THE O/S KNOW WE ARE DONE WITH IT */
37 if ( hCurProperty == (*hFirstProperty) && hCurProperty->hDLL != NULL )
38 lt_dlclose( hCurProperty->hDLL );
39
40 /* FREE OTHER STUFF */
41 if ( hCurProperty->pszHelp != NULL )
42 free( hCurProperty->pszHelp );
43
44 free( hCurProperty );
45 }
46 (*hFirstProperty) = NULL;
47
48 return ODBCINST_SUCCESS;
49}
50
51