diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 16286aad56..5236a8c65e 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,13 @@ The license applies to all entries newer than 2009-04-28. */ +2011-01-10 20:27 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) + * contrib/hbformat/utils/hbformat.prg + * contrib/hbformat/hbformat.prg + * Formatting. + ! Using manifest constants. + * != -> !( == ) (none of them causing actual errors) + 2011-01-10 20:02 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/src/rtl/gtgui/gtgui.c + added basic support for redirecting ALERT() to MessageBox() in diff --git a/harbour/contrib/hbformat/hbformat.prg b/harbour/contrib/hbformat/hbformat.prg index dc969d6afd..881890487f 100644 --- a/harbour/contrib/hbformat/hbformat.prg +++ b/harbour/contrib/hbformat/hbformat.prg @@ -53,6 +53,7 @@ #include "hbclass.ch" #include "common.ch" +#include "fileio.ch" #define RF_STATE_FUNC 1 #define RF_STATE_VAR 2 @@ -64,7 +65,7 @@ CREATE CLASS HBFORMATCODE DATA cEol DATA nLineErr, nErr, cLineErr - DATA nEol INIT - 1 // Eol: -1 - no change, 0 - OS default, 1 - DOS, 2 - UNIX + DATA nEol INIT -1 // Eol: -1 - no change, 0 - OS default, 1 - DOS, 2 - UNIX DATA lFCaseLow INIT .F. // If true, convert file name to lower case DATA lNoTabs INIT .T. // If true, converts all tabs to spaces DATA lIndent INIT .T. // If true, indent code @@ -83,7 +84,7 @@ CREATE CLASS HBFORMATCODE DATA nCaseCmd INIT 1 // Case of commands ( -1 - no change, 1 - upper, 2 - lower, 3 - title ) DATA nCaseBoo INIT 1 // Case of boolean operators ( -1 - no change, 1 - upper, 2 - lower, 3 - title ) DATA nCaseFnc INIT 4 // Case of functions ( -1 - no change, 1 - upper, 2 - lower, 3 - title, 4 - as in pattern ) - DATA nCaseUnk INIT - 1 // Case of functions ( -1 - no change, 1 - upper, 2 - lower, 3 - title ) + DATA nCaseUnk INIT -1 // Case of functions ( -1 - no change, 1 - upper, 2 - lower, 3 - title ) DATA nCaseDrt INIT 2 // Case of directives ( -1 - no change, 1 - upper, 2 - lower, 3 - title ) DATA nSpaceDrt INIT 0 // Number of spaces after # in directives ( -1 - no change ) DATA nLineFnc INIT 1 // -1 - no change, 1 - insert empty line before a function ( procedure,class ) declaration, 2 - remove it @@ -226,7 +227,7 @@ METHOD Reformat( aFile ) CLASS HBFORMATCODE IF !Empty( cToken1 := SubStr( aFile[ i ], nPos + 2 ) ) aFile[ i ] := Left( aFile[ i ], nPos + 1 ) nLen := rf_AINS( aFile, i + 1, cToken1 ) - iDelta ++ + iDelta++ ENDIF ENDIF ELSE @@ -265,7 +266,7 @@ METHOD Reformat( aFile ) CLASS HBFORMATCODE IF !Empty( cToken1 := SubStr( cLineAll, nPos + 2 ) ) cLineAll := Left( cLineAll, nPos + 1 ) nLen := rf_AINS( aFile, i + 1, cToken1 ) - iDelta ++ + iDelta++ ENDIF ELSE lComment := .T. @@ -292,7 +293,9 @@ METHOD Reformat( aFile ) CLASS HBFORMATCODE cToken1 := Lower( hb_TokenGet( cLine, 1 ) ) nLenToken := Len( cToken1 ) nPos := 2 - DO WHILE nPos <= nLenToken .AND. SubStr( cToken1, nPos, 1 ) >= "_"; nPos ++ ; ENDDO + DO WHILE nPos <= nLenToken .AND. SubStr( cToken1, nPos, 1 ) >= "_" + nPos++ + ENDDO IF nPos <= nLenToken nLenToken := nPos - 1 cToken1 := Left( cToken1,nLenToken ) @@ -333,21 +336,21 @@ METHOD Reformat( aFile ) CLASS HBFORMATCODE nState := RF_STATE_CODE ENDIF IF ( nContrState := Ascan( ::aContr, ; - { |a|a[1] == cToken1 .AND. ( Empty( a[2] ) .OR. a[2] == cToken2 ) } ) ) != 0 - IF Len( aDeep ) < ++ nDeep + {| a | a[ 1 ] == cToken1 .AND. ( Empty( a[ 2 ] ) .OR. a[ 2 ] == cToken2 ) } ) ) != 0 + IF Len( aDeep ) < ++nDeep AAdd( aDeep, NIL ) ENDIF - aDeep[nDeep] := nContrState - ELSEIF Len( cToken1 ) < 4 .OR. ( nContrState := Ascan( ::aContr,{ |a|a[3] = cToken1 } ) ) == 0 - IF ( nPos := Ascan( ::aContr,{ |a|a[4] == cToken1 } ) ) > 0 .OR. ; + aDeep[ nDeep ] := nContrState + ELSEIF Len( cToken1 ) < 4 .OR. ( nContrState := Ascan( ::aContr, {| a | a[ 3 ] = cToken1 } ) ) == 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 }, ; - nPos + 1 ) ) != 0 .AND. aDeep[nDeep] != nPos + IF nPos != 0 .AND. nDeep > 0 .AND. aDeep[ nDeep ] != nPos + DO WHILE ( nPos := Ascan( ::aContr, {| a | a[ 4 ] == cToken1 }, ; + nPos + 1 ) ) != 0 .AND. aDeep[ nDeep ] != nPos ENDDO ENDIF - IF nDeep > 0 .AND. ( aDeep[nDeep] == nPos .OR. cToken1 == "end" ) - nDeep -- + IF nDeep > 0 .AND. ( aDeep[ nDeep ] == nPos .OR. cToken1 == "end" ) + nDeep-- ELSE ::nLineErr := i - iDelta ::nErr := 3 @@ -380,22 +383,22 @@ METHOD Reformat( aFile ) CLASS HBFORMATCODE ( nState == RF_STATE_CODE .AND. nStatePrev != nState .AND. ::nLineCode > 0 ) ) nPos := i - 1 IF ( nState == RF_STATE_RET .AND. ::nLineRet == 1 ) .OR. ; - ( nState == RF_STATE_FUNC .AND. ::nLineFnc == 1 ) .OR. ; - ( nState == RF_STATE_VAR .AND. ::nLineVar == 1 ) .OR. ; - ( nState == RF_STATE_CODE .AND. ::nLineCode == 1 ) - IF !Empty( aFile[nPos] ) + ( nState == RF_STATE_FUNC .AND. ::nLineFnc == 1 ) .OR. ; + ( nState == RF_STATE_VAR .AND. ::nLineVar == 1 ) .OR. ; + ( nState == RF_STATE_CODE .AND. ::nLineCode == 1 ) + IF !Empty( aFile[ nPos ] ) nLen := rf_AINS( aFile, nPos + 1, "" ) - iDelta ++ - i ++ + iDelta++ + i++ ELSE - nPos -- + nPos-- ENDIF ENDIF - DO WHILE nPos > 1 .AND. Empty( aFile[nPos] ) + DO WHILE nPos > 1 .AND. Empty( aFile[ nPos ] ) rf_ADEL( aFile, nPos ) - iDelta -- - i -- - nPos -- + iDelta-- + i-- + nPos-- ENDDO ENDIF ELSE @@ -407,8 +410,8 @@ METHOD Reformat( aFile ) CLASS HBFORMATCODE IF nPosSep == 0 .OR. nPosSep == Len( aFile[ i ] ) EXIT ENDIF - nPosSep ++ - nLineSegment ++ + nPosSep++ + nLineSegment++ ENDDO aFile[ i ] := cLineAll ELSE @@ -430,21 +433,16 @@ METHOD Reformat( aFile ) CLASS HBFORMATCODE RETURN .T. #define FL_STATE_DIGIT 1 - #define FL_STATE_ANY 2 - #define FL_STATE_OP 3 - #define FL_STATE_STRING 4 - #define FL_STATE_QUOTED 11 - #define FL_STATE_SQBR 12 METHOD FormatLine( cLine, lContinued ) CLASS HBFORMATCODE LOCAL i, nLen, c, nState := 0, cSymb, cToken, nPos := 1 - LOCAL lFirst, nBegin, nEnd, nB := 0, nA := 0, aBrackets[2] + LOCAL lFirst, nBegin, nEnd, nB := 0, nA := 0, aBrackets[ 2 ] LOCAL cOperators := "+-*/%#=~^<>$!" IF !::lCase .AND. !::lSpaces @@ -457,21 +455,23 @@ METHOD FormatLine( cLine, lContinued ) CLASS HBFORMATCODE nLen := Len( cLine ) DO WHILE SubStr( cLine, nPos, 1 ) == " " - nPos ++ + nPos++ ENDDO IF !lContinued .AND. Left( cLine, 1 ) == "#" - IF ::lSpaces .AND. ::nSpaceDrt != - 1 + IF ::lSpaces .AND. ::nSpaceDrt != -1 cLine := Left( cLine, nPos ) + Space( ::nSpaceDrt ) + LTrim( SubStr( cLine, nPos + 1 ) ) ENDIF nLen := Len( cLine ) - IF ::lCase .AND. ::nCaseDrt != - 1 + IF ::lCase .AND. ::nCaseDrt != -1 nPos++ DO WHILE SubStr( cLine, nPos, 1 ) == " " nPos++ ENDDO i := nPos - DO WHILE nPos <= nLen .AND. SubStr( cLine, nPos, 1 ) >= "A"; nPos ++ ; ENDDO + DO WHILE nPos <= nLen .AND. SubStr( cLine, nPos, 1 ) >= "A" + nPos++ + ENDDO IF SubStr( cLine, nPos, 1 ) >= "A" nPos++ ENDIF @@ -518,20 +518,22 @@ METHOD FormatLine( cLine, lContinued ) CLASS HBFORMATCODE EXIT ELSEIF c == " " nEnd := i - i ++ - DO WHILE i <= nLen .AND. SubStr( cLine, i, 1 ) == " "; i ++ ; ENDDO - i -- + i++ + DO WHILE i <= nLen .AND. SubStr( cLine, i, 1 ) == " " + i++ + ENDDO + i-- ELSEIF c == "(" .OR. c == "{" - aBrackets[ iif( c=="(", 1, 2 ) ] ++ + aBrackets[ iif( c == "(", 1, 2 ) ]++ IF nState == FL_STATE_STRING IF nEnd == nBegin nEnd := i ENDIF - IF ( !lFirst .OR. !::ConvertCmd( @cLine,nBegin,nEnd, .T. ) ) .AND. c == "(" + IF ( !lFirst .OR. !::ConvertCmd( @cLine, nBegin, nEnd, .T. ) ) .AND. c == "(" ::ConvertFnc( @cLine, nBegin, nEnd ) ENDIF ENDIF - IF ::lSpaces .AND. aBrackets[ iif( c=="(", 1, 2 ) ] <= ::nBr4Brac .AND. ; + IF ::lSpaces .AND. aBrackets[ iif( c == "(", 1, 2 ) ] <= ::nBr4Brac .AND. ; i < nLen .AND. !( SubStr( cLine, i + 1, 1 ) $ " )}" ) nA := i ENDIF @@ -572,7 +574,7 @@ METHOD FormatLine( cLine, lContinued ) CLASS HBFORMATCODE ELSEIF c $ cOperators .OR. ( c == ":" .AND. SubStr( cLine, i + 1, 1 ) == "=" ) nB := i IF SubStr( cLine, i + 1, 1 ) $ cOperators - i ++ + i++ ENDIF nA := i nState := FL_STATE_OP @@ -581,7 +583,7 @@ METHOD FormatLine( cLine, lContinued ) CLASS HBFORMATCODE i > 1 .AND. !( SubStr( cLine, i - 1, 1 ) $ " ({" ) nB := i ENDIF - aBrackets[ iif( c==")", 1, 2 ) ] -- + aBrackets[ iif( c == ")", 1, 2 ) ]-- nState := FL_STATE_ANY ELSE nState := FL_STATE_ANY @@ -591,13 +593,13 @@ METHOD FormatLine( cLine, lContinued ) CLASS HBFORMATCODE ENDIF IF nA != 0 .AND. ::lSpaces .AND. nA < nLen .AND. SubStr( cLine, nA + 1, 1 ) != " " cLine := Left( cLine, nA ) + " " + SubStr( cLine, nA + 1 ) - nLen ++ - i ++ + nLen++ + i++ ENDIF IF nB != 0 .AND. ::lSpaces .AND. nB > 1 .AND. SubStr( cLine, nB - 1, 1 ) != " " cLine := Left( cLine, nB - 1 ) + " " + SubStr( cLine, nB ) - nLen ++ - i ++ + nLen++ + i++ ENDIF nA := nB := 0 ELSEIF ( nState == FL_STATE_QUOTED .AND. c == cSymb ) .OR. ; @@ -605,7 +607,7 @@ METHOD FormatLine( cLine, lContinued ) CLASS HBFORMATCODE nState := FL_STATE_ANY ENDIF IF i == nLen .AND. lFirst .AND. nState == FL_STATE_STRING - i ++ + i++ ::ConvertCmd( @cLine, nBegin, i ) ENDIF NEXT @@ -648,7 +650,7 @@ METHOD ConvertFnc( cLine, nBegin, nEnd ) CLASS HBFORMATCODE IF ( nPos := hb_AtI( "," + cToken + ",", ::cFunctions ) ) != 0 IF ::nCaseFnc > 1 - nPos ++ + nPos++ cToken := iif( ::nCaseFnc == 2, Lower( cToken ), iif( ::nCaseFnc == 3, ; Left( cToken, 1 ) + Lower( SubStr( cToken, 2 ) ), ; SubStr( ::cFunctions, nPos, Len( cToken ) ) ) ) @@ -710,7 +712,7 @@ METHOD SetOption( cLine, i, aIni ) CLASS HBFORMATCODE ELSE IF Right( cToken2, 1 ) == ";" .AND. aIni != NIL xRes := RTrim( Left( cToken2, Len( cToken2 ) - 1 ) ) - DO WHILE ++ i < Len( aIni ) + DO WHILE ++i < Len( aIni ) IF Right( aIni[ i ], 1 ) == ";" xRes += AllTrim( Left( aIni[ i ], Len( aIni ) - 1 ) ) ELSE @@ -782,7 +784,7 @@ METHOD Array2File( cFileName, aFile ) CLASS HBFORMATCODE cName := iif( ( i := Rat(".",cFileName ) ) == 0, cFileName, SubStr( cFileName, 1, i - 1 ) ) IF Empty( ::cExtSave ) cBakName := cName + iif( Left( ::cExtBack, 1 ) != ".", ".", "" ) + ::cExtBack - IF FRename( cFileName, cBakName ) == - 1 + IF FRename( cFileName, cBakName ) == F_ERROR RETURN .F. ENDIF ENDIF diff --git a/harbour/contrib/hbformat/utils/hbformat.prg b/harbour/contrib/hbformat/utils/hbformat.prg index a4229a8225..488a755fdd 100644 --- a/harbour/contrib/hbformat/utils/hbformat.prg +++ b/harbour/contrib/hbformat/utils/hbformat.prg @@ -51,6 +51,7 @@ */ #include "common.ch" +#include "directry.ch" ANNOUNCE HB_GTSYS REQUEST HB_GT_CGI_DEFAULT @@ -68,10 +69,10 @@ PROCEDURE Main( ... ) ENDIF FOR i := 1 TO Len( aParams ) - IF Left( aParams[i], 1 ) $ "-/" - IF SubStr( aParams[i], 2 ) == "r" + IF Left( aParams[ i ], 1 ) $ "-/" + IF SubStr( aParams[ i ], 2 ) == "r" lRecursive := .T. - aParams[i] := "#" + aParams[ i ] := "#" EXIT ENDIF ENDIF @@ -79,22 +80,22 @@ PROCEDURE Main( ... ) oRef := hbFormatCode():New( aParams, hb_FNameMerge( hb_dirBase(), "hbformat.ini" ) ) IF oRef:nErr > 0 - OutStd( "Initialization error", oRef:nErr, Iif( oRef:nLineErr == 0, "in parameter", "on line " + hb_ntos( oRef:nLineErr ) ), ":", oRef:cLineErr, hb_eol() ) + OutStd( "Initialization error", oRef:nErr, iif( oRef:nLineErr == 0, "in parameter", "on line " + hb_ntos( oRef:nLineErr ) ), ":", oRef:cLineErr, hb_eol() ) RETURN ENDIF - oRef:bCallBack := { |a, i|FCallBack( a, i ) } + oRef:bCallBack := {| a, i | FCallBack( a, i ) } IF "*" $ cFileName - IF ( i := Rat( ".", cFileName ) ) == 0 .OR. Substr( cFileName,i+1,1 ) < "A" + IF ( i := RAt( ".", cFileName ) ) == 0 .OR. Substr( cFileName, i + 1, 1 ) < "A" OutErr( "Wrong mask" + hb_eol() ) ELSE - cInitDir := Iif( ( i := Rat( "\", cFileName ) ) == 0, ; - Iif( ( i := Rat( "/", cFileName ) ) == 0, ; + cInitDir := iif( ( i := RAt( "\", cFileName ) ) == 0, ; + iif( ( i := RAt( "/", cFileName ) ) == 0, ; "." + Set( _SET_DIRSEPARATOR ), Left( cFileName, i ) ), ; Left( cFileName, i ) ) - cFileName := Iif( i == 0, cFileName, SubStr( cFileName, i + 1 ) ) - DirEval( cInitDir, cFileName, lRecursive, { |name|Reformat( oRef,name ) } ) + cFileName := iif( i == 0, cFileName, SubStr( cFileName, i + 1 ) ) + DirEval( cInitDir, cFileName, lRecursive, {| name | Reformat( oRef, name ) } ) ENDIF ELSE Reformat( oRef, cFileName ) @@ -154,7 +155,7 @@ STATIC FUNCTION CmpMsk( strcmp, mask ) ENDDO ENDIF ELSE - IF c != SubStr( strcmp, nPos1, 1 ) + IF !( c == SubStr( strcmp, nPos1, 1 ) ) RETURN .F. ENDIF nPos1 ++ @@ -167,21 +168,22 @@ STATIC PROCEDURE DirEval( cInitDir, cMask, lRecur, bCode ) LOCAL i, nLen, aFiles - IF Right( cInitDir, 1 ) != Set( _SET_DIRSEPARATOR ) + IF !( Right( cInitDir, 1 ) == Set( _SET_DIRSEPARATOR ) ) cInitDir += Set( _SET_DIRSEPARATOR ) ENDIF - cMask := Iif( cMask == NIL, hb_osFileMask(), Upper( cMask ) ) + cMask := iif( cMask == NIL, hb_osFileMask(), Upper( cMask ) ) aFiles := Directory( cInitDir + hb_osFileMask(), "HSD" ) nLen := Len( aFiles ) FOR i := 1 TO nLen - IF "D" $ aFiles[ i,5 ] - IF "." != aFiles[ i,1 ] .AND. ".." != aFiles[ i,1 ] .AND. lRecur - DirEval( cInitDir + aFiles[ i,1 ], cMask, lRecur, bCode ) + IF "D" $ aFiles[ i ][ F_ATTR ] + IF !( "." == aFiles[ i ][ F_NAME ] ) .AND. ; + !( ".." == aFiles[ i ][ F_NAME ] ) .AND. lRecur + DirEval( cInitDir + aFiles[ i ][ F_NAME ], cMask, lRecur, bCode ) ENDIF - ELSEIF CmpMsk( Upper( aFiles[ i,1 ] ), cMask ) + ELSEIF CmpMsk( Upper( aFiles[ i ][ F_NAME ] ), cMask ) IF bCode != NIL - Eval( bCode, cInitDir + aFiles[ i,1 ] ) + Eval( bCode, cInitDir + aFiles[ i ][ F_NAME ] ) ENDIF ENDIF NEXT @@ -194,7 +196,7 @@ STATIC PROCEDURE About() "Copyright (c) 2009-2011, Alexander S.Kresin" + hb_eol() +; "http://harbour-project.org/" + hb_eol() +; hb_eol() +; - "Syntax: hbformat [options] [@config] file[s]" + hb_eol() +; + "Syntax: hbformat [options] [@config] " + hb_eol() +; hb_eol() ) RETURN