--- src/SQLBindCol.c.orig	2009-03-03 01:25:53.000000000 +0600
+++ src/SQLBindCol.c	2009-03-03 01:31:04.000000000 +0600
@@ -109,12 +109,12 @@
     SQLUSMALLINT    ColumnNumber,
     SQLSMALLINT        TargetType,
     SQLPOINTER        TargetValuePtr,
-    SQLINTEGER        BufferLength,
-    SQLINTEGER        *StrLen_or_IndPtr )
+    SQLLEN            BufferLength,
+    SQLLEN            *StrLen_or_IndPtr )
 {
     hStmt_T *stmt=(hStmt_T*)StatementHandle;
     SQLRETURN status=SQL_SUCCESS;
-    SQLINTEGER *tmp;
+    SQLLEN *tmp;
 
 
   tmp=0;
--- src/SQLBindParameter.c.orig	2009-03-03 01:27:42.000000000 +0600
+++ src/SQLBindParameter.c	2009-03-03 01:28:45.000000000 +0600
@@ -81,11 +81,11 @@
     SQLSMALLINT            InputOutputType,
     SQLSMALLINT            ValueType,
     SQLSMALLINT            ParameterType,
-    SQLUINTEGER            ColumnSize,
+    SQLULEN                ColumnSize,
     SQLSMALLINT            DecimalDigits,
     SQLPOINTER            ParameterValuePtr,
-    SQLINTEGER            BufferLength,
-    SQLINTEGER            *StrLen_or_IndPtr )
+    SQLLEN                BufferLength,
+    SQLLEN                *StrLen_or_IndPtr )
 {
     hStmt_T* stmt=(hStmt_T*)StatementHandle;
     SQLRETURN status=SQL_SUCCESS;
--- src/SQLColAttribute.c.orig	2009-03-03 01:29:17.000000000 +0600
+++ src/SQLColAttribute.c	2009-03-03 01:37:14.000000000 +0600
@@ -72,7 +72,7 @@
     SQLPOINTER            CharacterAttributePtr,
     SQLSMALLINT            BufferLength,
     SQLSMALLINT            *StringLengthPtr,
-    SQLPOINTER            NumericAttributePtr )
+    SQLLEN                 *NumericAttributePtr )
 {
     hStmt_T *stmt=(hStmt_T*)StatementHandle;
     struct ar_TAG *ar;
@@ -99,7 +99,7 @@
    switch(FieldIdentifier)
     {
         case SQL_DESC_AUTO_UNIQUE_VALUE:
-            *((SQLINTEGER*)NumericAttributePtr)=ar->auto_unique;
+            *NumericAttributePtr=ar->auto_unique;
 //#define UNIX_DEBUG
 #ifdef UNIX_DEBUG
 fprintf(stderr,"SQL_DESC_AUTO_UNIQUE_VALUE=%d %s %d\n",*((SQLINTEGER*)NumericAttributePtr),__FILE__,__LINE__);
@@ -149,7 +149,7 @@
 #ifdef UNIX_DEBUG
       fprintf(stderr,"SQL_DESC_CASE_SENSITIVE %s %d\n",__FILE__,__LINE__);
 #endif
-      *((SQLINTEGER*)NumericAttributePtr)=ar->case_sensitive;
+      *NumericAttributePtr=ar->case_sensitive;
       break;
       
     case SQL_DESC_CATALOG_NAME:
@@ -169,44 +169,44 @@
       *((SQLINTEGER*)NumericAttributePtr)=ood_ocitype_to_sqltype_imp(stmt,ColumnNumber);
       */
 
-      *((SQLINTEGER*)NumericAttributePtr)=ar->data_type;
+      *NumericAttributePtr=ar->data_type;
       break;
       
     case SQL_DESC_COUNT:
     case SQL_COLUMN_COUNT:
-      *((SQLINTEGER*)NumericAttributePtr)=
+      *NumericAttributePtr=
 	(SQLINTEGER)stmt->current_ir->num_recs;
 #ifdef UNIX_DEBUG
-      fprintf(stderr,"%s %d %d SQL_DESC_COUNT %d\n",
+      fprintf(stderr,"%s %d %d SQL_DESC_COUNT %ld\n",
 	      __FILE__,__LINE__,ColumnNumber,
-	      *((SQLINTEGER*)NumericAttributePtr));
+	      *NumericAttributePtr);
 #endif
       break;
       
     case SQL_DESC_DISPLAY_SIZE:
-      *((SQLINTEGER*)NumericAttributePtr)=ar->display_size;
+      *NumericAttributePtr=ar->display_size;
 #ifdef UNIX_DEBUG
-      fprintf(stderr,"%s %d %d display size %d\n",
+      fprintf(stderr,"%s %d %d display size %ld\n",
 	      __FILE__,__LINE__,ColumnNumber,
-	      *((SQLINTEGER*)NumericAttributePtr));
+	      *NumericAttributePtr);
 #endif
       break;
       
     case SQL_DESC_OCTET_LENGTH:
     case SQL_DESC_LENGTH:
     case SQL_COLUMN_LENGTH:
-      *((SQLINTEGER*)NumericAttributePtr)=ar->octet_length;
+      *NumericAttributePtr=ar->octet_length;
 #ifdef UNIX_DEBUG
-      fprintf(stderr,"%s %d %d octet length %d\n",
+      fprintf(stderr,"%s %d %d octet length %ld\n",
 	      __FILE__,__LINE__,ColumnNumber,
-	      *((SQLINTEGER*)NumericAttributePtr));
+	      *NumericAttributePtr);
 #endif
       break;
       
     case SQL_DESC_FIXED_PREC_SCALE:
-      *((SQLINTEGER*)NumericAttributePtr)=ar->fixed_prec_scale;
+      *NumericAttributePtr=ar->fixed_prec_scale;
 #ifdef UNIX_DEBUG
-      fprintf(stderr,"SQL_DESC_FIXED_PREC_SCALE=%d %s %d\n",*((SQLINTEGER*)NumericAttributePtr),__FILE__,__LINE__);
+      fprintf(stderr,"SQL_DESC_FIXED_PREC_SCALE=%d %s %ld\n",*NumericAttributePtr,__FILE__,__LINE__);
 #endif
       break;
       
@@ -253,25 +253,25 @@
 #ifdef UNIX_DEBUG
       fprintf(stderr,"SQL_DESC_NULLABLE %s %d\n",__FILE__,__LINE__);
 #endif
-      *((SQLINTEGER*)NumericAttributePtr)=ar->nullable;
+      *NumericAttributePtr=ar->nullable;
       break;
       
     case SQL_DESC_NUM_PREC_RADIX:
 #ifdef UNIX_DEBUG
       fprintf(stderr,"SQL_DESC_NUM_PREC_RADIX %s %d\n",__FILE__,__LINE__);
 #endif
-      *((SQLINTEGER*)NumericAttributePtr)=ar->num_prec_radix;
+      *NumericAttributePtr=ar->num_prec_radix;
       break;
       
     case SQL_DESC_PRECISION:
 #ifdef UNIX_DEBUG
       fprintf(stderr,"SQL_DESC_PRECISION %s %d\n",__FILE__,__LINE__);
 #endif
-      *((SQLINTEGER*)NumericAttributePtr)=ar->precision;
+      *NumericAttributePtr=ar->precision;
 
 #ifdef UNIX_DEBUG
-      fprintf(stderr,"SQL_DESC_PRECISION = %d\n",
-	      *((SQLINTEGER*)NumericAttributePtr));
+      fprintf(stderr,"SQL_DESC_PRECISION = %ld\n",
+	      *NumericAttributePtr);
 #endif
 
       break;
@@ -281,11 +281,11 @@
 #ifdef UNIX_DEBUG
       fprintf(stderr,"SQL_DESC_SCALE %s %d\n",__FILE__,__LINE__);
 #endif
-      *((SQLINTEGER*)NumericAttributePtr)=ar->scale;
+      *NumericAttributePtr=ar->scale;
 
 #ifdef UNIX_DEBUG
       fprintf(stderr,"SQL_DESC_SCALE = %d\n",
-	      *((SQLINTEGER*)NumericAttributePtr));
+	      *NumericAttributePtr);
 #endif
 
       break;
@@ -304,14 +304,14 @@
 #ifdef UNIX_DEBUG
       fprintf(stderr,"SQL_DESC_SEARCHABLE %s %d\n",__FILE__,__LINE__);
 #endif
-      *((SQLINTEGER*)NumericAttributePtr)=ar->searchable;
+      *NumericAttributePtr=ar->searchable;
       break;
       
     case SQL_DESC_TYPE:
 #ifdef UNIX_DEBUG
       fprintf(stderr,"SQL_DESC_TYPE %s %d\n",__FILE__,__LINE__);
 #endif
-      *((SQLINTEGER*)NumericAttributePtr)=ar->data_type;
+      *NumericAttributePtr=ar->data_type;
       break;
       
     case SQL_DESC_TYPE_NAME:
@@ -359,20 +359,20 @@
 #ifdef UNIX_DEBUG
       fprintf(stderr,"SQL_DESC_UNNAMED %s %d\n",__FILE__,__LINE__);
 #endif
-      *((SQLINTEGER*)NumericAttributePtr)=SQL_NAMED;
+      *NumericAttributePtr=SQL_NAMED;
       break;
       
     case SQL_DESC_UNSIGNED:
 #ifdef UNIX_DEBUG
       fprintf(stderr,"SQL_DESC_UNSIGNED %s %d\n",__FILE__,__LINE__);
 #endif
-      *((SQLINTEGER*)NumericAttributePtr)=ar->un_signed;
+      *NumericAttributePtr=ar->un_signed;
       break;
       
     case SQL_DESC_UPDATABLE:
-      *((SQLINTEGER*)NumericAttributePtr)=ar->updateable;
+      *NumericAttributePtr=ar->updateable;
 #ifdef UNIX_DEBUG
-      fprintf(stderr,"SQL_DESC_UPDATABLE=%d %s %d\n",*((SQLINTEGER*)NumericAttributePtr),__FILE__,__LINE__);
+      fprintf(stderr,"SQL_DESC_UPDATABLE=%d %s %ld\n",*NumericAttributePtr,__FILE__,__LINE__);
 #endif
       break;
       
@@ -402,7 +402,7 @@
             (SQLHANDLE)NULL,status,"sii",
 			"FieldIdentifier",odbc_desc_type(FieldIdentifier),
 			"ColumnNnumber",ColumnNumber,
-			"*NumericAttributePtr",*(SQLINTEGER*)NumericAttributePtr);
+			"*NumericAttributePtr", *NumericAttributePtr);
 //#undef  UNIX_DEBUG
 }
     return status;
