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
This commit is contained in:
Viktor Szakats
2012-10-19 11:53:53 +00:00
parent 830d7ad1f6
commit 7f9c2d31de
4 changed files with 71 additions and 56 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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 "<var>" 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

View File

@@ -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