File unixODBC-2.3.7-warning-cleanup.patch of Package unixODBC

https://github.com/lurcher/unixODBC/issues/18

From ca226e2e94f68ef7eee5ed9b6368f6550e3ecd56 Mon Sep 17 00:00:00 2001
From: lurcher <nick@lurcher.org>
Date: Wed, 24 Oct 2018 14:55:36 +0100
Subject: [PATCH] Tidy up warnings

---
 DriverManager/SQLBrowseConnect.c     |  4 ++--
 DriverManager/SQLBrowseConnectW.c    | 13 +++++++++--
 DriverManager/SQLConnect.c           | 33 +++++++++++-----------------
 DriverManager/SQLConnectW.c          |  4 +---
 DriverManager/SQLDriverConnect.c     |  6 ++---
 DriverManager/SQLDriverConnectW.c    |  6 ++---
 DriverManager/SQLError.c             |  4 ++--
 DriverManager/SQLErrorW.c            |  4 ++--
 DriverManager/SQLExecDirect.c        |  6 ++---
 DriverManager/SQLExecDirectW.c       |  6 ++---
 DriverManager/SQLFetchScroll.c       |  4 ++--
 DriverManager/SQLGetConnectAttr.c    | 18 +++++++--------
 DriverManager/SQLGetConnectAttrW.c   | 14 ++++++------
 DriverManager/SQLGetData.c           |  4 ++--
 DriverManager/SQLGetDiagField.c      |  4 ++--
 DriverManager/SQLGetDiagFieldW.c     |  4 ++--
 DriverManager/SQLGetFunctions.c      |  8 +++----
 DriverManager/SQLGetStmtAttr.c       |  4 ++--
 DriverManager/SQLGetStmtAttrW.c      |  4 ++--
 DriverManager/SQLGetStmtOption.c     |  6 ++---
 DriverManager/SQLSetConnectAttr.c    |  2 +-
 DriverManager/SQLSetConnectAttrW.c   |  2 +-
 DriverManager/SQLSetConnectOption.c  |  2 +-
 DriverManager/SQLSetConnectOptionW.c |  2 +-
 DriverManager/SQLSetScrollOptions.c  |  4 ++--
 DriverManager/SQLSpecialColumns.c    |  4 ++--
 DriverManager/SQLSpecialColumnsW.c   |  4 ++--
 DriverManager/__info.c               |  4 ++++
 DriverManager/drivermanager.h        | 29 +++++++++++++++++++++++-
 exe/iusql.c                          |  5 -----
 exe/slencheck.c                      |  6 ++---
 31 files changed, 121 insertions(+), 99 deletions(-)

diff --git a/DriverManager/SQLBrowseConnect.c b/DriverManager/SQLBrowseConnect.c
index dc7cfcf..56b3306 100644
--- a/DriverManager/SQLBrowseConnect.c
+++ b/DriverManager/SQLBrowseConnect.c
@@ -425,7 +425,7 @@ SQLRETURN SQLBrowseConnect(
     }
     else
     {
-        in_str = conn_str_in;
+        in_str = (char*)conn_str_in;
         in_str_len = len_conn_str_in == SQL_NTS ? strlen(in_str) : len_conn_str_in;
     }
 