--- src/SQLDescribeCol.c.orig	2009-03-03 01:38:19.000000000 +0600
+++ src/SQLDescribeCol.c	2009-03-03 01:38:54.000000000 +0600
@@ -78,7 +78,7 @@
     SQLSMALLINT            BufferLength,
     SQLSMALLINT            *NameLengthPtr,
     SQLSMALLINT            *DataTypePtr,
-    SQLUINTEGER            *ColumnSizePtr,
+    SQLULEN                *ColumnSizePtr,
     SQLSMALLINT            *DecimalDigitsPtr,
     SQLSMALLINT            *NullablePtr )
 {
--- src/SQLDescribeParam.c.orig	2009-03-03 01:39:20.000000000 +0600
+++ src/SQLDescribeParam.c	2009-03-03 01:39:53.000000000 +0600
@@ -71,7 +71,7 @@
     SQLHSTMT            StatementHandle,
     SQLUSMALLINT        ParameterNumber,
     SQLSMALLINT            *DataTypePtr,
-    SQLUINTEGER            *ParameterSizePtr,
+    SQLULEN                *ParameterSizePtr,
     SQLSMALLINT            *DecimalDigitsPtr,
     SQLSMALLINT            *NullablePtr )
 {
--- src/SQLExtendedFetch.c.orig	2009-03-03 01:53:12.000000000 +0600
+++ src/SQLExtendedFetch.c	2009-03-03 01:53:46.000000000 +0600
@@ -65,8 +65,8 @@
 SQLRETURN SQL_API SQLExtendedFetch(
     SQLHSTMT           hstmt,
     SQLUSMALLINT       fFetchType,
-    SQLINTEGER         irow,
-    SQLUINTEGER           *pcrow,
+    SQLLEN             irow,
+    SQLULEN               *pcrow,
     SQLUSMALLINT          *rgfRowStatus)
 {
 	SQLRETURN status;
--- src/SQLFetchScroll.c.orig	2009-03-03 01:40:15.000000000 +0600
+++ src/SQLFetchScroll.c	2009-03-03 01:40:53.000000000 +0600
@@ -73,7 +73,7 @@
 SQLRETURN SQL_API SQLFetchScroll(
     SQLHSTMT            StatementHandle,
     SQLSMALLINT            FetchOrientation,
-    SQLINTEGER            FetchOffset )
+    SQLLEN                 FetchOffset )
 {   
 	hStmt_T* stmt=(hStmt_T*)StatementHandle;
     SQLRETURN status=SQL_SUCCESS;
--- src/SQLGetData.c.orig	2009-03-03 01:41:12.000000000 +0600
+++ src/SQLGetData.c	2009-03-03 01:47:33.000000000 +0600
@@ -306,9 +306,14 @@
     SQLUSMALLINT        ColumnNumber,
     SQLSMALLINT            TargetType,
     SQLPOINTER            TargetValuePtr,
-    SQLINTEGER            BufferLength,
-    SQLINTEGER            *StrLen_or_indPtr )
+    SQLLEN                BufferLength,
+    SQLLEN                *StrLen_or_indPtr )
 {
-    return _SQLGetData(StatementHandle,ColumnNumber,TargetType,TargetValuePtr,
-                BufferLength,StrLen_or_indPtr);
+    SQLINTEGER strlen_or_indptr;
+    SQLRETURN status;
+
+    status = _SQLGetData(StatementHandle,ColumnNumber,TargetType,TargetValuePtr,
+                BufferLength,&strlen);
+    if (status == SQL_SUCCESS)
+	    *StrLen_or_indPtr = strlen_or_indptr;
 }
