From 7f9c2d31dea456925f154479ebd3c191721fae97 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Fri, 19 Oct 2012 11:53:53 +0000 Subject: [PATCH] 2012-10-19 13:51 UTC+0200 Viktor Szakats (harbour syenar.net) * contrib/hbct/getsecrt.prg ! GETSECRET() fixed to not access protected TGETLIST variables when SET KEY is pressed. * hbformatted * contrib/hbformat/hbfmtcls.prg * applied formatting changes from Maurizio's patch (it makes it easier to see what changed) * contrib/hbnf/prtscr.c % optimized --- harbour/ChangeLog | 13 ++++++ harbour/contrib/hbct/getsecrt.prg | 62 +++++++++++++++------------ harbour/contrib/hbformat/hbfmtcls.prg | 40 +++++++++-------- harbour/contrib/hbnf/prtscr.c | 12 +----- 4 files changed, 71 insertions(+), 56 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 32f677a6da..8890367809 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,19 @@ The license applies to all entries newer than 2009-04-28. */ +2012-10-19 13:51 UTC+0200 Viktor Szakats (harbour syenar.net) + * contrib/hbct/getsecrt.prg + ! GETSECRET() fixed to not access protected TGETLIST + variables when SET KEY is pressed. + * hbformatted + + * contrib/hbformat/hbfmtcls.prg + * applied formatting changes from Maurizio's patch + (it makes it easier to see what changed) + + * contrib/hbnf/prtscr.c + % optimized + 2012-10-19 01:06 UTC+0200 Viktor Szakats (harbour syenar.net) * contrib/xhb/xhbhash.c * use HB_FUNC_TRANSLATE() on two extra functions which diff --git a/harbour/contrib/hbct/getsecrt.prg b/harbour/contrib/hbct/getsecrt.prg index 8001c5c07c..9cdbf452b4 100644 --- a/harbour/contrib/hbct/getsecrt.prg +++ b/harbour/contrib/hbct/getsecrt.prg @@ -56,58 +56,64 @@ #include "getexit.ch" FUNCTION GETSECRET( cVar, nRow, nCol, lSay, xPrompt ) - LOCAL nCursorRow := ROW() - LOCAL nCursorCol := COL() + + LOCAL nCursorRow := Row() + LOCAL nCursorCol := Col() LOCAL GetList := {} LOCAL _cGetSecret := cVar LOCAL lHide := .T. IF ! HB_ISNUMERIC( nRow ) - nRow := ROW() + nRow := Row() ENDIF IF ! HB_ISNUMERIC( nCol ) - nCol := COL() + nCol := Col() ENDIF IF ! HB_ISLOGICAL( lSay ) lSay := .F. ENDIF - SETPOS( nRow, nCol ) + SetPos( nRow, nCol ) IF xPrompt != Nil - DEVOUT( xPrompt ) - nRow := ROW() - nCol := COL() + 1 + DevOut( xPrompt ) + nRow := Row() + nCol := Col() + 1 ENDIF - SETPOS( nRow, nCol ) - AADD( GetList, _GET_( _CGETSECRET, "_CGETSECRET",,, ) ) - ATAIL( GetList ):reader := {| oGet, oGetList | _SECRET( @_cGetSecret, @lHide, ; - oGet, oGetList ) } - ATAIL( GetList ):block := {| xNew | _VALUE( @_cGetSecret, lHide, xNew ) } + SetPos( nRow, nCol ) + AAdd( GetList, _GET_( _CGETSECRET, "_CGETSECRET",,, ) ) + ATail( GetList ):reader := {| oGet, oGetList | _SECRET( @_cGetSecret, @lHide, ; + oGet, oGetList ) } + ATail( GetList ):block := {| xNew | _VALUE( @_cGetSecret, lHide, xNew ) } READ IF lSay - SETPOS( nRow, nCol ) - DEVOUT( _HIDE( _cGetSecret ) ) + SetPos( nRow, nCol ) + DevOut( _HIDE( _cGetSecret ) ) ENDIF - SETPOS( nCursorRow, nCursorCol ) + SetPos( nCursorRow, nCursorCol ) RETURN _cGetSecret STATIC FUNCTION _HIDE( cVar ) - /* RETURN RANGEREPL( ASC( " " ) + 1, 255, cVar, "*" ) */ - RETURN PADR( REPL( "*", LEN( RTRIM( cVar ) ) ), LEN( cVar ) ) + +/* RETURN RangeRepl( Asc( " " ) + 1, 255, cVar, "*" ) */ + + RETURN PadR( Replicate( "*", Len( RTrim( cVar ) ) ), Len( cVar ) ) STATIC FUNCTION _VALUE( cVar, lHide, xNew ) + IF lHide RETURN _HIDE( cVar ) ELSEIF xNew != NIL - cVar := PADR( xNew, LEN( cVar ) ) + cVar := PadR( xNew, Len( cVar ) ) ENDIF + RETURN cVar STATIC PROCEDURE _SECRET( _cGetSecret, lHide, oGet, oGetList ) + LOCAL nKey, nLen, bKeyBlock LOCAL cKey @@ -117,7 +123,7 @@ STATIC PROCEDURE _SECRET( _cGetSecret, lHide, oGet, oGetList ) IF GetPreValidate( oGet ) - nLen := LEN( _cGetSecret ) + nLen := Len( _cGetSecret ) oGet:SetFocus() DO WHILE oGet:exitState == GE_NOEXIT @@ -126,19 +132,21 @@ STATIC PROCEDURE _SECRET( _cGetSecret, lHide, oGet, oGetList ) ENDIF DO WHILE oGet:exitState == GE_NOEXIT - nKey := INKEY( 0 ) - IF ( bKeyBlock := SETKEY( nKey ) ) != NIL + nKey := Inkey( 0 ) + IF ( bKeyBlock := SetKey( nKey ) ) != NIL lHide := .F. - EVAL( bKeyBlock, oGetList:cReadProcName, ; - oGetList:nReadProcLine, oGetList:ReadVar() ) + Eval( bKeyBlock, ; + ReadStats( 10 /* SCREADPROCNAME */ ), ; + ReadStats( 11 /* SNREADPROCLINE */ ), ; + oGetList:ReadVar() ) lHide := .T. LOOP ELSEIF ! ( cKey := hb_keyChar( nKey ) ) == "" IF SET( _SET_INSERT ) - _cGetSecret := STUFF( LEFT( _cGetSecret, nLen - 1), ; - oGet:pos, 0, cKey ) + _cGetSecret := Stuff( Left( _cGetSecret, nLen - 1 ), ; + oGet:pos, 0, cKey ) ELSE - _cGetSecret := STUFF( _cGetSecret, oGet:pos, 1, cKey ) + _cGetSecret := Stuff( _cGetSecret, oGet:pos, 1, cKey ) ENDIF nKey := hb_keyCode( "*" ) ENDIF diff --git a/harbour/contrib/hbformat/hbfmtcls.prg b/harbour/contrib/hbformat/hbfmtcls.prg index 62708c2251..4b916e3b76 100644 --- a/harbour/contrib/hbformat/hbfmtcls.prg +++ b/harbour/contrib/hbformat/hbfmtcls.prg @@ -68,6 +68,7 @@ // 4. INIT PROCEDURE/EXIT PROCEDURE are not recognized as PROCEDURE statement // 5. ".T.," / ".F.," gets wrongly corrected to ".T. ," / ".F. ," // 6. "end class" is converted to "end CLASS" instead of "END CLASS" +// 7. in PP commands "" should not be converted to "< var >" CREATE CLASS HBFORMATCODE @@ -201,14 +202,15 @@ METHOD New( aParams, cIniName ) CLASS HBFORMATCODE RETURN Self STATIC FUNCTION __harbour_hbx() - #pragma __streaminclude "harbour.hbx" | RETURN %s + +#pragma __streaminclude "harbour.hbx" | RETURN %s METHOD Reformat( aFile ) CLASS HBFORMATCODE LOCAL i, iDelta := 0, nLen := Len( aFile ), cToken1, cToken2, nLenToken, nPos LOCAL nPosSep, cLine, cLineAll, nLineSegment LOCAL nContrState, nIndent, nDeep := 0, aDeep := {} - LOCAL lPragmaDump := .F. , lClass := .F. , lComment := .F. , nPosComment, lContinue := .F. + LOCAL lPragmaDump := .F., lClass := .F., lComment := .F., nPosComment, lContinue := .F. LOCAL nStatePrev, nState := 0 ::nErr := 0 @@ -245,11 +247,11 @@ METHOD Reformat( aFile ) CLASS HBFORMATCODE ELSE cLineAll := LTrim( aFile[ i ] ) IF Left( cLineAll, 1 ) == "#" - cToken1 := Lower( hb_TokenGet( cLineAll, 1 ) ) - cToken2 := Lower( hb_TokenGet( cLineAll, 2 ) ) + cToken1 := Lower( hb_tokenGet( cLineAll, 1 ) ) + cToken2 := Lower( hb_tokenGet( cLineAll, 2 ) ) IF Len( cToken1 ) == 1 cToken1 += cToken2 - cToken2 := Lower( hb_TokenGet( cLineAll, 3 ) ) + cToken2 := Lower( hb_tokenGet( cLineAll, 3 ) ) ENDIF IF cToken1 == "#pragma" IF cToken2 == "begindump" @@ -302,7 +304,7 @@ METHOD Reformat( aFile ) CLASS HBFORMATCODE nContrState := 0 nStatePrev := nState - cToken1 := Lower( hb_TokenGet( cLine, 1 ) ) + cToken1 := Lower( hb_tokenGet( cLine, 1 ) ) nLenToken := Len( cToken1 ) nPos := 2 DO WHILE nPos <= nLenToken .AND. SubStr( cToken1, nPos, 1 ) >= "_" @@ -310,9 +312,9 @@ METHOD Reformat( aFile ) CLASS HBFORMATCODE ENDDO IF nPos <= nLenToken nLenToken := nPos - 1 - cToken1 := Left( cToken1,nLenToken ) + cToken1 := Left( cToken1, nLenToken ) ENDIF - cToken2 := Lower( hb_TokenGet( cLine, 2 ) ) + cToken2 := Lower( hb_tokenGet( cLine, 2 ) ) IF Left( cToken1, 1 ) == "#" ELSEIF nLenToken >= 4 .AND. ( ( LEFTEQUAL( "static", cToken1 ) .AND. ; ( LEFTEQUAL( "function", cToken2 ) .OR. LEFTEQUAL( "procedure", cToken2 ) ) ) .OR. ; @@ -322,7 +324,7 @@ METHOD Reformat( aFile ) CLASS HBFORMATCODE ( "create" == cToken1 .AND. "class" == cToken2 .AND. ! lClass ) ) IF nDeep == 0 nState := RF_STATE_FUNC - IF "class" == cToken1 .or. ( "create" == cToken1 .AND. "class" == cToken2 ) + IF "class" == cToken1 .OR. ( "create" == cToken1 .AND. "class" == cToken2 ) lClass := .T. ENDIF ELSE @@ -358,8 +360,8 @@ METHOD Reformat( aFile ) CLASS HBFORMATCODE AAdd( aDeep, NIL ) ENDIF aDeep[ nDeep ] := nContrState - ELSEIF Len( cToken1 ) < 4 .OR. ( nContrState := Ascan( ::aContr, {| a | "|" + cToken1 + "|" $ a[ 3 ] } ) ) == 0 - IF ( nPos := Ascan( ::aContr, {| a | a[ 4 ] == cToken1 } ) ) > 0 .OR. ; + ELSEIF Len( cToken1 ) < 4 .OR. ( nContrState := AScan( ::aContr, {| a | "|" + cToken1 + "|" $ a[ 3 ] } ) ) == 0 + IF ( nPos := AScan( ::aContr, {| a | a[ 4 ] == cToken1 } ) ) > 0 .OR. ; cToken1 == "end" IF nPos != 0 .AND. nDeep > 0 .AND. aDeep[ nDeep ] != nPos DO WHILE ( nPos := Ascan( ::aContr, {| a | a[ 4 ] == cToken1 }, ; @@ -524,7 +526,7 @@ METHOD FormatLine( cLine, lContinued ) CLASS HBFORMATCODE ENDIF ::ConvertCmd( @cLine, nBegin, nEnd ) ENDIF - cSymb := c + cSymb := c nState := FL_STATE_QUOTED ELSEIF c == "[" nState := FL_STATE_SQBR @@ -579,7 +581,7 @@ METHOD FormatLine( cLine, lContinued ) CLASS HBFORMATCODE ENDIF nState := FL_STATE_ANY ELSEIF c == "," - IF aBrackets[1] <= ::nBr4Comma .AND. aBrackets[2] <= ::nBr4Comma + IF aBrackets[ 1 ] <= ::nBr4Comma .AND. aBrackets[ 2 ] <= ::nBr4Comma nA := i ENDIF nState := FL_STATE_ANY @@ -643,7 +645,7 @@ METHOD ConvertCmd( cLine, nBegin, nEnd, lFirstOnly ) CLASS HBFORMATCODE IF ::lCase hb_default( @lFirstOnly, .F. ) - IF ( ( nPos := At( "," + cToken, ::cCommands ) ) != 0 .AND. ( Len(cToken ) >= 4 ; + IF ( ( nPos := At( "," + cToken, ::cCommands ) ) != 0 .AND. ( Len( cToken ) >= 4 ; .OR. SubStr( ::cCommands, nPos + Len( cToken ) + 1, 1 ) == "," ) ) ; .OR. ; ( ! lFirstOnly .AND. ; @@ -721,7 +723,7 @@ METHOD SetOption( cLine, i, aIni ) CLASS HBFORMATCODE IF ( nPos := At( "=", cLine ) ) != 0 cToken1 := Upper( RTrim( Left( cLine, nPos - 1 ) ) ) cToken2 := LTrim( SubStr( cLine, nPos + 1 ) ) - IF __ObjHasMsg( Self, cToken1 ) + IF __objHasMsg( Self, cToken1 ) IF Empty( cToken2 ) xRes := "" ELSEIF IsDigit( cToken2 ) .OR. ( Left( cToken2, 1 ) == "-" .AND. IsDigit( LTrim( SubStr( cToken2, 2 ) ) ) ) @@ -820,9 +822,9 @@ METHOD Array2File( cFileName, aFile ) CLASS HBFORMATCODE ENDIF IF ::lFCaseLow cPath := iif( ( i := RAt( "\", cFileName ) ) == 0, ; - iif( ( i := RAt( "/", cFileName ) ) == 0, "", Left( cFileName, i ) ), ; - Left( cFileName, i ) ) - cFileName := cPath + Lower( iif( i == 0, cFileName, Substr( cFileName, i + 1 ) ) ) + iif( ( i := RAt( "/", cFileName ) ) == 0, "", Left( cFileName, i ) ), ; + Left( cFileName, i ) ) + cFileName := cPath + Lower( iif( i == 0, cFileName, SubStr( cFileName, i + 1 ) ) ) ENDIF handle := FCreate( cFileName ) @@ -868,7 +870,7 @@ STATIC FUNCTION FindNotQuoted( subs, stroka, nPos2 ) c := SubStr( stroka, i, 1 ) IF nState == 0 IF c == '"' .OR. c == "'" - cSymb := c + cSymb := c nState := 1 ELSEIF c == "[" nState := 2 diff --git a/harbour/contrib/hbnf/prtscr.c b/harbour/contrib/hbnf/prtscr.c index 65babe14e2..6170743937 100644 --- a/harbour/contrib/hbnf/prtscr.c +++ b/harbour/contrib/hbnf/prtscr.c @@ -35,17 +35,9 @@ HB_FUNC( FT_PRTSCR ) #define pbyte *( ( char * ) 0x00400100 ) if( HB_ISLOG( 1 ) ) - { - if( hb_parl( 1 ) ) - pbyte = 0; - else - pbyte = 1; - } + pbyte = hb_parl( 1 ) ? 0 : 1; - if( pbyte == 1 ) - hb_retl( HB_FALSE ); - else - hb_retl( HB_TRUE ); + hb_retl( pbyte != 1 ); #else hb_retl( HB_FALSE ); #endif