diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 497fcc57d5..e57756d481 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,37 @@ The license applies to all entries newer than 2009-04-28. */ +2012-10-09 11:12 UTC+0200 Viktor Szakats (harbour syenar.net) + * contrib/gtwvg/class.prg + * contrib/gtwvg/syswnd.prg + * contrib/hbgd/gdchart.prg + + using HB_IS*() for strict type checking instead of 'IF x == NIL' + check recently converted from DEFAULT TO commands. + This is INCOMPATIBLE for cases where wrong type was passed + for these parameters. + + * contrib/xhb/cstruct.prg + * contrib/xhb/tcgi.prg + * src/debug/dbghelp.prg + * src/debug/dbgtmenu.prg + * src/debug/dbgtmitm.prg + * src/debug/debugger.prg + * contrib/hbhttpd/core.prg + * contrib/hbpgsql/tests/cache.prg + * contrib/hbpgsql/tpostgre.prg + * contrib/hbnf/metaph.prg + * extras/gtwvw/tests/ebtest7.prg + * extras/guestbk/testcgi.prg + * extras/gfspell/spell.prg + % deleted 3rd parameter from expressions 'StrTran( x, y, "" )' + Empty string is the default. + + * contrib/xhb/cstruct.prg + ! fixed formatting and indentation using hbformat and manually + + * utils/hbmk2/hbmk2.prg + % minor opt by replacing 'iif( ! Empty(' with 'iif( Empty(' + 2012-10-08 23:27 UTC+0200 Viktor Szakats (harbour syenar.net) * extras/hbvpdf/hbvpdf.ch * extras/hbvpdf/hbvpdf.prg diff --git a/harbour/contrib/gtwvg/class.prg b/harbour/contrib/gtwvg/class.prg index 760e086c35..a0bc748d7f 100644 --- a/harbour/contrib/gtwvg/class.prg +++ b/harbour/contrib/gtwvg/class.prg @@ -855,7 +855,7 @@ ENDCLASS METHOD WvtObject:New( oParent, nType, nID, nTop, nLeft, nBottom, nRight ) - IF nID == NIL + IF ! HB_ISNUMERIC( nID ) nID := ++::nObjID ENDIF diff --git a/harbour/contrib/gtwvg/syswnd.prg b/harbour/contrib/gtwvg/syswnd.prg index 138972b3e3..3d53bb2931 100644 --- a/harbour/contrib/gtwvg/syswnd.prg +++ b/harbour/contrib/gtwvg/syswnd.prg @@ -459,7 +459,7 @@ METHOD GetWvgFont( aFont ) CLASS WvgFontDialog LOCAL oWvgFont - IF aFont == NIL + IF ! HB_ISARRAY( aFont ) aFont := Wvg_ChooseFont_GetLogFont( ::hWnd ) ENDIF diff --git a/harbour/contrib/hbgd/gdchart.prg b/harbour/contrib/hbgd/gdchart.prg index eb1ebb0b77..740d790058 100644 --- a/harbour/contrib/hbgd/gdchart.prg +++ b/harbour/contrib/hbgd/gdchart.prg @@ -334,13 +334,13 @@ METHOD VerticalBarChart() CLASS GDChart nTot += hElement[ "VALUE" ] NEXT - IF nLeftLabelSpace == NIL + IF ! HB_ISNUMERIC( nLeftLabelSpace ) nLeftLabelSpace := nBorder + Len( LTrim( Transform( nMax, cAxisPict ) ) ) * ::GetFontWidth() + nBorder ENDIF - IF nRightLabelSpace == NIL + IF ! HB_ISNUMERIC( nRightLabelSpace ) nRightLabelSpace := nLeftLabelSpace //nBorder + Len( hb_ntos( nMax ) ) * ::GetFontWidth() + nBorder ENDIF - IF nBottomLabelSpace == NIL + IF ! HB_ISNUMERIC( nBottomLabelSpace ) nBottomLabelSpace := nBorder + nMaxLabel * ::GetFontWidth() + nBorder ENDIF @@ -524,16 +524,16 @@ METHOD HorizontalBarChart() CLASS GDChart nTot += hElement[ "VALUE" ] NEXT - IF nLeftLabelSpace == NIL + IF ! HB_ISNUMERIC( nLeftLabelSpace ) nLeftLabelSpace := nBorder + nMaxLabel * ::GetFontWidth() + nBorder ENDIF - IF nRightLabelSpace == NIL + IF ! HB_ISNUMERIC( nRightLabelSpace ) nRightLabelSpace := nBorder + ( Len( LTrim( Transform( nMax, cAxisPict ) ) ) * ::GetFontWidth() / 2 ) ENDIF - IF nTopLabelSpace == NIL + IF ! HB_ISNUMERIC( nTopLabelSpace ) nTopLabelSpace := nBorder + ::GetFontHeight() + nBorder ENDIF - IF nBottomLabelSpace == NIL + IF ! HB_ISNUMERIC( nBottomLabelSpace ) nBottomLabelSpace := nTopLabelSpace // nBorder + ::GetFontHeight() + nBorder ENDIF @@ -731,13 +731,13 @@ METHOD LineChart() CLASS GDChart nMinLabel := Max( nMinLabel, Len( iif( cLabel != NIL, cLabel, "" ) ) ) NEXT - IF nLeftLabelSpace == NIL + IF ! HB_ISNUMERIC( nLeftLabelSpace ) nLeftLabelSpace := nBorder + Max( Len( LTrim( Transform( nMax, cAxisPict ) ) ), Len( LTrim( Transform( nMin, cAxisPict ) ) ) ) * ::GetFontWidth() + nBorder ENDIF - IF nRightLabelSpace == NIL + IF ! HB_ISNUMERIC( nRightLabelSpace ) nRightLabelSpace := nLeftLabelSpace ENDIF - IF nBottomLabelSpace == NIL + IF ! HB_ISNUMERIC( nBottomLabelSpace ) nBottomLabelSpace := nBorder + nMaxLabel * ::GetFontWidth() + nBorder ENDIF diff --git a/harbour/contrib/hbhttpd/core.prg b/harbour/contrib/hbhttpd/core.prg index f3ba02811a..f891f899a2 100644 --- a/harbour/contrib/hbhttpd/core.prg +++ b/harbour/contrib/hbhttpd/core.prg @@ -943,7 +943,7 @@ STATIC FUNCTION HttpDateUnformat( cDate, tDate ) nMonth := AScan( { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", ; "Oct", "Nov", "Dec" }, SubStr( cDate, 9, 3 ) ) IF nMonth > 0 - tI := HB_STOT( SubStr( cDate, 13, 4 ) + PadL( nMonth, 2, "0" ) + SubStr( cDate, 6, 2 ) + StrTran( SubStr(cDate, 18, 8 ), ":", "" ) ) + tI := HB_STOT( SubStr( cDate, 13, 4 ) + PadL( nMonth, 2, "0" ) + SubStr( cDate, 6, 2 ) + StrTran( SubStr( cDate, 18, 8 ), ":" ) ) IF ! Empty( tI ) tDate := tI + HB_UTCOFFSET() / ( 3600 * 24 ) RETURN .T. diff --git a/harbour/contrib/hbnf/metaph.prg b/harbour/contrib/hbnf/metaph.prg index be769f1710..4f479dce0f 100644 --- a/harbour/contrib/hbnf/metaph.prg +++ b/harbour/contrib/hbnf/metaph.prg @@ -129,7 +129,7 @@ FUNCTION FT_METAPH( cName, nSize ) // Remove inner spaces (1st and last byte are spaces) IF " " $ SubStr( cMeta, 2, Len( cMeta ) - 2 ) - cMeta := " " + StrTran( cMeta, " " , "" ) + " " + cMeta := " " + StrTran( cMeta, " " ) + " " ENDIF // Double consonants sound much the same as singles @@ -220,7 +220,7 @@ FUNCTION FT_METAPH( cName, nSize ) IF "C" $ cMeta ; cMeta := StrTran( cMeta, "C" , "K" ) ; ENDIF // Remove vowels - cMeta := StrTran( cMeta, "v", "" ) + cMeta := StrTran( cMeta, "v" ) RETURN PadR( AllTrim( cMeta ), nSize ) diff --git a/harbour/contrib/hbpgsql/tests/cache.prg b/harbour/contrib/hbpgsql/tests/cache.prg index 2fb64b0da2..4f98e57684 100644 --- a/harbour/contrib/hbpgsql/tests/cache.prg +++ b/harbour/contrib/hbpgsql/tests/cache.prg @@ -536,10 +536,10 @@ FUNCTION TempFile( cPath, cExt ) hb_default( @cPath, hb_DirTemp() ) hb_default( @cExt, "tmp" ) - cString := cPath + StrZero( Int( hb_random( Val( StrTran( Time(), ":", "" ) ) ) ), 8 ) + "." + cExt + cString := cPath + StrZero( Int( hb_random( Val( StrTran( Time(), ":" ) ) ) ), 8 ) + "." + cExt DO WHILE hb_FileExists( cString ) - cString := cPath + StrZero( Int( hb_random( Val( StrTran( Time(), ":", "" ) ) ) ), 8 ) + "." + cExt + cString := cPath + StrZero( Int( hb_random( Val( StrTran( Time(), ":" ) ) ) ), 8 ) + "." + cExt ENDDO RETURN cString diff --git a/harbour/contrib/hbpgsql/tpostgre.prg b/harbour/contrib/hbpgsql/tpostgre.prg index a557afd81d..939199ec15 100644 --- a/harbour/contrib/hbpgsql/tpostgre.prg +++ b/harbour/contrib/hbpgsql/tpostgre.prg @@ -1023,7 +1023,7 @@ METHOD FieldGet( nField, nRow ) CLASS TPQquery CASE "D" IF result != NIL - result := hb_SToD( StrTran( result, "-", "" ) ) + result := hb_SToD( StrTran( result, "-" ) ) ELSE result := hb_SToD() ENDIF diff --git a/harbour/contrib/xhb/cstruct.prg b/harbour/contrib/xhb/cstruct.prg index f21127caaf..7b26c5ed77 100644 --- a/harbour/contrib/xhb/cstruct.prg +++ b/harbour/contrib/xhb/cstruct.prg @@ -64,19 +64,23 @@ STATIC s_aArrayClasses := {} STATIC s_aSynonyms := {} STATIC s_lInitLongs := .T. -PROCEDURE __INIT_LONGLONGS +PROCEDURE __INIT_LONGLONGS() + HB_CStructureCSyntax( "ULONGLONG", { "-4", "ulong[2]", }, , , 8 ) __ClsSetModule( __ActiveStructure() ) HB_CStructureCSyntax( "LONGLONG", { "4", "long[2]", } , , , 8 ) __ClsSetModule( __ActiveStructure() ) -RETURN + RETURN // + FUNCTION __ActiveStructure( cStructure, nAlign ) - /* LOCAL oErr */ +#if 0 + LOCAL oErr +#endif LOCAL acMembers, aCTypes, hClass, Counter, cMember IF s_lInitLongs @@ -87,42 +91,43 @@ FUNCTION __ActiveStructure( cStructure, nAlign ) IF PCount() == 2 cStructure := Upper( cStructure ) - IF aScan( s_aClasses, {| aClassInfo | aClassInfo[1] == cStructure } ) > 0 - /* In most cases we can simply ignore the reduefinition, by returning a FAKED Structure Array! + IF AScan( s_aClasses, {| aClassInfo | aClassInfo[ 1 ] == cStructure } ) > 0 + /* In most cases we can simply ignore the redefinition, by returning a FAKED Structure Array! */ +#if 0 oErr := ErrorNew() oErr:Args := { cStructure, nAlign } oErr:CanDefault := .F. oErr:CanRetry := .F. oErr:CanSubstitute := .T. - oErr:Description := "Structure already defined." + oErr:Description := "Structure already defined." oErr:Operation := "__ActiveStructure()" oErr:Severity := ES_ERROR oErr:SubCode := 1 oErr:SubSystem := "C Structure" RETURN Eval( ErrorBlock(), oErr ) - */ +#endif // In most cases we can simply ignore the redefinition, by returning a FAKED Structure Array! //TraceLog( "Redefinition of C Structure: " + cStructure ) RETURN t_aActiveStructure := { cStructure, NIL, {}, {}, iif( HB_ISNUMERIC( nAlign ), nAlign, 8 ) } ENDIF - aAdd( s_aClasses, { cStructure, NIL, {}, {}, iif( HB_ISNUMERIC( nAlign ), nAlign, 8 ) } ) - //TraceLog( "Registered: " + cStructure, s_aClasses[-1][5] ) + AAdd( s_aClasses, { cStructure, NIL, {}, {}, iif( HB_ISNUMERIC( nAlign ), nAlign, 8 ) } ) + //TraceLog( "Registered: " + cStructure, s_aClasses[ -1 ][ 5 ] ) - t_aActiveStructure := atail(s_aClasses) + t_aActiveStructure := ATail( s_aClasses ) ELSE //TraceLog( "Created: " + Str( nId ) ) - acMembers := t_aActiveStructure[3] - aCTypes := t_aActiveStructure[4] - nAlign := t_aActiveStructure[5] + acMembers := t_aActiveStructure[ 3 ] + aCTypes := t_aActiveStructure[ 4 ] + nAlign := t_aActiveStructure[ 5 ] - hClass := __clsNew( "C Structure " + t_aActiveStructure[1] , Len( acMembers ) + CLASS_PROPERTIES ) + hClass := __clsNew( "C Structure " + t_aActiveStructure[ 1 ] , Len( acMembers ) + CLASS_PROPERTIES ) //__clsDelMsg( hClass, "C" ) - t_aActiveStructure[2] := hClass + t_aActiveStructure[ 2 ] := hClass __clsAddMsg( hClass, "Reset" , @Reset() , HB_OO_MSG_METHOD ) __clsAddMsg( hClass, "Buffer" , @Buffer() , HB_OO_MSG_METHOD ) @@ -148,33 +153,35 @@ FUNCTION __ActiveStructure( cStructure, nAlign ) // WARNING InternalBuffer *MUST* remain the *LAST* Property!!! __clsAddMsg( hClass, "InternalBuffer", ++Counter, HB_OO_MSG_PROPERTY, , HB_OO_CLSTP_READONLY ) - //TraceLog( Len( aCTypes ), aCTypes[1], aCTypes ) + //TraceLog( Len( aCTypes ), aCTypes[ 1 ], aCTypes ) RETURN hClass ENDIF RETURN t_aActiveStructure // + PROCEDURE HB_Member( cMember, CType ) - LOCAL nLen, nAt + LOCAL nLen, nAt - IF right(cMember,1) == "]" - nAt := At( "[", cMember ) - //nLen := Val( SubStr( cMember, nAt + 1, Len( cMember ) ) ) - // Support expressions like x + y, x - y, x * y - nLen := &( SubStr( cMember, nAt + 1, Len( cMember ) - nAt - 1 ) ) + IF Right( cMember, 1 ) == "]" + nAt := At( "[", cMember ) + //nLen := Val( SubStr( cMember, nAt + 1, Len( cMember ) ) ) + // Support expressions like x + y, x - y, x * y + nLen := &( SubStr( cMember, nAt + 1, Len( cMember ) - nAt - 1 ) ) - aAdd( t_aActiveStructure[3], Left( cMember, nAt - 1 ) ) - aAdd( t_aActiveStructure[4], HB_CTypeArrayID( CType, nLen ) ) - ELSE - aAdd( t_aActiveStructure[3], cMember ) - aAdd( t_aActiveStructure[4], CType ) - ENDIF + AAdd( t_aActiveStructure[ 3 ], Left( cMember, nAt - 1 ) ) + AAdd( t_aActiveStructure[ 4 ], HB_CTypeArrayID( CType, nLen ) ) + ELSE + AAdd( t_aActiveStructure[ 3 ], cMember ) + AAdd( t_aActiveStructure[ 4 ], CType ) + ENDIF -Return + RETURN // + FUNCTION HB_CStructureID( cStructure, lInplace ) LOCAL nID @@ -182,10 +189,10 @@ FUNCTION HB_CStructureID( cStructure, lInplace ) cStructure := Upper( cStructure ) - nID := aScan( s_aClasses, {| aClassInfo | aClassInfo[1] == cStructure } ) + nID := AScan( s_aClasses, {| aClassInfo | aClassInfo[ 1 ] == cStructure } ) IF nID == 0 - nID := aScan( s_aSynonyms, {| aSynonym | aSynonym[1] == cStructure } ) + nID := AScan( s_aSynonyms, {| aSynonym | aSynonym[ 1 ] == cStructure } ) IF nID == 0 oErr := ErrorNew() oErr:Args := { cStructure, lInplace } @@ -200,7 +207,7 @@ FUNCTION HB_CStructureID( cStructure, lInplace ) RETURN Eval( ErrorBlock(), oErr ) ELSE - nID := s_aSynonyms[nID][2] + nID := s_aSynonyms[ nID ][ 2 ] ENDIF nID += iif( lInplace, 0, CTYPE_STRUCTURE_PTR - CTYPE_STRUCTURE ) @@ -208,11 +215,12 @@ FUNCTION HB_CStructureID( cStructure, lInplace ) nID += iif( lInplace, CTYPE_STRUCTURE, CTYPE_STRUCTURE_PTR ) ENDIF - //TraceLog( cStructure, nID ) +// TraceLog( cStructure, nID ) RETURN nID // + PROCEDURE HB_CStructureCSyntax( cStructure, aDefinitions, cTag, cSynonList, nAlign ) LOCAL cElem, nAt, nIndex := 1 @@ -221,63 +229,63 @@ PROCEDURE HB_CStructureCSyntax( cStructure, aDefinitions, cTag, cSynonList, nAli LOCAL nID, cSynon FOR EACH cElem IN aDefinitions - // *** PP bug - remove when possible! *** - IF cElem == NIL - aSize( aDefinitions, nIndex - 1 ) - EXIT - ENDIF + // *** PP bug - remove when possible! *** + IF cElem == NIL + ASize( aDefinitions, nIndex - 1 ) + EXIT + ENDIF - IF ( nAt := At( "*", cElem ) ) > 1 - IF nIndex < Len( aDefinitions ) - hb_aIns( aDefinitions, nIndex + 1, SubStr( cElem, nAt + 1 ), .T. ) - ELSE - aAdd( aDefinitions, SubStr( cElem, nAt + 1 ) ) - ENDIF + IF ( nAt := At( "*", cElem ) ) > 1 + IF nIndex < Len( aDefinitions ) + hb_AIns( aDefinitions, nIndex + 1, SubStr( cElem, nAt + 1 ), .T. ) + ELSE + AAdd( aDefinitions, SubStr( cElem, nAt + 1 ) ) + ENDIF - aDefinitions[nIndex] := StrTran( Left( cElem, nAt ), " ", "" ) - ELSEIF ( nAt := At( "-", cElem ) ) > 1 - IF nIndex < Len( aDefinitions ) - hb_aIns( aDefinitions, nIndex + 1, SubStr( cElem, nAt ), .T. ) - ELSE - aAdd( aDefinitions, SubStr( cElem, nAt ) ) - ENDIF + aDefinitions[nIndex] := StrTran( Left( cElem, nAt ), " " ) + ELSEIF ( nAt := At( "-", cElem ) ) > 1 + IF nIndex < Len( aDefinitions ) + hb_AIns( aDefinitions, nIndex + 1, SubStr( cElem, nAt ), .T. ) + ELSE + AAdd( aDefinitions, SubStr( cElem, nAt ) ) + ENDIF - aDefinitions[nIndex] := RTrim( Left( cElem, nAt - 1 ) ) - ENDIF + aDefinitions[nIndex] := RTrim( Left( cElem, nAt - 1 ) ) + ENDIF - nIndex++ + nIndex++ NEXT __ActiveStructure( cStructure, nAlign ) nID := Len( s_aClasses ) IF ! Empty( cTag ) - aAdd( s_aSynonyms, { Upper( cTag ), nID + CTYPE_STRUCTURE } ) - //Tracelog( s_aSynonyms[-1][1], s_aSynonyms[-1][2] ) + AAdd( s_aSynonyms, { Upper( cTag ), nID + CTYPE_STRUCTURE } ) + //Tracelog( s_aSynonyms[ -1 ][ 1 ], s_aSynonyms[ -1 ][ 2 ] ) ENDIF IF ! Empty( cSynonList ) - FOR EACH cSynon IN HB_aTokens( cSynonList ) - IF left( cSynon,1 ) == '*' - aAdd( s_aSynonyms, { Upper( SubStr( cSynon, 2 ) ), nID + CTYPE_STRUCTURE_PTR } ) + FOR EACH cSynon IN hb_ATokens( cSynonList ) + IF Left( cSynon, 1 ) == "*" + AAdd( s_aSynonyms, { Upper( SubStr( cSynon, 2 ) ), nID + CTYPE_STRUCTURE_PTR } ) ELSE - aAdd( s_aSynonyms, { Upper( cSynon ), nID + CTYPE_STRUCTURE } ) + AAdd( s_aSynonyms, { Upper( cSynon ), nID + CTYPE_STRUCTURE } ) ENDIF - //Tracelog( s_aSynonyms[-1][1], s_aSynonyms[-1][2] ) + //Tracelog( s_aSynonyms[ -1 ][ 1 ], s_aSynonyms[ -1 ][ 2 ] ) NEXT ENDIF nLen := Len( aDefinitions ) FOR Counter := 1 TO nLen STEP 2 - //TraceLog( "Member: " + aDefinitions[Counter + 1], "Type: " + aDefinitions[Counter] ) + //TraceLog( "Member: " + aDefinitions[ Counter + 1 ], "Type: " + aDefinitions[ Counter ] ) - CType := aDefinitions[Counter] + CType := aDefinitions[ Counter ] IF Val( CType ) != 0 - HB_Member( aDefinitions[Counter + 1], Val( aDefinitions[Counter] ) ) + HB_Member( aDefinitions[ Counter + 1 ], Val( aDefinitions[ Counter ] ) ) ELSE - IF right(CType,1) == '*' + IF Right( CType, 1 ) == "*" CType := HB_CStructureID( Left( CType, Len( CType ) - 1 ), .F. ) ELSE CType := HB_CStructureID( CType, .T. ) @@ -288,7 +296,7 @@ PROCEDURE HB_CStructureCSyntax( cStructure, aDefinitions, cTag, cSynonList, nAli oErr:CanDefault := .F. oErr:CanRetry := .F. oErr:CanSubstitute := .T. - oErr:Description := "Undefined CType: '" + aDefinitions[Counter] + "'" + oErr:Description := "Undefined CType: '" + aDefinitions[ Counter ] + "'" oErr:Operation := "HB_CStructureCSyntax()" oErr:Severity := ES_ERROR oErr:SubCode := 2 @@ -298,13 +306,14 @@ PROCEDURE HB_CStructureCSyntax( cStructure, aDefinitions, cTag, cSynonList, nAli ENDIF ENDIF - HB_Member( aDefinitions[Counter + 1], CType ) + HB_Member( aDefinitions[ Counter + 1 ], CType ) ENDIF NEXT -RETURN + RETURN // + FUNCTION HB_CStructure( cStructure, nAlign ) LOCAL hClass @@ -313,7 +322,7 @@ FUNCTION HB_CStructure( cStructure, nAlign ) LOCAL oErr cStructure := Upper( cStructure ) - nID := aScan( s_aClasses, {| aClassInfo | aClassInfo[1] == cStructure } ) + nID := AScan( s_aClasses, {| aClassInfo | aClassInfo[ 1 ] == cStructure } ) IF nID == 0 oErr := ErrorNew() @@ -330,7 +339,7 @@ FUNCTION HB_CStructure( cStructure, nAlign ) RETURN Eval( ErrorBlock(), oErr ) ENDIF - hClass := s_aClasses[nId][2] + hClass := s_aClasses[ nId ][ 2 ] oStructure := __clsInst( hClass ) AllocateMembers( oStructure ) @@ -338,12 +347,14 @@ FUNCTION HB_CStructure( cStructure, nAlign ) RETURN oStructure // + STATIC PROCEDURE AllocateMembers( oStructure ) LOCAL aCTypes, CType + aCTypes := oStructure:aCTypes - //TraceLog( "Scaning: " + oStructure:ClassName ) +// TraceLog( "Scaning: " + oStructure:ClassName ) FOR EACH CType IN aCTypes IF CType > CTYPE_STRUCTURE .AND. CType < CTYPE_STRUCTURE_PTR @@ -352,17 +363,18 @@ STATIC PROCEDURE AllocateMembers( oStructure ) ENDIF NEXT - //TraceLog( "Finished: " + oStructure:ClassName ) +// TraceLog( "Finished: " + oStructure:ClassName ) -RETURN + RETURN // + FUNCTION HB_CStructureFromID( nID, nAlign ) LOCAL hClass, oStructure LOCAL oErr - //TraceLog( nId, s_aClasses ) +// TraceLog( nId, s_aClasses ) IF nID > CTYPE_STRUCTURE_PTR nID -= CTYPE_STRUCTURE_PTR @@ -383,11 +395,11 @@ FUNCTION HB_CStructureFromID( nID, nAlign ) RETURN Eval( ErrorBlock(), oErr ) ENDIF - IF s_aClasses[nID][2] == NIL + IF s_aClasses[ nID ][ 2 ] == NIL // Meta class was not created yet. - RETURN HB_CStructure( s_aClasses[nId][1] ) + RETURN HB_CStructure( s_aClasses[ nId ][ 1 ] ) ELSE - hClass := s_aClasses[nId][2] + hClass := s_aClasses[ nId ][ 2 ] oStructure := __clsInst( hClass ) ENDIF @@ -395,6 +407,7 @@ FUNCTION HB_CStructureFromID( nID, nAlign ) RETURN oStructure // + FUNCTION HB_CTypeArrayID( CType, nLen ) LOCAL hClass @@ -403,23 +416,23 @@ FUNCTION HB_CTypeArrayID( CType, nLen ) LOCAL aCTypes, acMembers, cMember LOCAL cArrayClassName := "C Array of [" + hb_ntos( nLen ) + "] CType: " + Str( CType ) - nID := aScan( s_aArrayClasses, {| aArrayDefinitions | aArrayDefinitions[1] == CType .AND. aArrayDefinitions[2] == nLen } ) + nID := AScan( s_aArrayClasses, {| aArrayDefinitions | aArrayDefinitions[ 1 ] == CType .AND. aArrayDefinitions[ 2 ] == nLen } ) IF nID == 0 hClass := __clsNew( "C Structure " + cArrayClassName, nLen + CLASS_PROPERTIES ) //__clsDelMsg( hClass, "C" ) __ClsSetModule( hClass ) - aAdd( s_aClasses, { cArrayClassName, hClass, Array( nLen ), Array( nLen ), 1 } ) + AAdd( s_aClasses, { cArrayClassName, hClass, Array( nLen ), Array( nLen ), 1 } ) nID := Len( s_aClasses ) - acMembers := s_aClasses[nID][3] - aCTypes := s_aClasses[nID][4] + acMembers := s_aClasses[ nID ][ 3 ] + aCTypes := s_aClasses[ nID ][ 4 ] - // Sames as s_aClasses[nID][4] - aFill( aCTypes, CType ) + // Sames as s_aClasses[ nID ][ 4 ] + AFill( aCTypes, CType ) - aAdd( s_aArrayClasses, { CType, nLen, nID } ) + AAdd( s_aArrayClasses, { CType, nLen, nID } ) __clsAddMsg( hClass, "Reset" , @Reset() , HB_OO_MSG_METHOD ) __clsAddMsg( hClass, "Buffer" , @Buffer() , HB_OO_MSG_METHOD ) @@ -433,12 +446,12 @@ FUNCTION HB_CTypeArrayID( CType, nLen ) __clsAddMsg( hClass, "CopyTo" , @__CSTR_CopyTo() , HB_OO_MSG_METHOD ) //IF Abs( CType ) == 1 - __clsAddMsg( hClass, "AsString", @AsString() , HB_OO_MSG_METHOD ) + __clsAddMsg( hClass, "AsString", @AsString() , HB_OO_MSG_METHOD ) //ENDIF FOR Counter := 1 TO nLen cMember := hb_ntos( Counter ) - acMembers[Counter] := cMember + acMembers[ Counter ] := cMember __clsAddMsg( hClass, cMember, Counter, HB_OO_MSG_PROPERTY ) NEXT @@ -451,18 +464,20 @@ FUNCTION HB_CTypeArrayID( CType, nLen ) __clsAddMsg( hClass, "InternalBuffer", Counter, HB_OO_MSG_PROPERTY, , HB_OO_CLSTP_READONLY ) //TraceLog( "Registered: " + cArrayClassName, nID, Len( s_aArrayClasses ), HB_SizeOfCStructure( aCTypes, 1 ), nLen ) ELSE - nID := s_aArrayClasses[nID][3] - //TraceLog( "Reused: " + s_aClasses[nID][1], nID ) + nID := s_aArrayClasses[ nID ][ 3 ] + //TraceLog( "Reused: " + s_aClasses[ nID ][ 1 ], nID ) ENDIF RETURN nID + CTYPE_STRUCTURE // + FUNCTION HB_IS_CStructure( x ) RETURN Left( x:ClassName(), 11 ) == "C Structure" // + STATIC FUNCTION SayMembers( cPad, lShowMembers, lReturnString ) LOCAL xProperty, cOut := "" @@ -477,8 +492,8 @@ STATIC FUNCTION SayMembers( cPad, lShowMembers, lReturnString ) lReturnString := .F. ENDIF - //QOut( cPad + SubStr( QSelf():ClassName, 13 ) ) - //QOut( cPad + Replicate( "-", Len( SubStr( QSelf():ClassName, 13 ) ) ) ) +// QOut( cPad + SubStr( QSelf():ClassName, 13 ) ) +// QOut( cPad + Replicate( "-", Len( SubStr( QSelf():ClassName, 13 ) ) ) ) cOut += cPad + SubStr( QSelf():ClassName, 13 ) cOut += hb_eol() + cPad + Replicate( "-", Len( SubStr( QSelf():ClassName, 13 ) ) ) @@ -492,17 +507,18 @@ STATIC FUNCTION SayMembers( cPad, lShowMembers, lReturnString ) ENDIF ELSE //QOut( cPad + iif( lShowMembers, acMembers[ xProperty:__enumIndex() ], "" ) + ":", xProperty ) - cOut += hb_eol() + cPad + iif( lShowMembers, QSelf():acMembers[ xProperty:__enumIndex() ], "" ) + ":" + hb_cStr( xProperty ) + cOut += hb_eol() + cPad + iif( lShowMembers, QSelf():acMembers[ xProperty:__enumIndex() ], "" ) + ":" + hb_CStr( xProperty ) ENDIF NEXT - IF !lReturnString + IF ! lReturnString QOut( cOut ) ENDIF RETURN iif( lReturnString, cOut, QSelf() ) // + STATIC FUNCTION Reset() LOCAL xProperty, nProperties := Len( QSelf() ) - CLASS_PROPERTIES @@ -522,12 +538,13 @@ STATIC FUNCTION Reset() RETURN QSelf() // + STATIC FUNCTION Buffer( Buffer, lAdopt ) IF HB_ISSTRING( Buffer ) IF Len( Buffer ) < QSelf():SizeOf //TraceLog( Buffer ) - Buffer := PadR( Buffer, QSelf():SizeOf, Chr(0) ) + Buffer := PadR( Buffer, QSelf():SizeOf, Chr( 0 ) ) ENDIF QSelf():InternalBuffer := Buffer @@ -541,6 +558,7 @@ STATIC FUNCTION Buffer( Buffer, lAdopt ) RETURN QSelf() // + STATIC FUNCTION GetPointer() QSelf():InternalBuffer := HB_ArrayToStructure( QSelf(), QSelf():aCTypes, QSelf():nAlign ) @@ -548,31 +566,33 @@ STATIC FUNCTION GetPointer() RETURN hb_String2Pointer( QSelf():InternalBuffer ) // + STATIC FUNCTION Value() - //LOCAL aValues := {} +// LOCAL aValues := {} - //aEval( QSelf(), {| xVal | aAdd( aValues, xVal ) }, 1, Len( QSelf() ) - CLASS_PROPERTIES ) +// AEval( QSelf(), {| xVal | aAdd( aValues, xVal ) }, 1, Len( QSelf() ) - CLASS_PROPERTIES ) QSelf():InternalBuffer := HB_ArrayToStructure( QSelf(), QSelf():aCTypes, QSelf():nAlign ) RETURN QSelf():InternalBuffer // + STATIC FUNCTION DeValue( lAdopt ) - //LOCAL aValues := {} +// LOCAL aValues := {} LOCAL Buffer := QSelf():InternalBuffer - //TraceLog( QSelf():ClassName(), QSelf():nAlign, Buffer, Len( Buffer ), lAdopt ) +// TraceLog( QSelf():ClassName(), QSelf():nAlign, Buffer, Len( Buffer ), lAdopt ) - //aEval( QSelf(), {| xVal | aAdd( aValues, xVal ) }, 1, Len( QSelf() ) - CLASS_PROPERTIES ) +// AEval( QSelf(), {| xVal | aAdd( aValues, xVal ) }, 1, Len( QSelf() ) - CLASS_PROPERTIES ) IF ! HB_ISSTRING( Buffer ) .OR. Len( Buffer ) == 0 //TraceLog( "EMPTY Buffer passed to " + ProcName() ) ELSEIF Len( Buffer ) < QSelf():SizeOf //TraceLog( "Should have been caught at ::Buffer()!!!", Buffer ) - //Buffer := PadR( Buffer, QSelf():SizeOf, Chr(0) ) + //Buffer := PadR( Buffer, QSelf():SizeOf, Chr( 0 ) ) ELSE HB_StructureToArray( Buffer, QSelf():aCTypes, QSelf():nAlign, lAdopt, QSelf() ) ENDIF @@ -580,15 +600,17 @@ STATIC FUNCTION DeValue( lAdopt ) RETURN QSelf() // + STATIC FUNCTION ArrayMethod() LOCAL aValues := {} - aEval( QSelf(), {| xVal | aAdd( aValues, xVal ) }, 1, Len( QSelf() ) - CLASS_PROPERTIES ) + AEval( QSelf(), {| xVal | AAdd( aValues, xVal ) }, 1, Len( QSelf() ) - CLASS_PROPERTIES ) RETURN aValues // + STATIC FUNCTION Init( aValues ) LOCAL xProperty, nLen := Len( aValues ) @@ -608,6 +630,7 @@ STATIC FUNCTION Init( aValues ) RETURN QSelf() // + STATIC FUNCTION Pointer( nNewPointer, lAdopt ) IF nNewPointer != NIL @@ -617,6 +640,7 @@ STATIC FUNCTION Pointer( nNewPointer, lAdopt ) RETURN QSelf() // + STATIC FUNCTION AsString() LOCAL cChar, nLen := Len( QSelf() ) - CLASS_PROPERTIES, cString := Space( nLen ) diff --git a/harbour/contrib/xhb/tcgi.prg b/harbour/contrib/xhb/tcgi.prg index e747156edc..8a657c233d 100644 --- a/harbour/contrib/xhb/tcgi.prg +++ b/harbour/contrib/xhb/tcgi.prg @@ -224,7 +224,7 @@ FUNCTION ParseString( cString, cDelim, nRet ) LOCAL nSize LOCAL i - nSize := Len( cString ) - Len( StrTran( cString, cDelim, "" ) ) + 1 + nSize := Len( cString ) - Len( StrTran( cString, cDelim ) ) + 1 aElem := Array( nSize ) cBuf := cString diff --git a/harbour/extras/gfspell/spell.prg b/harbour/extras/gfspell/spell.prg index 40f4498ee1..9ab90ba69b 100644 --- a/harbour/extras/gfspell/spell.prg +++ b/harbour/extras/gfspell/spell.prg @@ -939,7 +939,7 @@ STATIC function ChrCount(cChar,cString) **DEBUG** @24,30 SAY "At ChrCount" -return len(cString)-len(strTran(cString,cChar,"")) +return len(cString)-len(strTran(cString,cChar)) ** ** Function: Sp_Split() diff --git a/harbour/extras/gtwvw/tests/ebtest7.prg b/harbour/extras/gtwvw/tests/ebtest7.prg index 45830bbcdf..ff7a3b2cff 100644 --- a/harbour/extras/gtwvw/tests/ebtest7.prg +++ b/harbour/extras/gtwvw/tests/ebtest7.prg @@ -922,9 +922,9 @@ STATIC FUNCTION IsBadDate( cBuffer ) //, cPicFunc ) // cBuffer := InvertDwM( cBuffer ) // ENDIF - cBuffer2 := StrTran( cBuffer, "/", "" ) - cBuffer2 := StrTran( cBuffer2, "-", "" ) - cBuffer2 := StrTran( cBuffer2, ".", "" ) + cBuffer2 := StrTran( cBuffer, "/" ) + cBuffer2 := StrTran( cBuffer2, "-" ) + cBuffer2 := StrTran( cBuffer2, "." ) IF Empty( cBuffer2 ) RETURN .F. diff --git a/harbour/extras/guestbk/testcgi.prg b/harbour/extras/guestbk/testcgi.prg index f11452562f..6fb1c5269f 100644 --- a/harbour/extras/guestbk/testcgi.prg +++ b/harbour/extras/guestbk/testcgi.prg @@ -31,7 +31,7 @@ FUNCTION ParseString( cString, cDelim, nRet ) LOCAL cBuf, aElem, nPosFim, nSize, i - nSize := Len( cString ) - Len( StrTran( cString, cDelim, "" ) ) + 1 + nSize := Len( cString ) - Len( StrTran( cString, cDelim ) ) + 1 aElem := Array( nSize ) cBuf := cString diff --git a/harbour/src/debug/dbghelp.prg b/harbour/src/debug/dbghelp.prg index 2fbe555ce1..17c48a8f16 100644 --- a/harbour/src/debug/dbghelp.prg +++ b/harbour/src/debug/dbghelp.prg @@ -78,7 +78,7 @@ PROCEDURE __dbgHelp( nTopic ) oBrw := HBDbBrowser():New( oDlg:nTop + 1, oDlg:nLeft + 1, oDlg:nBottom - 1, oDlg:nLeft + 12 ) oBrw:Cargo := 1 oBrw:AddColumn( HBDbColumnNew( "", {|| aTopics[ oBrw:Cargo ][ 1 ] }, 12 ) ) - oBrw:ColorSpec := StrTran( __Dbg():ClrModal(), ", R/W", "" ) + oBrw:ColorSpec := StrTran( __Dbg():ClrModal(), ", R/W" ) oBrw:SkipBlock := {| nSkip, nOld | nOld := oBrw:Cargo, oBrw:Cargo += nSkip,; oBrw:Cargo := Min( Max( oBrw:Cargo, 1 ), Len( aTopics ) ),; oBrw:Cargo - nOld } diff --git a/harbour/src/debug/dbgtmenu.prg b/harbour/src/debug/dbgtmenu.prg index 06fde1298c..566c9e1e4c 100644 --- a/harbour/src/debug/dbgtmenu.prg +++ b/harbour/src/debug/dbgtmenu.prg @@ -151,7 +151,7 @@ METHOD AddItem( oMenuItem ) CLASS HBDbMenu IF Len( oLastMenu:aItems ) > 0 oLastMenuItem := ATail( oLastMenu:aItems ) oMenuItem:nCol := oLastMenuItem:nCol + ; - Len( StrTran( oLastMenuItem:cPrompt, "~", "" ) ) + Len( StrTran( oLastMenuItem:cPrompt, "~" ) ) ELSE oMenuItem:nCol := 0 ENDIF @@ -171,7 +171,7 @@ METHOD Build() CLASS HBDbMenu FOR n := 1 TO Len( ::aItems ) ::aItems[ n ]:nRow := 0 ::aItems[ n ]:nCol := nPos - nPos += Len( StrTran( ::aItems[ n ]:cPrompt, "~", "" ) ) + nPos += Len( StrTran( ::aItems[ n ]:cPrompt, "~" ) ) NEXT ELSE oMenuItem := ATail( ::aMenus[ Len( ::aMenus ) - 1 ]:aItems ) @@ -181,7 +181,7 @@ METHOD Build() CLASS HBDbMenu FOR n := 1 TO Len( ::aItems ) ::aItems[ n ]:nRow := ::nTop + n ::aItems[ n ]:nCol := ::nLeft + 1 - nPos := Max( nPos, ::nLeft + Len( StrTran( ::aItems[ n ]:cPrompt, "~", "" ) ) + 1 ) + nPos := Max( nPos, ::nLeft + Len( StrTran( ::aItems[ n ]:cPrompt, "~" ) ) + 1 ) NEXT ::nRight := nPos + 1 ::nBottom := ::nTop + Len( ::aItems ) + 1 diff --git a/harbour/src/debug/dbgtmitm.prg b/harbour/src/debug/dbgtmitm.prg index b1a65c2c10..fcf6c5d895 100644 --- a/harbour/src/debug/dbgtmitm.prg +++ b/harbour/src/debug/dbgtmitm.prg @@ -92,7 +92,7 @@ METHOD Display( cClrText, cClrHotKey ) CLASS HBDbMenuItem LOCAL nAt - hb_dispOutAt( ::nRow, ::nCol, StrTran( ::cPrompt, "~", "" ), cClrText ) + hb_dispOutAt( ::nRow, ::nCol, StrTran( ::cPrompt, "~" ), cClrText ) hb_dispOutAt( ::nRow, ::nCol + ; ( nAt := At( "~", ::cPrompt ) ) - 1,; diff --git a/harbour/src/debug/debugger.prg b/harbour/src/debug/debugger.prg index fbf6b5331f..49bdfce8ae 100644 --- a/harbour/src/debug/debugger.prg +++ b/harbour/src/debug/debugger.prg @@ -958,11 +958,11 @@ METHOD DoCommand( cCommand ) CLASS HBDebugger FOR n := 1 TO 11 IF At( ",", cParam1 ) != 0 ::aColors[ n ] := ; - StrTran( Left( cParam1, At( ",", cParam1 ) - 1 ), '"', "" ) + StrTran( Left( cParam1, At( ",", cParam1 ) - 1 ), '"' ) cParam1 := SubStr( cParam1, At( ",", cParam1 ) + 1 ) ELSE ::aColors[ n ] := ; - StrTran( Left( cParam1, At( "}", cParam1 ) - 1 ), '"', "" ) + StrTran( Left( cParam1, At( "}", cParam1 ) - 1 ), '"' ) ENDIF NEXT ::LoadColors() diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 3bc015dfa6..896b1cf23b 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -1705,9 +1705,9 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel ) { {|| FindInSamePath( "x86_64-w64-mingw32-gcc.exe", "gcc" ) }, "mingw64" },; /* mingw-w64 TDM build */ { {|| FindInPath( "x86_64-w64-mingw32-gcc" ) }, "mingw64", "x86_64-w64-mingw32-" },; /* mingw-w64 build */ { {|| FindInPath( hbmk[ _HBMK_cCCPREFIX ] + "gcc" + hbmk[ _HBMK_cCCPOSTFIX ] ) }, "mingw" },; - { {|| iif( ! Empty( GetEnv( "WATCOM" ) ),; - FindInPath( "wcc386" ),; - NIL ) }, "watcom" },; + { {|| iif( Empty( GetEnv( "WATCOM" ) ),; + NIL ,; + FindInPath( "wcc386" ) ) }, "watcom" },; { {|| FindInPath( "clarm.exe" ) }, "msvcarm" },; { {|| FindInPath( "armasm.exe" ) }, "msvcarm" },; { {|| FindInPath( "ml64.exe" ) }, "msvc64" },; @@ -3321,7 +3321,7 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel ) ELSE /* Use external compiler */ cCommand := FNameEscape( hb_DirSepAdd( PathSepToSelf( hbmk[ _HBMK_cHB_INSTALL_BIN ] ) ) + cBin_CompPRG + cBinExt, hbmk[ _HBMK_nCmd_Esc ] ) +; - iif( ! Empty( hbmk[ _HBMK_aOPTPRG ] ), " " + ArrayToList( hbmk[ _HBMK_aOPTPRG ] ), "" ) + iif( Empty( hbmk[ _HBMK_aOPTPRG ] ), "", " " + ArrayToList( hbmk[ _HBMK_aOPTPRG ] ) ) hb_processRun( AllTrim( cCommand ) ) ENDIF RETURN _ERRLEV_OK @@ -5470,7 +5470,7 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel ) aCommand := ArrayAJoin( { { iif( hbmk[ _HBMK_lCreateLib ] .OR. hbmk[ _HBMK_lCreateDyn ], "-n1", "-n2" ) },; aTO_DO,; iif( hbmk[ _HBMK_lBLDFLGP ], { hb_Version( HB_VERSION_FLAG_PRG ) }, {} ),; - ListToArray( iif( ! Empty( GetEnv( "HB_USER_PRGFLAGS" ) ), " " + GetEnv( "HB_USER_PRGFLAGS" ), "" ) ),; + ListToArray( iif( Empty( GetEnv( "HB_USER_PRGFLAGS" ) ), "", " " + GetEnv( "HB_USER_PRGFLAGS" ) ) ),; hbmk[ _HBMK_aOPTPRG ] } ) IF hbmk[ _HBMK_lTRACE ] @@ -5548,8 +5548,8 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel ) " " + iif( hbmk[ _HBMK_lCreateLib ] .OR. hbmk[ _HBMK_lCreateDyn ], "-n1", iif( hbmk[ _HBMK_nHBMODE ] != _HBMODE_NATIVE, "-n", "-n2" ) ) +; " " + iif( _HBMODE_IS_XHB( hbmk[ _HBMK_nHBMODE ] ), FNameEscape( tmp, hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nCmd_FNF ] ), tmp ) +; iif( hbmk[ _HBMK_lBLDFLGP ], " " + hb_Version( HB_VERSION_FLAG_PRG ), "" ) +; - iif( ! Empty( GetEnv( "HB_USER_PRGFLAGS" ) ), " " + GetEnv( "HB_USER_PRGFLAGS" ), "" ) +; - iif( ! Empty( hbmk[ _HBMK_aOPTPRG ] ), " " + ArrayToList( hbmk[ _HBMK_aOPTPRG ] ), "" ) + iif( Empty( GetEnv( "HB_USER_PRGFLAGS" ) ), "", " " + GetEnv( "HB_USER_PRGFLAGS" ) ) +; + iif( Empty( hbmk[ _HBMK_aOPTPRG ] ), "", " " + ArrayToList( hbmk[ _HBMK_aOPTPRG ] ) ) cCommand := AllTrim( cCommand ) @@ -6270,9 +6270,9 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel ) cOpt_CompCPass := cOpt_CompC cOpt_CompCPass := StrTran( cOpt_CompCPass, "{FC}" , iif( hbmk[ _HBMK_lBLDFLGC ], hb_Version( HB_VERSION_FLAG_C ) + " ", "" ) +; GetEnv( "HB_USER_CFLAGS" ) +; - iif( ! Empty( hbmk[ _HBMK_aOPTC ] ), " " + ArrayToList( hbmk[ _HBMK_aOPTC ] ), "" ) +; - iif( ! Empty( tmp4 ), " " + ArrayToList( tmp4 ), "" ) +; - iif( ! Empty( hbmk[ _HBMK_aOPTCUSER ] ), " " + ArrayToList( hbmk[ _HBMK_aOPTCUSER ] ), "" ) ) + iif( Empty( hbmk[ _HBMK_aOPTC ] ), "", " " + ArrayToList( hbmk[ _HBMK_aOPTC ] ) ) +; + iif( Empty( tmp4 ), "", " " + ArrayToList( tmp4 ) ) +; + iif( Empty( hbmk[ _HBMK_aOPTCUSER ] ), "", " " + ArrayToList( hbmk[ _HBMK_aOPTCUSER ] ) ) ) cOpt_CompCPass := StrTran( cOpt_CompCPass, "{OD}" , FNameEscape( hb_FNameDir( hbmk[ _HBMK_cPROGNAME ] ), nOpt_Esc, nOpt_FNF ) ) cOpt_CompCPass := StrTran( cOpt_CompCPass, "{DI}" , FNameEscape( hbmk[ _HBMK_cHB_INSTALL_INC ], nOpt_Esc, nOpt_FNF ) ) @@ -6504,13 +6504,13 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel ) /* Order is significant */ cOpt_Link := StrTran( cOpt_Link, "{FL}" , iif( hbmk[ _HBMK_lBLDFLGL ], hb_Version( HB_VERSION_FLAG_LINKER ) + " ", "" ) +; GetEnv( "HB_USER_LDFLAGS" ) +; - iif( ! Empty( hbmk[ _HBMK_aOPTL ] ), " " + ArrayToList( hbmk[ _HBMK_aOPTL ] ), "" ) ) + iif( Empty( hbmk[ _HBMK_aOPTL ] ), "", " " + ArrayToList( hbmk[ _HBMK_aOPTL ] ) ) ) cOpt_Link := StrTran( cOpt_Link, "{LO}" , ArrayToList( ArrayJoin( l_aOBJ, hbmk[ _HBMK_aOBJUSER ] ),, nOpt_Esc, nOpt_FNF, cObjPrefix ) ) cOpt_Link := StrTran( cOpt_Link, "{LS}" , ArrayToList( ArrayJoin( ListDirExt( hbmk[ _HBMK_aRESSRC ], hbmk[ _HBMK_cWorkDir ], cResExt ), hbmk[ _HBMK_aRESCMP ] ),, nOpt_Esc, nOpt_FNF, cResPrefix ) ) cOpt_Link := StrTran( cOpt_Link, "{LA}" , ArrayToList( l_aOBJA,, nOpt_Esc, nOpt_FNF ) ) cOpt_Link := StrTran( cOpt_Link, "{LL}" , ArrayToList( l_aLIB,, nOpt_Esc, nOpt_FNF, cLibPrefix ) ) cOpt_Link := StrTran( cOpt_Link, "{LB}" , ArrayToList( l_aLIBA,, nOpt_Esc, nOpt_FNF ) ) - cOpt_Link := StrTran( cOpt_Link, "{LF}" , iif( ! Empty( hbmk[ _HBMK_aOPTLPOST ] ), " " + ArrayToList( hbmk[ _HBMK_aOPTLPOST ] ), "" ) ) + cOpt_Link := StrTran( cOpt_Link, "{LF}" , iif( Empty( hbmk[ _HBMK_aOPTLPOST ] ), "", " " + ArrayToList( hbmk[ _HBMK_aOPTLPOST ] ) ) ) cOpt_Link := StrTran( cOpt_Link, "{IM}" , ArrayToList( hbmk[ _HBMK_aDEF ],, nOpt_Esc, nOpt_FNF, cDefPrefix ) ) cOpt_Link := StrTran( cOpt_Link, "{OE}" , FNameEscape( hbmk[ _HBMK_cPROGNAME ], nOpt_Esc, nOpt_FNF ) ) cOpt_Link := StrTran( cOpt_Link, "{OM}" , FNameEscape( hb_FNameExtSet( hbmk[ _HBMK_cPROGNAME ], ".map" ), nOpt_Esc, nOpt_FNF ) ) @@ -6623,7 +6623,7 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel ) cOpt_Dyn := StrTran( cOpt_Dyn, "{LS}" , ArrayToList( ArrayJoin( ListDirExt( hbmk[ _HBMK_aRESSRC ], hbmk[ _HBMK_cWorkDir ], cResExt ), hbmk[ _HBMK_aRESCMP ] ),, nOpt_Esc, nOpt_FNF, cResPrefix ) ) cOpt_Dyn := StrTran( cOpt_Dyn, "{LL}" , ArrayToList( l_aLIB,, nOpt_Esc, nOpt_FNF, cLibPrefix ) ) cOpt_Dyn := StrTran( cOpt_Dyn, "{LB}" , ArrayToList( l_aLIBA,, nOpt_Esc, nOpt_FNF ) ) - cOpt_Dyn := StrTran( cOpt_Dyn, "{LF}" , iif( ! Empty( hbmk[ _HBMK_aOPTDPOST ] ), " " + ArrayToList( hbmk[ _HBMK_aOPTDPOST ] ), "" ) ) + cOpt_Dyn := StrTran( cOpt_Dyn, "{LF}" , iif( Empty( hbmk[ _HBMK_aOPTDPOST ] ), "", " " + ArrayToList( hbmk[ _HBMK_aOPTDPOST ] ) ) ) cOpt_Dyn := StrTran( cOpt_Dyn, "{IM}" , ArrayToList( hbmk[ _HBMK_aDEF ],, nOpt_Esc, nOpt_FNF, cDefPrefix ) ) cOpt_Dyn := StrTran( cOpt_Dyn, "{OD}" , FNameEscape( hbmk[ _HBMK_cPROGNAME ], nOpt_Esc, nOpt_FNF ) ) cOpt_Dyn := StrTran( cOpt_Dyn, "{OM}" , FNameEscape( hb_FNameExtSet( hbmk[ _HBMK_cPROGNAME ], ".map" ), nOpt_Esc, nOpt_FNF ) ) @@ -7620,7 +7620,7 @@ STATIC FUNCTION FindNewerHeaders( hbmk, cFileName, tTimeParent, lCMode, cBin_Com { iif( hbmk[ _HBMK_lCreateLib ] .OR. hbmk[ _HBMK_lCreateDyn ], "-n1", "-n2" ) },; { cFileName },; iif( hbmk[ _HBMK_lBLDFLGP ], { hb_Version( HB_VERSION_FLAG_PRG ) }, {} ),; - ListToArray( iif( ! Empty( GetEnv( "HB_USER_PRGFLAGS" ) ), " " + GetEnv( "HB_USER_PRGFLAGS" ), "" ) ),; + ListToArray( iif( Empty( GetEnv( "HB_USER_PRGFLAGS" ) ), "", " " + GetEnv( "HB_USER_PRGFLAGS" ) ) ),; hbmk[ _HBMK_aOPTPRG ] } ) IF ! HB_ISSTRING( tmp := hbmk_hb_compileBuf( hbmk, "harbour", aCommand ) )