--- src/SQLGetDescRec.c.orig	2009-03-03 01:48:15.000000000 +0600
+++ src/SQLGetDescRec.c	2009-03-03 01:49:07.000000000 +0600
@@ -67,7 +67,7 @@
     SQLSMALLINT            *StringLengthPtr,
     SQLSMALLINT            *TypePtr,
     SQLSMALLINT            *SubTypePtr,
-    SQLINTEGER            *LengthPtr,
+    SQLLEN                 *LengthPtr,
     SQLSMALLINT            *PrecisionPtr,
     SQLSMALLINT            *ScalePtr,
     SQLSMALLINT            *NullablePtr )
--- src/SQLPutData.c.orig	2009-03-03 01:49:38.000000000 +0600
+++ src/SQLPutData.c	2009-03-03 01:50:05.000000000 +0600
@@ -72,7 +72,7 @@
 SQLRETURN SQL_API SQLPutData( 
     SQLHSTMT              StatementHandle,
     SQLPOINTER            DataPtr,
-    SQLINTEGER            StrLen_or_Ind )
+    SQLLEN                StrLen_or_Ind )
 {
     hStmt_T* stmt=(hStmt_T*)StatementHandle;
     SQLRETURN status=SQL_SUCCESS;
--- src/SQLRowCount.c.orig	2009-03-03 01:50:20.000000000 +0600
+++ src/SQLRowCount.c	2009-03-03 01:50:51.000000000 +0600
@@ -74,7 +74,7 @@
 
 SQLRETURN SQL_API SQLRowCount(
     SQLHSTMT            StatementHandle,
-    SQLINTEGER            *RowCountPtr )
+    SQLLEN                *RowCountPtr )
 {
     hStmt_T *stmt=(hStmt_T*)StatementHandle;
     if(!stmt||HANDLE_TYPE(stmt)!=SQL_HANDLE_STMT)
@@ -88,7 +88,7 @@
     ood_clear_diag((hgeneric*)stmt);
     ood_mutex_lock_stmt(stmt);
 
-	*RowCountPtr=(SQLINTEGER)abs(stmt->num_result_rows);
+	*RowCountPtr=abs(stmt->num_result_rows);
 
     ood_mutex_unlock_stmt(stmt);
 if(ENABLE_TRACE){
--- src/SQLSetDescRec.c.orig	2009-03-03 01:51:07.000000000 +0600
+++ src/SQLSetDescRec.c	2009-03-03 01:51:58.000000000 +0600
@@ -68,12 +68,12 @@
     SQLSMALLINT         RecNumber,
     SQLSMALLINT         Type,
     SQLSMALLINT         SubType,
-    SQLINTEGER          Length,
+    SQLLEN              Length,
     SQLSMALLINT         Precision,
     SQLSMALLINT         Scale,
     SQLPOINTER          DataPtr,
-    SQLINTEGER          *StringLengthPtr,
-    SQLINTEGER          *IndicatorPtr )
+    SQLLEN              *StringLengthPtr,
+    SQLLEN              *IndicatorPtr )
 {
     hDesc_T* desc=(hDesc_T*)DescriptorHandle;
     SQLRETURN status=SQL_SUCCESS;
--- src/SQLSetPos.c.orig	2009-03-03 01:52:19.000000000 +0600
+++ src/SQLSetPos.c	2009-03-03 01:52:50.000000000 +0600
@@ -68,7 +68,7 @@
 
 SQLRETURN SQL_API SQLSetPos( 
     SQLHSTMT            StatementHandle,
-    SQLUSMALLINT        RowNumber,
+    SQLSETPOSIROW       RowNumber,
     SQLUSMALLINT        Operation,
     SQLUSMALLINT        LockType )
 {
--- src/string_functions.h.orig	2009-03-03 01:30:22.000000000 +0600
+++ src/string_functions.h	2009-03-03 01:30:33.000000000 +0600
@@ -62,7 +62,7 @@
 char* ood_xtoSQLNTS(SQLCHAR* str,SQLINTEGER str_len);
 char* ood_xtoSQLNTS_orig(SQLCHAR* str,SQLINTEGER str_len);
 char* ood_fast_strcat(char *dest,char *src,char *endptr);
-int ood_bounded_strcpy(char *dest,char* src, int limit);
+int ood_bounded_strcpy(char *dest, const char* src, int limit);
 char *ood_con_strtok(char* str);
 void return_to_space(char *s);
 #endif