@@ -462,7 +462,7 @@ SQLRETURN SQLBrowseConnect(
         {
             unicode_to_ansi_copy((char*) conn_str_out, conn_str_out_max, uc_out_str, SQL_NTS, connection, NULL );
             if (*ptr_conn_str_out < conn_str_out_max)
-                *ptr_conn_str_out = strlen(conn_str_out);
+                *ptr_conn_str_out = strlen((char*)conn_str_out);
             free(uc_out_str);
         }
         
diff --git a/DriverManager/SQLBrowseConnectW.c b/DriverManager/SQLBrowseConnectW.c
index 4a4e750..21451a1 100644
--- a/DriverManager/SQLBrowseConnectW.c
+++ b/DriverManager/SQLBrowseConnectW.c
@@ -406,7 +406,7 @@ SQLRETURN SQLBrowseConnectW(
     }
     else if (CHECK_SQLBROWSECONNECT( connection ))
     {
-        SQLCHAR *an_in_str = unicode_to_ansi_alloc( in_str, SQL_NTS, connection, 0 );
+        SQLCHAR *an_in_str = (SQLCHAR*) unicode_to_ansi_alloc( in_str, SQL_NTS, connection, 0 );
         SQLCHAR *ob = conn_str_out ? malloc( (conn_str_out_max + 1) * sizeof(SQLWCHAR) ) : 0;
         SQLINTEGER len;
 
@@ -421,7 +421,16 @@ SQLRETURN SQLBrowseConnectW(
         *ptr_conn_str_out = len;
         if(ob)
         {
-            ansi_to_unicode_copy(conn_str_out, ob, conn_str_out_max, connection, ptr_conn_str_out );
+            if ( ptr_conn_str_out ) {
+                int wptr;
+
+                ansi_to_unicode_copy(conn_str_out, (char*)ob, conn_str_out_max, connection, &wptr );
+
+                *ptr_conn_str_out = (SQLSMALLINT) wptr;
+            }
+            else {
+                ansi_to_unicode_copy(conn_str_out, (char*)ob, conn_str_out_max, connection, NULL );
+            }
             free(ob);
         }
         free(an_in_str);
diff --git a/DriverManager/SQLConnect.c b/DriverManager/SQLConnect.c
index 9ff1867..1a1e63a 100644
--- a/DriverManager/SQLConnect.c
+++ b/DriverManager/SQLConnect.c
@@ -1844,7 +1844,7 @@ int __connect_part_one( DMHDBC connection, char *driver_lib, char *driver_name,
                 SQLSETCONNECTATTR(connection,
                             connection -> driver_dbc,
                             sa -> attr_type,
-                            sa -> int_attr,
+                            sa -> intptr_attr,
                             sa -> str_len );
             }
             else if (CHECK_SQLSETCONNECTOPTION(connection))
@@ -1852,7 +1852,7 @@ int __connect_part_one( DMHDBC connection, char *driver_lib, char *driver_name,
                 SQLSETCONNECTOPTION(connection,
                             connection -> driver_dbc,
                             sa -> attr_type,
-                            sa -> int_attr );
+                            sa -> intptr_attr );
             }
         }
         
@@ -2978,20 +2978,15 @@ static void close_pooled_connection( CPOOL *ptr )
 
 void __strip_from_pool( DMHENV env )
 {
-    time_t current_time;
-    SQLINTEGER dead;
-    CPOOL *ptr, *prev;
-    int has_checked = 0;
+    CPOOL *ptr;
 
     mutex_pool_entry();
 
-    current_time = time( NULL );
-
     /*
      * look in the list of connections for one that matches
      */
 
-    for( ptr = pool_head, prev = NULL; ptr; prev = ptr, ptr = ptr -> next )
+    for( ptr = pool_head; ptr; ptr = ptr -> next )
     {
         if ( ptr -> connection.environment == env ) {
 
@@ -3146,30 +3141,30 @@ restart:;
          * ok so far, is it still alive ?
          */
 
-        if ( CHECK_SQLGETCONNECTATTR(( &ptr -> connection )) &&
+        if ((CHECK_SQLGETCONNECTATTR(( &ptr -> connection )) &&
                  SQL_SUCCEEDED( ret = SQLGETCONNECTATTR(( &ptr -> connection ),
                      ptr -> connection.driver_dbc,
                      SQL_ATTR_CONNECTION_DEAD,
                      &dead,
                      0,
-                     0 ) ) ||
-             CHECK_SQLGETCONNECTATTRW(( &ptr -> connection )) &&
+                     0 ))) ||
+            (CHECK_SQLGETCONNECTATTRW(( &ptr -> connection )) &&
                  SQL_SUCCEEDED( ret = SQLGETCONNECTATTRW(( &ptr -> connection ),
                      ptr -> connection.driver_dbc,
                      SQL_ATTR_CONNECTION_DEAD,
                      &dead,
                      0,
-                     0 ) ) ||
-             CHECK_SQLGETCONNECTOPTION(( &ptr -> connection )) &&
+                     0 ))) ||
+            (CHECK_SQLGETCONNECTOPTION(( &ptr -> connection )) &&
                  SQL_SUCCEEDED( ret = SQLGETCONNECTOPTION(( &ptr->connection ),
                      ptr -> connection.driver_dbc,
                      SQL_ATTR_CONNECTION_DEAD,
-                     &dead ) ) ||
-             CHECK_SQLGETCONNECTOPTIONW(( &ptr -> connection )) &&
+                     &dead ))) ||
+            (CHECK_SQLGETCONNECTOPTIONW(( &ptr -> connection )) &&
                  SQL_SUCCEEDED( ret = SQLGETCONNECTOPTIONW(( &ptr->connection ),
                      ptr -> connection.driver_dbc,
                      SQL_ATTR_CONNECTION_DEAD,
-                     &dead ) )
+                     &dead )))
            )
         {
             /*
@@ -4110,9 +4105,7 @@ SQLRETURN SQLConnect( SQLHDBC connection_handle,
 
         if ( CHECK_SQLSETCONNECTATTR( connection ))
         {
-            int lret;
-                
-            lret = SQLSETCONNECTATTR( connection,
+            SQLSETCONNECTATTR( connection,
                     connection -> driver_dbc,
                     SQL_ATTR_ANSI_APP,
                     SQL_AA_FALSE,
diff --git a/DriverManager/SQLConnectW.c b/DriverManager/SQLConnectW.c
index 372547a..104eddb 100644
--- a/DriverManager/SQLConnectW.c
+++ b/DriverManager/SQLConnectW.c
@@ -380,9 +380,7 @@ SQLRETURN SQLConnectW( SQLHDBC connection_handle,
     {
         if ( CHECK_SQLSETCONNECTATTR( connection ))
         {
-            int lret;
-                
-            lret = SQLSETCONNECTATTR( connection,
+            SQLSETCONNECTATTR( connection,
                     connection -> driver_dbc,
                     SQL_ATTR_ANSI_APP,
                     SQL_AA_FALSE,
diff --git a/DriverManager/SQLDriverConnect.c b/DriverManager/SQLDriverConnect.c
index 9d861b7..8272cab 100644
--- a/DriverManager/SQLDriverConnect.c
+++ b/DriverManager/SQLDriverConnect.c
@@ -334,7 +334,7 @@ char *tmp;
     while( cp )
     {
         size_t attrlen = strlen( cp -> attribute );
-        int use_esc = isspace( *(cp -> attribute ) ) || attrlen && isspace( cp->attribute[attrlen - 1] );
+        int use_esc = isspace( *(cp -> attribute ) ) || ( attrlen && isspace( cp->attribute[attrlen - 1] ));
         for ( tmp = cp -> attribute; *tmp; tmp++ )
         {
             use_esc |= (*tmp == '{') || (*tmp == '}');
@@ -1500,9 +1500,7 @@ SQLRETURN SQLDriverConnect(
 
         if ( CHECK_SQLSETCONNECTATTR( connection ))
         {
-            int lret;
-                
-            lret = SQLSETCONNECTATTR( connection,
+            SQLSETCONNECTATTR( connection,
                     connection -> driver_dbc,
                     SQL_ATTR_ANSI_APP,
                     SQL_AA_FALSE,
diff --git a/DriverManager/SQLDriverConnectW.c b/DriverManager/SQLDriverConnectW.c
index c65027c..828ab02 100644
--- a/DriverManager/SQLDriverConnectW.c
+++ b/DriverManager/SQLDriverConnectW.c
@@ -423,7 +423,7 @@ SQLRETURN SQLDriverConnectW(
 			}
 			else 
 			{
-                unicode_to_ansi_copy( returned_dsn, sizeof( returned_dsn ), returned_wdsn, SQL_NTS, connection, NULL );
+                unicode_to_ansi_copy((char*) returned_dsn, sizeof( returned_dsn ), returned_wdsn, SQL_NTS, connection, NULL );
 				prefix = returned_dsn;
 				target = (SQLCHAR*)strchr( (char*)returned_dsn, '=' );
 				if ( target ) 
@@ -596,9 +596,7 @@ SQLRETURN SQLDriverConnectW(
     {
         if ( CHECK_SQLSETCONNECTATTR( connection ))
         {
-            int lret;
-                
-            lret = SQLSETCONNECTATTR( connection,
+            SQLSETCONNECTATTR( connection,
                     connection -> driver_dbc,
                     SQL_ATTR_ANSI_APP,
                     SQL_AA_FALSE,
diff --git a/DriverManager/SQLError.c b/DriverManager/SQLError.c
index d4a2a0a..8714037 100644
--- a/DriverManager/SQLError.c
+++ b/DriverManager/SQLError.c
@@ -184,7 +184,7 @@
 
 static char const rcsid[]= "$RCSfile: SQLError.c,v $ $Revision: 1.11 $";
 
-static SQLRETURN extract_sql_error( EHEAD *head,
+static SQLRETURN local_extract_sql_error( EHEAD *head,
         SQLCHAR *sqlstate,
         SQLINTEGER *native_error,
         SQLCHAR *message_text,
@@ -440,7 +440,7 @@ SQLRETURN SQLError( SQLHENV environment_handle,
         herror->ret_code_deferred = 0;
     }
 
-    ret = extract_sql_error( herror,
+    ret = local_extract_sql_error( herror,
             sqlstate,
             native_error,
             message_text,
diff --git a/DriverManager/SQLErrorW.c b/DriverManager/SQLErrorW.c
index 16df262..d108756 100644
--- a/DriverManager/SQLErrorW.c
+++ b/DriverManager/SQLErrorW.c
@@ -173,7 +173,7 @@ SQLRETURN extract_parent_handle_err( int handle_type,
  * unicode mapping function
  */
 
-static SQLRETURN extract_sql_error_w( EHEAD *head,
+static SQLRETURN local_extract_sql_error_w( EHEAD *head,
         SQLWCHAR *sqlstate,
         SQLINTEGER *native_error,
         SQLWCHAR *message_text,
@@ -391,7 +391,7 @@ SQLRETURN SQLErrorW( SQLHENV environment_handle,
         herror->ret_code_deferred = 0;
     }
 
-    ret = extract_sql_error_w( herror,
+    ret = local_extract_sql_error_w( herror,
             sqlstate,
             native_error,
             message_text,
diff --git a/DriverManager/SQLExecDirect.c b/DriverManager/SQLExecDirect.c
index 1f19a81..24622b8 100644
--- a/DriverManager/SQLExecDirect.c
+++ b/DriverManager/SQLExecDirect.c
@@ -500,9 +500,9 @@ SQLRETURN SQLExecDirect( SQLHSTMT statement_handle,
 
         statement -> prepared = 0;
     }
-    else if ( statement -> state >= STATE_S2 && statement -> state <= STATE_S4 ||
-              statement -> state >= STATE_S11 && statement -> state <= STATE_S12 &&
-              statement -> interupted_state >= STATE_S2 && statement -> interupted_state <= STATE_S4)
+    else if (( statement -> state >= STATE_S2 && statement -> state <= STATE_S4 ) ||
+              ( statement -> state >= STATE_S11 && statement -> state <= STATE_S12 &&
+              statement -> interupted_state >= STATE_S2 && statement -> interupted_state <= STATE_S4 ))
     {
         statement -> state = STATE_S1;
     }
diff --git a/DriverManager/SQLExecDirectW.c b/DriverManager/SQLExecDirectW.c
index 6c040f3..b4cbe61 100644
--- a/DriverManager/SQLExecDirectW.c
+++ b/DriverManager/SQLExecDirectW.c
@@ -435,9 +435,9 @@ SQLRETURN SQLExecDirectW( SQLHSTMT statement_handle,
 
         statement -> prepared = 0;
     }
-    else if ( statement -> state >= STATE_S2 && statement -> state <= STATE_S4 ||
-              statement -> state >= STATE_S11 && statement -> state <= STATE_S12 &&
-              statement -> interupted_state >= STATE_S2 && statement -> interupted_state <= STATE_S4)
+    else if (( statement -> state >= STATE_S2 && statement -> state <= STATE_S4 ) ||
+              ( statement -> state >= STATE_S11 && statement -> state <= STATE_S12 &&
+              statement -> interupted_state >= STATE_S2 && statement -> interupted_state <= STATE_S4 ))
     {
         statement -> state = STATE_S1;
     }
diff --git a/DriverManager/SQLFetchScroll.c b/DriverManager/SQLFetchScroll.c
index c08f8ca..bd3fc39 100644
--- a/DriverManager/SQLFetchScroll.c
+++ b/DriverManager/SQLFetchScroll.c
@@ -164,13 +164,13 @@ SQLRETURN SQLFetchScroll( SQLHSTMT statement_handle,
 
     thread_protect( SQL_HANDLE_STMT, statement );
 
-    if ( fetch_orientation != SQL_FETCH_NEXT &&
+    if (( fetch_orientation != SQL_FETCH_NEXT &&
             fetch_orientation != SQL_FETCH_PRIOR &&
             fetch_orientation != SQL_FETCH_FIRST &&
             fetch_orientation != SQL_FETCH_LAST &&
             fetch_orientation != SQL_FETCH_ABSOLUTE &&
             fetch_orientation != SQL_FETCH_RELATIVE &&
-            fetch_orientation != SQL_FETCH_BOOKMARK ||
+            fetch_orientation != SQL_FETCH_BOOKMARK ) ||
           (fetch_orientation == SQL_FETCH_BOOKMARK
            && statement -> bookmarks_on == SQL_UB_OFF) )
     {
diff --git a/DriverManager/SQLGetConnectAttr.c b/DriverManager/SQLGetConnectAttr.c
index 9dc3182..92eef95 100644
--- a/DriverManager/SQLGetConnectAttr.c
+++ b/DriverManager/SQLGetConnectAttr.c
@@ -360,12 +360,12 @@ SQLRETURN SQLGetConnectAttr( SQLHDBC connection_handle,
                                 rc = SQL_SUCCESS_WITH_INFO;
                             }
                         }
-                        else if(buffer_length >= sizeof(SQLLEN))
+                        else if(buffer_length >= sizeof(intptr_t))
                         {
-                            *(SQLLEN*)value = sa -> int_attr;
+                            *(intptr_t*)value = sa -> intptr_attr;
                             if(string_length)
                             {
-                                *string_length = sizeof(SQLLEN);
+                                *string_length = sizeof(intptr_t);
                             }
                         }
                         else if(sa -> str_len >= SQL_IS_SMALLINT && sa -> str_len <= SQL_IS_POINTER)
@@ -374,23 +374,23 @@ SQLRETURN SQLGetConnectAttr( SQLHDBC connection_handle,
                             switch (sa -> str_len)
                             {
                             case SQL_IS_SMALLINT:
-                                *(SQLSMALLINT*)value = sa->int_attr;
+                                *(SQLSMALLINT*)value = sa->intptr_attr;
                                 length = sizeof(SQLSMALLINT);
                                 break;
                             case SQL_IS_USMALLINT:
-                                *(SQLUSMALLINT*)value = sa->int_attr;
+                                *(SQLUSMALLINT*)value = sa->intptr_attr;
                                 length = sizeof(SQLUSMALLINT);
                                 break;
                             case SQL_IS_INTEGER:
-                                *(SQLINTEGER*)value = sa->int_attr;
+                                *(SQLINTEGER*)value = sa->intptr_attr;
                                 length = sizeof(SQLINTEGER);
                                 break;
                             case SQL_IS_UINTEGER:
-                                *(SQLUINTEGER*)value = sa->int_attr;
+                                *(SQLUINTEGER*)value = sa->intptr_attr;
                                 length = sizeof(SQLUINTEGER);
                                 break;
                             case SQL_IS_POINTER:
-                                *(SQLPOINTER**)value = sa->int_attr;
+                                *(SQLPOINTER**)value = (SQLPOINTER*) sa->intptr_attr;
                                 length = sizeof(SQLPOINTER);
                                 break;
                             }
@@ -401,7 +401,7 @@ SQLRETURN SQLGetConnectAttr( SQLHDBC connection_handle,
                         }
                         else
                         {
-                            memcpy(value, &sa->int_attr, buffer_length);
+                            memcpy(value, &sa->intptr_attr, buffer_length);
                         }
                         return function_return_nodrv( SQL_HANDLE_DBC, connection, rc );
                     }
diff --git a/DriverManager/SQLGetConnectAttrW.c b/DriverManager/SQLGetConnectAttrW.c
index 1838c15..99d8e75 100644
--- a/DriverManager/SQLGetConnectAttrW.c
+++ b/DriverManager/SQLGetConnectAttrW.c
@@ -306,7 +306,7 @@ SQLRETURN SQLGetConnectAttrW( SQLHDBC connection_handle,
                         }
                         else if(buffer_length >= sizeof(SQLLEN))
                         {
-                            *(SQLLEN*)value = sa -> int_attr;
+                            *(SQLLEN*)value = sa -> intptr_attr;
                             if(string_length)
                             {
                                 *string_length = sizeof(SQLLEN);
@@ -318,23 +318,23 @@ SQLRETURN SQLGetConnectAttrW( SQLHDBC connection_handle,
                             switch (sa -> str_len)
                             {
                             case SQL_IS_SMALLINT:
-                                *(SQLSMALLINT*)value = sa->int_attr;
+                                *(SQLSMALLINT*)value = sa->intptr_attr;
                                 length = sizeof(SQLSMALLINT);
                                 break;
                             case SQL_IS_USMALLINT:
-                                *(SQLUSMALLINT*)value = sa->int_attr;
+                                *(SQLUSMALLINT*)value = sa->intptr_attr;
                                 length = sizeof(SQLUSMALLINT);
                                 break;
                             case SQL_IS_INTEGER:
-                                *(SQLINTEGER*)value = sa->int_attr;
+                                *(SQLINTEGER*)value = sa->intptr_attr;
                                 length = sizeof(SQLINTEGER);
                                 break;
                             case SQL_IS_UINTEGER:
-                                *(SQLUINTEGER*)value = sa->int_attr;
+                                *(SQLUINTEGER*)value = sa->intptr_attr;
                                 length = sizeof(SQLUINTEGER);
                                 break;
                             case SQL_IS_POINTER:
-                                *(SQLPOINTER**)value = sa->int_attr;
+                                *(SQLPOINTER**)value = (SQLPOINTER) sa->intptr_attr;
                                 length = sizeof(SQLPOINTER);
                                 break;
                             }
@@ -345,7 +345,7 @@ SQLRETURN SQLGetConnectAttrW( SQLHDBC connection_handle,
                         }
                         else
                         {
-                            memcpy(value, &sa->int_attr, buffer_length);
+                            memcpy(value, &sa->intptr_attr, buffer_length);
                         }
                         return function_return_nodrv( SQL_HANDLE_DBC, connection, rc );
                     }
diff --git a/DriverManager/SQLGetData.c b/DriverManager/SQLGetData.c
index 497c525..deac047 100644
--- a/DriverManager/SQLGetData.c
+++ b/DriverManager/SQLGetData.c
@@ -300,8 +300,8 @@ SQLRETURN SQLGetData( SQLHSTMT statement_handle,
     }
     else if ( statement -> state == STATE_S4 ||
             statement -> state == STATE_S5 ||
-            ( statement -> state == STATE_S6 || statement -> state == STATE_S7 )
-            && statement -> eod )
+            (( statement -> state == STATE_S6 || statement -> state == STATE_S7 )
+            && statement -> eod ))
     {
         dm_log_write( __FILE__, 
                 __LINE__, 
diff --git a/DriverManager/SQLGetDiagField.c b/DriverManager/SQLGetDiagField.c
index 26d72c7..58a253c 100644
--- a/DriverManager/SQLGetDiagField.c
+++ b/DriverManager/SQLGetDiagField.c
@@ -512,8 +512,8 @@ static SQLRETURN extract_sql_error_field( EHEAD *head,
      */
 
     if ( rec_number < 1 ||
-        ( diag_identifier == SQL_DIAG_COLUMN_NUMBER ||
-          diag_identifier == SQL_DIAG_ROW_NUMBER ) && head -> handle_type != SQL_HANDLE_STMT )
+        (( diag_identifier == SQL_DIAG_COLUMN_NUMBER ||
+          diag_identifier == SQL_DIAG_ROW_NUMBER ) && head -> handle_type != SQL_HANDLE_STMT ))
     {
         return SQL_ERROR;
     }
diff --git a/DriverManager/SQLGetDiagFieldW.c b/DriverManager/SQLGetDiagFieldW.c
index c3245f6..42175d3 100644
--- a/DriverManager/SQLGetDiagFieldW.c
+++ b/DriverManager/SQLGetDiagFieldW.c
@@ -489,8 +489,8 @@ static SQLRETURN extract_sql_error_field_w( EHEAD *head,
      */
 
     if ( rec_number < 1 ||
-        ( diag_identifier == SQL_DIAG_COLUMN_NUMBER ||
-          diag_identifier == SQL_DIAG_ROW_NUMBER ) && head -> handle_type != SQL_HANDLE_STMT )
+        (( diag_identifier == SQL_DIAG_COLUMN_NUMBER ||
+        diag_identifier == SQL_DIAG_ROW_NUMBER ) && head -> handle_type != SQL_HANDLE_STMT ))
     {
         return SQL_ERROR;
     }
diff --git a/DriverManager/SQLGetFunctions.c b/DriverManager/SQLGetFunctions.c
index bc8698e..997f6a4 100644
--- a/DriverManager/SQLGetFunctions.c
+++ b/DriverManager/SQLGetFunctions.c
@@ -182,10 +182,10 @@ SQLRETURN SQLGetFunctions( SQLHDBC connection_handle,
         return function_return_nodrv( SQL_HANDLE_DBC, connection, SQL_ERROR );
     }
 
-    if ( function_id > SQL_API_SQLBULKOPERATIONS && function_id < SQL_API_SQLCOLUMNS ||
-         function_id > SQL_API_SQLALLOCHANDLESTD && function_id < SQL_API_LOADBYORDINAL ||
-         function_id > SQL_API_LOADBYORDINAL && function_id < SQL_API_ODBC3_ALL_FUNCTIONS ||
-         function_id > SQL_API_ODBC3_ALL_FUNCTIONS && function_id < SQL_API_SQLALLOCHANDLE ||
+    if (( function_id > SQL_API_SQLBULKOPERATIONS && function_id < SQL_API_SQLCOLUMNS ) ||
+         ( function_id > SQL_API_SQLALLOCHANDLESTD && function_id < SQL_API_LOADBYORDINAL ) ||
+         ( function_id > SQL_API_LOADBYORDINAL && function_id < SQL_API_ODBC3_ALL_FUNCTIONS ) ||
+         ( function_id > SQL_API_ODBC3_ALL_FUNCTIONS && function_id < SQL_API_SQLALLOCHANDLE ) ||
          function_id > SQL_API_SQLFETCHSCROLL )
     {
         __post_internal_error( &connection -> error,
diff --git a/DriverManager/SQLGetStmtAttr.c b/DriverManager/SQLGetStmtAttr.c
index 23082ca..0aa02dd 100644
--- a/DriverManager/SQLGetStmtAttr.c
+++ b/DriverManager/SQLGetStmtAttr.c
@@ -239,8 +239,8 @@ SQLRETURN SQLGetStmtAttr( SQLHSTMT statement_handle,
                 statement -> state == STATE_S3 ||
                 statement -> state == STATE_S4 ||
                 statement -> state == STATE_S5 ||
-                ( statement -> state == STATE_S6 ||
-                  statement -> state == STATE_S7 )  && statement -> eod )
+                (( statement -> state == STATE_S6 ||
+                  statement -> state == STATE_S7 ) && statement -> eod ))
         {
             dm_log_write( __FILE__, 
                     __LINE__, 
diff --git a/DriverManager/SQLGetStmtAttrW.c b/DriverManager/SQLGetStmtAttrW.c
index b486101..a191dd0 100644
--- a/DriverManager/SQLGetStmtAttrW.c
+++ b/DriverManager/SQLGetStmtAttrW.c
@@ -169,8 +169,8 @@ SQLRETURN SQLGetStmtAttrW( SQLHSTMT statement_handle,
                 statement -> state == STATE_S3 ||
                 statement -> state == STATE_S4 ||
                 statement -> state == STATE_S5 ||
-                ( statement -> state == STATE_S6 ||
-                  statement -> state == STATE_S7 )  && statement -> eod )
+                (( statement -> state == STATE_S6 ||
+                  statement -> state == STATE_S7 )  && statement -> eod ))
         {
             dm_log_write( __FILE__, 
                     __LINE__, 
diff --git a/DriverManager/SQLGetStmtOption.c b/DriverManager/SQLGetStmtOption.c
index 7f8d912..04fcdc8 100644
--- a/DriverManager/SQLGetStmtOption.c
+++ b/DriverManager/SQLGetStmtOption.c
@@ -170,9 +170,9 @@ SQLRETURN SQLGetStmtOption( SQLHSTMT statement_handle,
 
     if ( option == SQL_ROW_NUMBER || option == SQL_GET_BOOKMARK )
     {
-        if ( statement -> state >= STATE_S1 && statement -> state <= STATE_S5 ||
-                ( statement -> state == STATE_S6 ||
-                  statement -> state == STATE_S7 )  && statement -> eod )
+        if (( statement -> state >= STATE_S1 && statement -> state <= STATE_S5 ) ||
+                (( statement -> state == STATE_S6 ||
+                  statement -> state == STATE_S7 ) && statement -> eod ))
         {
             dm_log_write( __FILE__, 
                     __LINE__, 
diff --git a/DriverManager/SQLSetConnectAttr.c b/DriverManager/SQLSetConnectAttr.c
index 1a4a89f..272eea9 100644
--- a/DriverManager/SQLSetConnectAttr.c
+++ b/DriverManager/SQLSetConnectAttr.c
@@ -676,7 +676,7 @@ SQLRETURN SQLSetConnectAttr( SQLHDBC connection_handle,
             }
             else
             {
-                sa -> int_attr = ( SQLLEN ) value;
+                sa -> intptr_attr = (intptr_t) value;
                 sa -> str_len = string_length;
             }
             sa -> next = connection -> save_attr;
diff --git a/DriverManager/SQLSetConnectAttrW.c b/DriverManager/SQLSetConnectAttrW.c
index 0dc18e0..105dab8 100644
--- a/DriverManager/SQLSetConnectAttrW.c
+++ b/DriverManager/SQLSetConnectAttrW.c
@@ -612,7 +612,7 @@ SQLRETURN SQLSetConnectAttrW( SQLHDBC connection_handle,
             }
             else
             {
-                sa -> int_attr = ( SQLLEN ) value;
+                sa -> intptr_attr = (intptr_t) value;
                 sa -> str_len = string_length;
             }
             sa -> next = connection -> save_attr;
diff --git a/DriverManager/SQLSetConnectOption.c b/DriverManager/SQLSetConnectOption.c
index 83ca85c..61daf46 100644
--- a/DriverManager/SQLSetConnectOption.c
+++ b/DriverManager/SQLSetConnectOption.c
@@ -512,7 +512,7 @@ SQLRETURN SQLSetConnectOption( SQLHDBC connection_handle,
             struct save_attr *sa = calloc( 1, sizeof( struct save_attr ));
 
             sa -> attr_type = option;
-            sa -> int_attr = ( SQLINTEGER ) value;
+            sa -> intptr_attr = value;
             sa -> next = connection -> save_attr;
             connection -> save_attr = sa;
         }
diff --git a/DriverManager/SQLSetConnectOptionW.c b/DriverManager/SQLSetConnectOptionW.c
index 028f3b2..ba0ea15 100644
--- a/DriverManager/SQLSetConnectOptionW.c
+++ b/DriverManager/SQLSetConnectOptionW.c
@@ -431,7 +431,7 @@ SQLRETURN SQLSetConnectOptionW( SQLHDBC connection_handle,
             struct save_attr *sa = calloc( 1, sizeof( struct save_attr ));
 
             sa -> attr_type = option;
-            sa -> int_attr = ( SQLINTEGER ) value;
+            sa -> intptr_attr = value;
             sa -> next = connection -> save_attr;
             connection -> save_attr = sa;
         }
diff --git a/DriverManager/SQLSetScrollOptions.c b/DriverManager/SQLSetScrollOptions.c
index b24e8ae..82916ac 100644
--- a/DriverManager/SQLSetScrollOptions.c
+++ b/DriverManager/SQLSetScrollOptions.c
@@ -208,10 +208,10 @@ SQLRETURN SQLSetScrollOptions(
         return function_return_nodrv( SQL_HANDLE_STMT, statement, SQL_ERROR );
     }
 
-    if ( crow_keyset != SQL_SCROLL_FORWARD_ONLY &&
+    if (( crow_keyset != SQL_SCROLL_FORWARD_ONLY &&
             crow_keyset != SQL_SCROLL_STATIC &&
             crow_keyset != SQL_SCROLL_KEYSET_DRIVEN &&
-            crow_keyset != SQL_SCROLL_DYNAMIC  ||
+            crow_keyset != SQL_SCROLL_DYNAMIC ) ||
             !crow_rowset)
     {
         dm_log_write( __FILE__, 
diff --git a/DriverManager/SQLSpecialColumns.c b/DriverManager/SQLSpecialColumns.c
index 507727a..ea5863b 100644
--- a/DriverManager/SQLSpecialColumns.c
+++ b/DriverManager/SQLSpecialColumns.c
@@ -231,8 +231,8 @@ SQLRETURN SQLSpecialColumns( SQLHSTMT statement_handle,
         return function_return_nodrv( SQL_HANDLE_STMT, statement, SQL_ERROR );
     }
 
-    if ( name_length1 < 0 && name_length1 != SQL_NTS ||
-         name_length2 < 0 && name_length2 != SQL_NTS )
+    if (( name_length1 < 0 && name_length1 != SQL_NTS ) ||
+         ( name_length2 < 0 && name_length2 != SQL_NTS ))
     {
         __post_internal_error( &statement -> error,
                 ERROR_HY090, NULL,
diff --git a/DriverManager/SQLSpecialColumnsW.c b/DriverManager/SQLSpecialColumnsW.c
index 637e4c4..01937cd 100644
--- a/DriverManager/SQLSpecialColumnsW.c
+++ b/DriverManager/SQLSpecialColumnsW.c
@@ -198,8 +198,8 @@ SQLRETURN SQLSpecialColumnsW( SQLHSTMT statement_handle,
         return function_return_nodrv( SQL_HANDLE_STMT, statement, SQL_ERROR );
     }
 
-    if ( name_length1 < 0 && name_length1 != SQL_NTS ||
-         name_length2 < 0 && name_length2 != SQL_NTS )
+    if (( name_length1 < 0 && name_length1 != SQL_NTS ) ||
+        ( name_length2 < 0 && name_length2 != SQL_NTS ))
     {
         __post_internal_error( &statement -> error,
                 ERROR_HY090, NULL,
diff --git a/DriverManager/__info.c b/DriverManager/__info.c
index cfb87ad..974aec4 100644
--- a/DriverManager/__info.c
+++ b/DriverManager/__info.c
@@ -4600,7 +4600,9 @@ void extract_diag_error_w( int htype,
         if ( SQL_SUCCEEDED( ret ))
         {
             ERROR *e = malloc( sizeof( ERROR ));
+#ifndef STRICT_ODBC_ERROR
             SQLWCHAR *tmp;
+#endif
 
             /* 
              * make sure we are truncated in the right place
@@ -4836,7 +4838,9 @@ void extract_sql_error_w( DRV_SQLHANDLE henv,
 
         if ( SQL_SUCCEEDED( ret ))
         {
+#ifndef STRICT_ODBC_ERROR
             SQLWCHAR *tmp;
+#endif
 
             /*
              * add to the lists, SQLError list first
diff --git a/DriverManager/drivermanager.h b/DriverManager/drivermanager.h
index e6a00c7..29c176a 100644
--- a/DriverManager/drivermanager.h
+++ b/DriverManager/drivermanager.h
@@ -235,7 +235,7 @@ struct save_attr
     int                 attr_type;
     char                *str_attr;
     int                 str_len;
-    SQLLEN              int_attr;
+    intptr_t            intptr_attr;
     struct save_attr    *next;
 };
 
@@ -845,6 +845,33 @@ int __append_pair( struct con_struct *con_str, char *kword, char *value );
 void __handle_attr_extensions_cs( DMHDBC connection, struct con_struct *con_str );
 void __strip_from_pool( DMHENV env );
 
+void extract_diag_error_w( int htype,
+                            DRV_SQLHANDLE handle,
+                            DMHDBC connection,
+                            EHEAD *head,
+                            int return_code,
+                            int save_to_diag );
+
+void extract_diag_error( int htype,
+                            DRV_SQLHANDLE handle,
+                            DMHDBC connection,
+                            EHEAD *head,
+                            int return_code,
+                            int save_to_diag );
+
+void extract_sql_error_w( DRV_SQLHANDLE henv,
+                            DRV_SQLHANDLE hdbc,
+                            DRV_SQLHANDLE hstmt,
+                            DMHDBC connection,
+                            EHEAD *head, 
+                            int return_code );
+
+void extract_sql_error( DRV_SQLHANDLE henv,
+                            DRV_SQLHANDLE hdbc,
+                            DRV_SQLHANDLE hstmt,
+                            DMHDBC connection,
+                            EHEAD *head, 
+                            int return_code );
 /*
  * the following two are part of a effort to get a particular unicode driver working
  */
diff --git a/exe/iusql.c b/exe/iusql.c
index ce3d39a..d413bb7 100644
--- a/exe/iusql.c
+++ b/exe/iusql.c
@@ -35,18 +35,13 @@ static int ExecuteSQL( SQLHDBC hDbc, char *szSQL, char cDelimiter, int bColumnNa
 static int ExecuteHelp( SQLHDBC hDbc, char *szSQL, char cDelimiter, int bColumnNames, int bHTMLTable );
 
 static void WriteHeaderHTMLTable( SQLHSTMT hStmt );
-static void WriteHeaderNormal( SQLHSTMT hStmt, SQLCHAR	*szSepLine );
 static void WriteHeaderDelimited( SQLHSTMT hStmt, char cDelimiter );
 static void WriteBodyHTMLTable( SQLHSTMT hStmt );
 static SQLLEN WriteBodyNormal( SQLHSTMT hStmt );
 static void WriteBodyDelimited( SQLHSTMT hStmt, char cDelimiter );
 static void WriteFooterHTMLTable( SQLHSTMT hStmt );
-static void WriteFooterNormal( SQLHSTMT hStmt, SQLCHAR	*szSepLine, SQLLEN nRows );
 
 static int DumpODBCLog( SQLHENV hEnv, SQLHDBC hDbc, SQLHSTMT hStmt );
-static int get_args(char *string, char **args, int maxarg);
-static void free_args(char **args, int maxarg);
-static void output_help(void);
 
 
 int     bVerbose                    = 0;
diff --git a/exe/slencheck.c b/exe/slencheck.c
index 8df7c11..330299b 100644
--- a/exe/slencheck.c
+++ b/exe/slencheck.c
@@ -69,13 +69,13 @@ int main( int argc, char **argv )
     }
 
     if ( argc == 2 ) {
-        ret = SQLConnect( hdbc, argv[ 1 ], SQL_NTS, NULL, 0, NULL, 0 );
+        ret = SQLConnect( hdbc, (SQLCHAR*) argv[ 1 ], SQL_NTS, NULL, 0, NULL, 0 );
     }
     else if ( argc == 3 ) {
-        ret = SQLConnect( hdbc, argv[ 1 ], SQL_NTS, argv[ 2 ], SQL_NTS, NULL, 0 );
+        ret = SQLConnect( hdbc, (SQLCHAR*) argv[ 1 ], SQL_NTS, (SQLCHAR*) argv[ 2 ], SQL_NTS, NULL, 0 );
     }
     else {
-        ret = SQLConnect( hdbc, argv[ 1 ], SQL_NTS, argv[ 2 ], SQL_NTS, argv[ 3 ], SQL_NTS );
+        ret = SQLConnect( hdbc, (SQLCHAR*) argv[ 1 ], SQL_NTS, (SQLCHAR*) argv[ 2 ], SQL_NTS, (SQLCHAR*) argv[ 3 ], SQL_NTS );
     }
 
     if ( !SQL_SUCCEEDED( ret )) {
openSUSE Build Service is sponsored by