diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 7c35885a4c..83282c512b 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,29 @@ past entries belonging to these authors: Viktor Szakats. */ +2009-05-27 02:06 UTC+0200 Viktor Szakats (harbour.01 syenar hu) + * contrib/hbct/print.c + + added PRINTSEND() support for Windows platform. + (Borrowed from xhb, work of Pavel Tsarenko, with few minor changes) + + * contrib/gtwvg/wvgwin.c + * contrib/gtwvg/wvgsink.c + ! Fixed two new warnings after my recent commits. + + * contrib/hbwin/hbwapi.h + * Tweaked previous commit. COLORREF and HRESULT now using + hb_retnint() again to fix 32-bit numbers appearing as signed ones + at .prg level. + + * source/rdd/usrrdd/rdds/arrayrdd.prg + ; Added some patches recently committed to xhb: + ! few fixes provided by Quique + + Added AR_LOCK() function, but commented. + ; NOTE: Francesco, would you mind reviewing these changes? + + * utils/hbmk2/hbmk2.prg + * Minor formatting, comment added. + 2009-05-26 21:41 UTC+0200 Viktor Szakats (harbour.01 syenar hu) * contrib/hbwin/hbwapi.h * contrib/hbwin/wapi_commctrl.c diff --git a/harbour/contrib/gtwvg/wvgsink.c b/harbour/contrib/gtwvg/wvgsink.c index 43b4e89d27..0574497b94 100644 --- a/harbour/contrib/gtwvg/wvgsink.c +++ b/harbour/contrib/gtwvg/wvgsink.c @@ -383,7 +383,7 @@ hb_ToOutDebug( "event = %i",(int)dispid ); iArg = params->cArgs; - if( iArg > HB_SIZEOFARRAY( pItemArray ) ) + if( iArg > ( int ) HB_SIZEOFARRAY( pItemArray ) ) iArg = HB_SIZEOFARRAY( pItemArray ); for( i = 1; i <= iArg; i++ ) diff --git a/harbour/contrib/gtwvg/wvgwin.c b/harbour/contrib/gtwvg/wvgwin.c index 17ad6ff8a8..e202a242c3 100644 --- a/harbour/contrib/gtwvg/wvgwin.c +++ b/harbour/contrib/gtwvg/wvgwin.c @@ -677,7 +677,7 @@ HB_FUNC( WIN_CHOOSECOLOR ) COLORREF crCustClr[ 16 ]; int i; - for( i = 0; i < HB_SIZEOFARRAY( crCustClr ); i++ ) + for( i = 0; i < ( int ) HB_SIZEOFARRAY( crCustClr ); i++ ) crCustClr[ i ] = ( ISARRAY( 2 ) ? ( COLORREF ) hb_parnl( 2, i+1 ) : GetSysColor( COLOR_BTNFACE ) ); cc.lStructSize = sizeof( CHOOSECOLOR ); diff --git a/harbour/contrib/hbct/print.c b/harbour/contrib/hbct/print.c index a01fbb9152..ae192f2a05 100644 --- a/harbour/contrib/hbct/print.c +++ b/harbour/contrib/hbct/print.c @@ -162,7 +162,7 @@ HB_FUNC( PRINTREADY ) HB_SYMBOL_UNUSED( uiPort ); #endif - hb_retl( ( Status == 0x90 ) ); + hb_retl( Status == 0x90 ); } @@ -198,5 +198,39 @@ HB_FUNC( PRINTSEND ) else hb_retni( 0 ); } + +#elif defined( HB_OS_WIN_32 ) + + char * szPort = "lpt1"; + char * szChr = " "; + char * szStr = NULL; + USHORT usLen = 0, usRet = 0; + + if( ISNUM( 1 ) ) + { + szChr[ 0 ] = ( char ) hb_parni( 1 ); + szStr = szChr; + usLen = 1; + } + else if( ISCHAR( 1 ) ) + { + szStr = hb_parc( 1 ); + usLen = ( USHORT ) hb_parclen( 1 ); + } + + if( ISNUM( 2 ) ) + szPort[ 3 ] = ( char ) hb_parni( 2 ) + '0'; + + if( usLen ) + { + HB_FHANDLE hFile = hb_fsOpen( ( BYTE * ) szPort, FO_WRITE ); + if( hFile != FS_ERROR ) + { + usRet = hb_fsWrite( hFile, ( BYTE * ) szStr, usLen ); + hb_fsClose( hFile ); + } + } + hb_retni( usRet ); + #endif } diff --git a/harbour/contrib/hbwin/hbwapi.h b/harbour/contrib/hbwin/hbwapi.h index 42511049f9..bc3af737d8 100644 --- a/harbour/contrib/hbwin/hbwapi.h +++ b/harbour/contrib/hbwin/hbwapi.h @@ -66,7 +66,7 @@ #define wapi_par_HIMAGELIST( n ) ( ( HIMAGELIST ) hb_parptr( n ) ) #define wapi_par_HFONT( n ) ( ( HFONT ) hb_parptr( n ) ) #define wapi_par_HINSTANCE( n ) ( ( HINSTANCE ) hb_parptr( n ) ) -#define wapi_par_COLORREF( n ) ( ( COLORREF ) hb_parnl( n ) ) +#define wapi_par_COLORREF( n ) ( ( COLORREF ) hb_parnint( n ) ) #define wapi_par_STRUCT( n ) ( hb_parc( n ) ) @@ -82,7 +82,7 @@ #define wapi_ret_L( b ) ( hb_retl( b ) ) #define wapi_ret_HANDLE( h ) ( hb_retptr( h ) ) -#define wapi_ret_HRESULT( hr ) ( hb_retnl( hr ) ) -#define wapi_ret_COLORREF( cr ) ( hb_retnl( cr ) ) +#define wapi_ret_HRESULT( hr ) ( hb_retnint( hr ) ) +#define wapi_ret_COLORREF( cr ) ( hb_retnint( cr ) ) #endif /* __HBWAPI_H */ diff --git a/harbour/source/rdd/usrrdd/rdds/arrayrdd.prg b/harbour/source/rdd/usrrdd/rdds/arrayrdd.prg index 45eff5b037..1d4f75c06a 100644 --- a/harbour/source/rdd/usrrdd/rdds/arrayrdd.prg +++ b/harbour/source/rdd/usrrdd/rdds/arrayrdd.prg @@ -645,7 +645,7 @@ STATIC FUNCTION AR_SKIPRAW( nWA, nRecords ) nResult := AR_GOTO( nWA, 1 ) aWAData[ WADATA_BOF ] := .T. // Hack for dbf1.c hack GOTOP - aWAData[ WADATA_FORCEBOF ] := .T. + // aWAData[ WADATA_FORCEBOF ] := .T. ELSE @@ -706,20 +706,22 @@ STATIC FUNCTION AR_DELETE( nWA ) ENDIF - IF aOpenInfo[ UR_OI_SHARED ] .AND. !( aScan( aWAData[ WADATA_LOCKS ], aWAData[ WADATA_RECNO ] ) > 0 ) + IF ! aWAData[ WADATA_EOF ] + IF aOpenInfo[ UR_OI_SHARED ] .AND. !( aScan( aWAData[ WADATA_LOCKS ], aWAData[ WADATA_RECNO ] ) > 0 ) - oError := ErrorNew() - oError:GenCode := EG_UNLOCKED - oError:SubCode := 1022 // EDBF_UNLOCKED - oError:Description := HB_LANGERRMSG( EG_UNLOCKED ) - oError:FileName := aOpenInfo[ UR_OI_NAME ] - UR_SUPER_ERROR( nWA, oError ) - RETURN HB_FAILURE + oError := ErrorNew() + oError:GenCode := EG_UNLOCKED + oError:SubCode := 1022 // EDBF_UNLOCKED + oError:Description := HB_LANGERRMSG( EG_UNLOCKED ) + oError:FileName := aOpenInfo[ UR_OI_NAME ] + UR_SUPER_ERROR( nWA, oError ) + RETURN HB_FAILURE - ENDIF + ENDIF - IF Len( aRecInfo ) > 0 .AND. aWAData[ WADATA_RECNO ] <= Len( aRecInfo ) - aRecInfo[ aWAData[ WADATA_RECNO ] ][ RECDATA_DELETED ] := .T. + IF Len( aRecInfo ) > 0 .AND. aWAData[ WADATA_RECNO ] <= Len( aRecInfo ) + aRecInfo[ aWAData[ WADATA_RECNO ] ][ RECDATA_DELETED ] := .T. + ENDIF ENDIF RETURN HB_SUCCESS @@ -733,7 +735,7 @@ STATIC FUNCTION AR_DELETED( nWA, lDeleted ) hb_ToOutDebug( "AR_DELETED(): nWA = %i, lDeleted = %s\n\r", nWA, lDeleted ) #endif - //lDeleted := .F. + // lDeleted := .F. IF Len( aRecInfo ) > 0 .AND. aWAData[ WADATA_RECNO ] <= Len( aRecInfo ) lDeleted := aRecInfo[ aWAData[ WADATA_RECNO ] ][ RECDATA_DELETED ] ELSE @@ -773,14 +775,42 @@ STATIC FUNCTION AR_APPEND( nWA, nRecords ) ENDIF aRecord := BlankRecord( aStruct ) - aAdd( aRecords, aRecord ) - aAdd( aRecInfo, AR_RECDATAINIT() ) + AAdd( aRecords, aRecord ) + AAdd( aRecInfo, AR_RECDATAINIT() ) AR_GOBOTTOM( nWA ) /* TODO: SHARED ACCESS */ RETURN HB_SUCCESS +STATIC FUNCTION AR_LOCK( nWA, aLock ) + HB_SYMBOL_UNUSED( nWA ) + HB_SYMBOL_UNUSED( aLock ) +/* + LOCAL aWAData := USRRDD_AREADATA( nWA ) + LOCAL nReg := iif( aLock[ UR_LI_RECORD ] == NIL, aWAData[ WADATA_RECNO ], aLock[ UR_LI_RECORD ] ) + LOCAL aRecInfo + + IF aWAData[ WADATA_EOF ] + aLock[ UR_LI_RESULT ] := .t. + ELSE + aRecInfo := aWAData[ WADATA_DATABASE, DATABASE_RECINFO, nReg ] + IF aWAData[ WADATA_OPENINFO, UR_OI_SHARED ] + IF aRecInfo[ RECDATA_LOCKED ] == nWA + aLock[ UR_LI_RESULT ] := .T. + ELSEIF aRecInfo[ RECDATA_LOCKED ] != 0 + aLock[ UR_LI_RESULT ] := .F. + ELSE + aRecInfo[ RECDATA_LOCKED ] := nWA + aLock[ UR_LI_RESULT ] := .T. + ENDIF + ELSE + aLock[ UR_LI_RESULT ] := .T. + ENDIF + ENDIF +*/ + RETURN SUCCESS + STATIC FUNCTION AR_RECID( nWA, nRecNo ) LOCAL aWAData := USRRDD_AREADATA( nWA ) LOCAL aDBFData := aWAData[ WADATA_DATABASE ] @@ -903,6 +933,9 @@ STATIC FUNCTION AR_ORDINFO( nWA, xMsg, xValue ) RETURN HB_SUCCESS +STATIC FUNCTION AR_DUMMY() + RETURN HB_SUCCESS + /* * This function have to exist in all RDD and then name have to be in * format: _GETFUNCTABLE @@ -913,6 +946,7 @@ FUNCTION ARRAYRDD_GETFUNCTABLE( pFuncCount, pFuncTable, pSuperTable, nRddID ) aMyFunc[ UR_INIT ] := ( @AR_INIT() ) aMyFunc[ UR_NEW ] := ( @AR_NEW() ) + aMyFunc[ UR_FLUSH ] := ( @AR_DUMMY() ) aMyFunc[ UR_CREATE ] := ( @AR_CREATE() ) aMyFunc[ UR_CREATEFIELDS ] := ( @AR_CREATEFIELDS() ) aMyFunc[ UR_OPEN ] := ( @AR_OPEN() ) @@ -929,6 +963,7 @@ FUNCTION ARRAYRDD_GETFUNCTABLE( pFuncCount, pFuncTable, pSuperTable, nRddID ) aMyFunc[ UR_GOTOP ] := ( @AR_GOTOP() ) aMyFunc[ UR_GOBOTTOM ] := ( @AR_GOBOTTOM() ) aMyFunc[ UR_RECID ] := ( @AR_RECID() ) + aMyFunc[ UR_LOCK ] := ( @AR_LOCK() ) aMyFunc[ UR_RECCOUNT ] := ( @AR_RECCOUNT() ) aMyFunc[ UR_GETVALUE ] := ( @AR_GETVALUE() ) aMyFunc[ UR_PUTVALUE ] := ( @AR_PUTVALUE() ) @@ -1104,6 +1139,18 @@ FUNCTION hb_FileArrayRdd( cFullName ) ENDIF RETURN ( nReturn == HB_SUCCESS ) +FUNCTION hb_setArryRdd( aArray ) + LOCAL aRecInfo + LOCAL nWA := Select() + LOCAL aDBFData := USRRDD_AREADATA( nWA )[ WADATA_DATABASE ] + aDBFData[ DATABASE_RECORDS ] := aArray + aDBFData[ DATABASE_RECINFO ] := Array( Len( aArray ) ) + FOR EACH aRecInfo IN aDBFData[ DATABASE_RECINFO ] + aRecInfo := AR_RECDATAINIT() + NEXT + AR_GOTOP( nWA ) + RETURN NIL + STATIC FUNCTION BlankRecord( aStruct ) LOCAL nLenStruct := Len( aStruct ) LOCAL aRecord := Array( nLenStruct ) @@ -1306,32 +1353,32 @@ STATIC FUNCTION DecEmptyValue( xVal ) LOCAL cType := ValType( xVal ) SWITCH cType - CASE 'C' // Char - CASE 'M' // Memo + CASE "C" // Char + CASE "M" // Memo xRet := "" EXIT - CASE 'D' // Date - xRet := CTOD('') + CASE "D" // Date + xRet := hb_STOD() EXIT - CASE 'L' // Logical + CASE "L" // Logical xRet := .F. EXIT - CASE 'N' // Number + CASE "N" // Number xRet := 0 EXIT - CASE 'B' // code block + CASE "B" // code block xRet := {|| NIL } EXIT - CASE 'A' // array + CASE "A" // array xRet := {} EXIT - CASE 'H' // hash + CASE "H" // hash xRet := {=>} EXIT - CASE 'U' // undefined + CASE "U" // undefined xRet := NIL EXIT - CASE 'O' // Object + CASE "O" // Object xRet := NIL // Or better another value ? EXIT OTHERWISE diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 7875fe1edf..e9d91175ff 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -349,7 +349,7 @@ STATIC FUNCTION hbmk_run( cCmd ) LOCAL h := hb_ProcessOpen( cCmd ) LOCAL result IF h != F_ERROR - result := hb_processValue( h ) + result := hb_ProcessValue( h ) hb_ProcessClose( h, .T. ) ELSE result := -1 @@ -5939,6 +5939,9 @@ STATIC PROCEDURE hbmk_OutErr( hbmk, cText ) RETURN +/* NOTE: Hacks to implement UTF-8 output. + It's not yet natively supported by core. [vszakats] */ + #undef OutStd #undef OutErr