diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 23aca3d88f..58c9cc14fe 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,19 @@ past entries belonging to these authors: Viktor Szakats. */ +2009-05-22 12:30 UTC+0200 Viktor Szakats (harbour.01 syenar hu) + * contrib/hbodbc/odbc.c + + Copied dummy HB_TCHAR* macros from odbcdd.c, plus + added dummy HB_TCHAR_CONVFROM(). + % Removed separate branches for Windows platform. + Please test it on *nix. + ; TODO: Except one. Currently we have no TCHAR macro + which deals with byte strings with lengths. + Przemek, do you think it's possible to add it? + + * contrib/rddsql/sddodbc/odbcdd.c + + Added HB_TCHAR_CONVFROM(). + 2009-05-22 12:18 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/mpkg_rpm.sh * harbour/harbour.spec diff --git a/harbour/contrib/hbodbc/odbc.c b/harbour/contrib/hbodbc/odbc.c index a946929331..dd9cb9d677 100644 --- a/harbour/contrib/hbodbc/odbc.c +++ b/harbour/contrib/hbodbc/odbc.c @@ -79,6 +79,12 @@ #include "hbapi.h" +#if !defined( HB_OS_WIN ) +# define HB_TCHAR_CONVTO( s ) ( ( char * ) ( s ) ) +# define HB_TCHAR_CONVFROM( s ) ( ( char * ) ( s ) ) +# define HB_TCHAR_FREE( s ) HB_SYMBOL_UNUSED( s ) +#endif + #if defined( HB_OS_LINUX ) && defined( __WATCOMC__ ) #include "/usr/include/sql.h" #include "/usr/include/sqlext.h" @@ -125,10 +131,7 @@ HB_FUNC( SQLDRIVERCONNECT ) /* hDbc, @cConnectString --> nRetCode */ { SQLSMALLINT wLen; SQLRETURN ret; - -#if defined( HB_OS_WIN ) && defined( UNICODE ) - - SQLTCHAR * lpStr = HB_TCHAR_CONVTO( hb_parcx( 2 ) ); + SQLTCHAR * lpStr = ( SQLTCHAR * ) HB_TCHAR_CONVTO( hb_parcx( 2 ) ); SQLTCHAR buffer[ 1024 ]; buffer[ 0 ] = '\0'; ret = SQLDriverConnect( ( SQLHDBC ) hb_parptr( 1 ), @@ -146,29 +149,16 @@ HB_FUNC( SQLDRIVERCONNECT ) /* hDbc, @cConnectString --> nRetCode */ hb_storc( szStr, 3 ); HB_TCHAR_FREE( szStr ); } -#else - SQLTCHAR buffer[ 1024 ]; - buffer[ 0 ] = '\0'; - ret = SQLDriverConnect( ( SQLHDBC ) hb_parptr( 1 ), - ( SQLHWND ) NULL, - ( SQLTCHAR * ) hb_parcx( 2 ), - ( SQLSMALLINT ) hb_parclen( 2 ), - ( SQLTCHAR * ) buffer, - ( SQLSMALLINT ) HB_SIZEOFARRAY( buffer ), - ( SQLSMALLINT * ) &wLen, - ( SQLUSMALLINT ) SQL_DRIVER_COMPLETE ); - hb_storc( ( char * ) buffer, 3 ); -#endif hb_retni( ret ); } HB_FUNC( SQLCONNECT ) /* hDbc, cDSN, cUseName, cPassword --> nRetCode */ { SQLRETURN ret; -#if defined( HB_OS_WIN ) && defined( UNICODE ) - SQLTCHAR * lpDSN = HB_TCHAR_CONVTO( hb_parcx( 2 ) ); - SQLTCHAR * lpUseName = HB_TCHAR_CONVTO( hb_parcx( 3 ) ); - SQLTCHAR * lpPassword = HB_TCHAR_CONVTO( hb_parcx( 4 ) ); + + SQLTCHAR * lpDSN = ( SQLTCHAR * ) HB_TCHAR_CONVTO( hb_parcx( 2 ) ); + SQLTCHAR * lpUseName = ( SQLTCHAR * ) HB_TCHAR_CONVTO( hb_parcx( 3 ) ); + SQLTCHAR * lpPassword = ( SQLTCHAR * ) HB_TCHAR_CONVTO( hb_parcx( 4 ) ); ret = SQLConnect( ( SQLHDBC ) hb_parptr( 1 ), ( SQLTCHAR * ) lpDSN, @@ -181,15 +171,7 @@ HB_FUNC( SQLCONNECT ) /* hDbc, cDSN, cUseName, cPassword --> nRetCode */ HB_TCHAR_FREE( lpDSN ); HB_TCHAR_FREE( lpUseName ); HB_TCHAR_FREE( lpPassword ); -#else - ret = SQLConnect( ( SQLHDBC ) hb_parptr( 1 ), - ( SQLTCHAR * ) hb_parcx( 2 ), - ( SQLSMALLINT ) hb_parclen( 2 ), - ( SQLTCHAR * ) hb_parcx( 3 ), - ( SQLSMALLINT ) hb_parclen( 3 ), - ( SQLTCHAR * ) hb_parcx( 4 ), - ( SQLSMALLINT ) hb_parclen( 4 ) ); -#endif + hb_retni( ret ); } @@ -223,17 +205,11 @@ HB_FUNC( SQLFREESTMT ) /* hStmt, nType --> nRetCode */ HB_FUNC( SQLEXECDIRECT ) /* hStmt, cStatement --> nRetCode */ { -#if defined( HB_OS_WIN ) && defined( UNICODE ) - SQLTCHAR * lpStr = HB_TCHAR_CONVTO( hb_parcx( 2 ) ); + SQLTCHAR * lpStr = ( SQLTCHAR * ) HB_TCHAR_CONVTO( hb_parcx( 2 ) ); hb_retni( SQLExecDirect( ( SQLHSTMT ) hb_parptr( 1 ), ( SQLTCHAR * ) lpStr, ( SQLINTEGER ) hb_parclen( 2 ) ) ); HB_TCHAR_FREE( lpStr ); -#else - hb_retni( SQLExecDirect( ( SQLHSTMT ) hb_parptr( 1 ), - ( SQLTCHAR * ) hb_parcx( 2 ), - ( SQLINTEGER ) hb_parclen( 2 ) ) ); -#endif } HB_FUNC( SQLFETCH ) /* hStmt --> nRetCode */ @@ -458,24 +434,16 @@ HB_FUNC( SQLERROR ) /* hEnv, hDbc, hStmt, @cErrorClass, @nType, @cErrorMsg */ if( ISBYREF( 4 ) ) { -#if defined( HB_OS_WIN ) && defined( UNICODE ) char * szStr = HB_TCHAR_CONVFROM( buffer ); hb_storc( szStr, 4 ); HB_TCHAR_FREE( szStr ); -#else - hb_storc( ( char * ) buffer, 4 ); -#endif } hb_stornl( ( long ) lError, 5 ); if( ISBYREF( 6 ) ) { -#if defined( HB_OS_WIN ) && defined( UNICODE ) char * szStr = HB_TCHAR_CONVFROM( szErrorMsg ); hb_storc( szStr, 6 ); HB_TCHAR_FREE( szStr ); -#else - hb_storc( ( char * ) szErrorMsg, 6 ); -#endif } } @@ -592,17 +560,11 @@ HB_FUNC( SQLROLLBACK ) /* hEnv, hDbc */ HB_FUNC( SQLPREPARE ) /* hStmt, cStatement --> nRetCode */ { -#if defined( HB_OS_WIN ) && defined( UNICODE ) - SQLTCHAR * lpStr = HB_TCHAR_CONVTO( hb_parcx( 2 ) ); + SQLTCHAR * lpStr = ( SQLTCHAR * ) HB_TCHAR_CONVTO( hb_parcx( 2 ) ); hb_retni( SQLPrepare( ( SQLHSTMT ) hb_parptr( 1 ), ( SQLTCHAR * ) lpStr, ( SQLINTEGER ) SQL_NTS ) ); HB_TCHAR_FREE( lpStr ); -#else - hb_retni( SQLPrepare( ( SQLHSTMT ) hb_parptr( 1 ), - ( SQLTCHAR * ) hb_parcx( 2 ), - ( SQLINTEGER ) SQL_NTS ) ); -#endif } HB_FUNC( SQLEXECUTE ) /* hStmt --> nRetCode */ @@ -619,17 +581,12 @@ HB_FUNC( SQLEXECUTESCALAR ) if( result == SQL_SUCCESS || result == SQL_SUCCESS_WITH_INFO ) { -#if defined( HB_OS_WIN ) && defined( UNICODE ) - SQLTCHAR * lpStr = HB_TCHAR_CONVTO( hb_parcx( 1 ) ); + SQLTCHAR * lpStr = ( SQLTCHAR * ) HB_TCHAR_CONVTO( hb_parcx( 1 ) ); result = SQLExecDirect( ( SQLHSTMT ) hStmt, ( SQLTCHAR * ) lpStr, ( SQLINTEGER ) SQL_NTS ); HB_TCHAR_FREE( lpStr ); -#else - result = SQLExecDirect( ( SQLHSTMT ) hStmt, - ( SQLTCHAR * ) hb_parcx( 1 ), - ( SQLINTEGER ) SQL_NTS ); -#endif + if( result == SQL_SUCCESS || result == SQL_SUCCESS_WITH_INFO ) { result = SQLFetch( ( SQLHSTMT ) hStmt ); diff --git a/harbour/contrib/rddsql/sddodbc/odbcdd.c b/harbour/contrib/rddsql/sddodbc/odbcdd.c index b363018e65..b1521095f9 100644 --- a/harbour/contrib/rddsql/sddodbc/odbcdd.c +++ b/harbour/contrib/rddsql/sddodbc/odbcdd.c @@ -62,6 +62,7 @@ #if !defined( HB_OS_WIN ) # define HB_TCHAR_CONVTO( s ) ( ( char * ) ( s ) ) +# define HB_TCHAR_CONVFROM( s ) ( ( char * ) ( s ) ) # define HB_TCHAR_FREE( s ) HB_SYMBOL_UNUSED( s ) #endif