From 3510c12d3e9e885b8bf7c828abf81fea701b6794 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Thu, 21 Aug 2008 16:20:02 +0000 Subject: [PATCH] 2008-08-21 18:06 UTC+0200 Viktor Szakats (harbour.01 syenar hu) * utils/hbdoc/fclass1.prg * utils/hbdoc/ffile1.prg * utils/hbdoc/ft_funcs.prg * utils/hbmake/fclass1.prg * utils/hbmake/tmake.prg * utils/hbmake/ffile1.prg * utils/hbmake/ft_funcs.prg * utils/hbmake/pickarry.prg * utils/hbmake/pickfile.prg * utils/hbmake/hbmutils.prg * utils/hbmake/hbmake.prg * Cleanups. ! Fixed open bug from previous commit (hopefully). * common.mak * utils/hbmake/Makefile * utils/hbmake/bld_b32.bat * utils/hbmake/bld_vc.bat - utils/hbmake/readline.c + utils/hbmake/hbmfrdln.c * utils/hbmake/hbmlang.c + utils/hbmake/hbmgauge.c * readline.c -> hbmfrdln.c (made fully identical to /contrib/xhb/freadlin.c) * GAUGE*() stuff moved into separate file. (separate file is fully identical to /contrib/hbclipsm/gauge.c) ! GAUGE*() function copyright restored to original. --- harbour/ChangeLog | 29 + harbour/common.mak | 3 +- harbour/utils/hbdoc/fclass1.prg | 6 +- harbour/utils/hbdoc/ffile1.prg | 91 +-- harbour/utils/hbdoc/ft_funcs.prg | 29 +- harbour/utils/hbmake/Makefile | 4 +- harbour/utils/hbmake/bld_b32.bat | 3 +- harbour/utils/hbmake/bld_vc.bat | 3 +- harbour/utils/hbmake/fclass1.prg | 6 +- harbour/utils/hbmake/ffile1.prg | 91 +-- harbour/utils/hbmake/ft_funcs.prg | 29 +- harbour/utils/hbmake/hbmake.prg | 2 +- .../utils/hbmake/{readline.c => hbmfrdln.c} | 18 +- harbour/utils/hbmake/hbmgauge.c | 192 +++++ harbour/utils/hbmake/hbmlang.c | 241 +----- harbour/utils/hbmake/hbmutils.prg | 2 +- harbour/utils/hbmake/pickarry.prg | 2 +- harbour/utils/hbmake/pickfile.prg | 9 - harbour/utils/hbmake/tmake.prg | 766 +++++++++--------- 19 files changed, 702 insertions(+), 824 deletions(-) rename harbour/utils/hbmake/{readline.c => hbmfrdln.c} (94%) create mode 100644 harbour/utils/hbmake/hbmgauge.c diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 5420040834..5b9c4d97f5 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,35 @@ 2008-12-31 13:59 UTC+0100 Foo Bar */ +2008-08-21 18:06 UTC+0200 Viktor Szakats (harbour.01 syenar hu) + * utils/hbdoc/fclass1.prg + * utils/hbdoc/ffile1.prg + * utils/hbdoc/ft_funcs.prg + * utils/hbmake/fclass1.prg + * utils/hbmake/tmake.prg + * utils/hbmake/ffile1.prg + * utils/hbmake/ft_funcs.prg + * utils/hbmake/pickarry.prg + * utils/hbmake/pickfile.prg + * utils/hbmake/hbmutils.prg + * utils/hbmake/hbmake.prg + * Cleanups. + ! Fixed open bug from previous commit (hopefully). + + * common.mak + * utils/hbmake/Makefile + * utils/hbmake/bld_b32.bat + * utils/hbmake/bld_vc.bat + - utils/hbmake/readline.c + + utils/hbmake/hbmfrdln.c + * utils/hbmake/hbmlang.c + + utils/hbmake/hbmgauge.c + * readline.c -> hbmfrdln.c + (made fully identical to /contrib/xhb/freadlin.c) + * GAUGE*() stuff moved into separate file. + (separate file is fully identical to /contrib/hbclipsm/gauge.c) + ! GAUGE*() function copyright restored to original. + 2008-08-21 14:11 UTC+0200 Viktor Szakats (harbour.01 syenar hu) * include/hbcomp.h * Minor formatting (alignment). diff --git a/harbour/common.mak b/harbour/common.mak index fda2dafd19..6fe5136a5b 100644 --- a/harbour/common.mak +++ b/harbour/common.mak @@ -1094,8 +1094,9 @@ HBMAKE_EXE_OBJS = \ $(OBJ_DIR)\fclass1$(OBJEXT) \ $(OBJ_DIR)\ffile1$(OBJEXT) \ $(OBJ_DIR)\ft_funcs$(OBJEXT) \ + $(OBJ_DIR)\hbmfrdln$(OBJEXT) \ + $(OBJ_DIR)\hbmgauge$(OBJEXT) \ $(OBJ_DIR)\hbmlang$(OBJEXT) \ - $(OBJ_DIR)\readline$(OBJEXT) \ $(OBJ_DIR)\tmake$(OBJEXT) \ #********************************************************** diff --git a/harbour/utils/hbdoc/fclass1.prg b/harbour/utils/hbdoc/fclass1.prg index 0d23d6e9b7..2bb45cc9b3 100644 --- a/harbour/utils/hbdoc/fclass1.prg +++ b/harbour/utils/hbdoc/fclass1.prg @@ -4,7 +4,7 @@ /* * Harbour Project source code: - * fclass.prg Fileman class for hbdoc + * Fileman class for hbdoc * * Copyright 2000 Luiz Rafael Culik * www - http://www.harbour-project.org @@ -367,5 +367,7 @@ METHOD openfile( cFile, nMethod ) CLASS FileMan cPath := STRTRAN( cFile, cFileName, "" ) ::addItem( nFileHandle, cFileName, cPath ) ENDIF + ::nHan := nFileHandle -RETURN nFileHandle + + RETURN nFileHandle diff --git a/harbour/utils/hbdoc/ffile1.prg b/harbour/utils/hbdoc/ffile1.prg index 5e864e4d7f..b03d7ce741 100644 --- a/harbour/utils/hbdoc/ffile1.prg +++ b/harbour/utils/hbdoc/ffile1.prg @@ -4,7 +4,7 @@ /* * Harbour Project source code: - * ffile1.prg Filebase class for hbdoc + * Filebase class for hbdoc * * Copyright 2000 Luiz Rafael Culik * www - http://www.harbour-project.org @@ -178,7 +178,7 @@ METHOD fgoBottom() CLASS FileBase RETURN Self -/* Method: close() +/* Method: closefile() Params: N/A Returns: Self Purpose: To close the file @@ -376,27 +376,6 @@ METHOD goBottom() CLASS FileBase RETURN Self -/* Method: close() - Params: N/A - Returns: Self - Purpose: To close the file -*/ - -/* Not declared in class creation, which means the super version is used. */ -#ifdef BUG - METHOD FCLOSE() CLASS FileBase - - IF Self:noDosError() .AND. Self:nDosHandle > 0 - FCLOSE( Self:nDosHandle ) - Self:nLastDosMessage := FERROR() - Self:delItem( Self:nDosHandle ) - Self:lAtTop := Self:lAtBottom := .F. - Self:nPosition := 0 - ENDIF - - RETURN Self -#endif - /* Method: write() Params: Returns: Self @@ -422,68 +401,6 @@ METHOD WRITE( cChar ) CLASS FileBase RETURN Self -/* Method: getBuffer( ) - Params: Logical toggle for direction - Returns: - Purpose: To return the number of bytes either forward or backward from - the present file pointer position in which the next CRLF char - appears. If is a logical false (.F.) value, them - the operation will go in reverse order; otherwise, it will go - in a forward direction. The default value is a logical true - (.T.) value. -*/ - -/* Class declaration send message BuffGet to BufferGet. */ -#ifdef BUG - METHOD Buffget( lForward ) CLASS FileBase - - LOCAL cBuffer // as char - LOCAL nLocation // as int - LOCAL nRead // as int - LOCAL lWithCRLF := .F. // as logical - - DEFAULT lForward TO .T. - - IF !lForward - - nRead := FSEEK( Self:nDosHandle, ; - - ( iif( ::nposition < pBUFFER_LENGTH, ; - ::nposition, ; - pBUFFER_LENGTH ) ), ; - 1 ) // rewind backwards - - cBuffer := SPACE( ::nposition - nRead ) - FREAD( Self:nDosHandle, @cBuffer, ( ::nposition - nRead ) ) - - IF RIGHT( cBuffer, 2 ) == hb_OSNewLine() // with line already - cBuffer := LEFT( cBuffer, LEN( cBuffer ) - 2 ) - lWithCRLF := .T. - ENDIF - nLocation := LEN( cBuffer ) - ( RAT( hb_OSNewLine(), cBuffer ) ) - - ELSE - cBuffer := SPACE( pBUFFER_LENGTH ) - nRead := FREAD( Self:nDosHandle, @cBuffer, pBUFFER_LENGTH ) - FSEEK( Self:nDosHandle, - ( iif( nRead < pBUFFER_LENGTH, nRead, ; - pBUFFER_LENGTH ) ), 1 ) // Rewind - - // Now, parse the string. and file - - nLocation := AT( hb_OSNewLine(), cBuffer ) - - // Now, if there is NO CRLF in the buffer and if the value of the - // number of bytes read is less than the buffer length, then we - // have an end of file condition. - IF nLocation == 0 .AND. ( nRead < pBUFFER_LENGTH ) - // If so, then set the appropriate flags accordingly. - ::lAtBottom := .T. - ::lAtTop := .F. - ENDIF - ENDIF - - RETURN nLocation -#endif - /* Method: appendLine( Character line to append Returns: Self @@ -597,7 +514,7 @@ METHOD GOTO( nValue ) CLASS FileBase ENDIF ENDIF -RETURN nCount + RETURN nCount METHOD BufferGet( lForward ) CLASS FileBase @@ -645,4 +562,4 @@ METHOD BufferGet( lForward ) CLASS FileBase ENDIF ENDIF -RETURN nLocation + RETURN nLocation diff --git a/harbour/utils/hbdoc/ft_funcs.prg b/harbour/utils/hbdoc/ft_funcs.prg index b39dc550f1..b846be2e8f 100644 --- a/harbour/utils/hbdoc/ft_funcs.prg +++ b/harbour/utils/hbdoc/ft_funcs.prg @@ -4,7 +4,7 @@ /* * Harbour Project source code: - * ft_funcs.prg File support Functions For hbdoc + * File support Functions For hbdoc * * Copyright 2000 Luiz Rafael Culik * www - http://www.harbour-project.org @@ -55,7 +55,7 @@ #include "fileio.ch" #include "inkey.ch" -STATIC s_TheHandle +STATIC s_oFileBase /**** * FT_FUSE( cFile, nMode ) ---> nHandle @@ -63,34 +63,33 @@ STATIC s_TheHandle */ FUNCTION FT_FUSE( cFile, nMode ) - DEFAULT cFile TO s_TheHandle:closefile() - - IF cFile != NIL - - s_TheHandle := FileBase():new( cFile ) + IF cFile == NIL + s_oFileBase:closefile() + ELSE + s_oFileBase := FileBase():new( cFile ) IF nMode != NIL - s_TheHandle:nOpenMode := nMode + s_oFileBase:nOpenMode := nMode ENDIF - s_TheHandle:open() + s_oFileBase:open() ENDIF - RETURN s_TheHandle:nHan + RETURN s_oFileBase:nHan -FUNCTION ft_FEOF() - RETURN s_TheHandle:lAtBottom +FUNCTION FT_FEOF() + RETURN s_oFileBase:lAtBottom FUNCTION FReadLn() - RETURN s_TheHandle:retrieve() + RETURN s_oFileBase:retrieve() FUNCTION FT_FReadLn() RETURN StrTran( FReadLn(), Chr( 13 ), "" ) PROCEDURE FT_FGotop() - s_TheHandle:Gotop() + s_oFileBase:Gotop() RETURN PROCEDURE FT_FSKIP( n ) - s_TheHandle:Skip( n ) + s_oFileBase:Skip( n ) RETURN PROCEDURE FT_MKDIR( cDir ) diff --git a/harbour/utils/hbmake/Makefile b/harbour/utils/hbmake/Makefile index 2dbcdd7c67..2aa9ac062a 100644 --- a/harbour/utils/hbmake/Makefile +++ b/harbour/utils/hbmake/Makefile @@ -15,14 +15,14 @@ PRG_SOURCES=\ fclass1.prg \ ffile1.prg \ ft_funcs.prg \ - radios.prg \ pickarry.prg \ pickfile.prg \ prb_stak.prg \ C_SOURCES=\ + hbmfrdln.c \ + hbmgauge.c \ hbmlang.c \ - readline.c \ PRG_MAIN=hbmake.prg diff --git a/harbour/utils/hbmake/bld_b32.bat b/harbour/utils/hbmake/bld_b32.bat index 3dfa4f584c..3d6bf39a24 100644 --- a/harbour/utils/hbmake/bld_b32.bat +++ b/harbour/utils/hbmake/bld_b32.bat @@ -25,8 +25,9 @@ echo pickfile.c >> build.tmp echo prb_stak.c >> build.tmp echo tmake.c >> build.tmp +echo hbmfrdln.c >> build.tmp +echo hbmgauge.c >> build.tmp echo hbmlang.c >> build.tmp -echo readline.c >> build.tmp echo hbdebug.lib >> build.tmp echo hbvm.lib >> build.tmp diff --git a/harbour/utils/hbmake/bld_vc.bat b/harbour/utils/hbmake/bld_vc.bat index 903f858904..e34f33a5b3 100644 --- a/harbour/utils/hbmake/bld_vc.bat +++ b/harbour/utils/hbmake/bld_vc.bat @@ -13,7 +13,7 @@ rem ..\..\bin\harbour /n prb_stak /i..\..\include ..\..\bin\harbour /n tmake /i..\..\include -cl -D_CRT_SECURE_NO_DEPRECATE -nologo -O2 -TP -W3 -I..\..\include hbmake.c fclass1.c ffile1.c ft_funcs.c hbmutils.c pickarry.c pickfile.c prb_stak.c tmake.c hbmlang.c readline.c /link /subsystem:CONSOLE /LIBPATH:..\..\lib hbcpage.lib hbdebug.lib hbvm.lib hbrtl.lib gtwin.lib hblang.lib hbrdd.lib hbmacro.lib hbpp.lib rddntx.lib rddcdx.lib rddfpt.lib hbsix.lib hbcommon.lib hbpcre.lib hbzlib.lib user32.lib winspool.lib +cl -D_CRT_SECURE_NO_DEPRECATE -nologo -O2 -TP -W3 -I..\..\include hbmake.c fclass1.c ffile1.c ft_funcs.c hbmutils.c pickarry.c pickfile.c prb_stak.c tmake.c hbmfrdln.c hbmgauge.c hbmlang.c /link /subsystem:CONSOLE /LIBPATH:..\..\lib hbcpage.lib hbdebug.lib hbvm.lib hbrtl.lib gtwin.lib hblang.lib hbrdd.lib hbmacro.lib hbpp.lib rddntx.lib rddcdx.lib rddfpt.lib hbsix.lib hbcommon.lib hbpcre.lib hbzlib.lib user32.lib winspool.lib del *.obj @@ -26,3 +26,4 @@ del pickarry.c del pickfile.c del prb_stak.c del tmake.c + diff --git a/harbour/utils/hbmake/fclass1.prg b/harbour/utils/hbmake/fclass1.prg index 0d23d6e9b7..2bb45cc9b3 100644 --- a/harbour/utils/hbmake/fclass1.prg +++ b/harbour/utils/hbmake/fclass1.prg @@ -4,7 +4,7 @@ /* * Harbour Project source code: - * fclass.prg Fileman class for hbdoc + * Fileman class for hbdoc * * Copyright 2000 Luiz Rafael Culik * www - http://www.harbour-project.org @@ -367,5 +367,7 @@ METHOD openfile( cFile, nMethod ) CLASS FileMan cPath := STRTRAN( cFile, cFileName, "" ) ::addItem( nFileHandle, cFileName, cPath ) ENDIF + ::nHan := nFileHandle -RETURN nFileHandle + + RETURN nFileHandle diff --git a/harbour/utils/hbmake/ffile1.prg b/harbour/utils/hbmake/ffile1.prg index 5e864e4d7f..b03d7ce741 100644 --- a/harbour/utils/hbmake/ffile1.prg +++ b/harbour/utils/hbmake/ffile1.prg @@ -4,7 +4,7 @@ /* * Harbour Project source code: - * ffile1.prg Filebase class for hbdoc + * Filebase class for hbdoc * * Copyright 2000 Luiz Rafael Culik * www - http://www.harbour-project.org @@ -178,7 +178,7 @@ METHOD fgoBottom() CLASS FileBase RETURN Self -/* Method: close() +/* Method: closefile() Params: N/A Returns: Self Purpose: To close the file @@ -376,27 +376,6 @@ METHOD goBottom() CLASS FileBase RETURN Self -/* Method: close() - Params: N/A - Returns: Self - Purpose: To close the file -*/ - -/* Not declared in class creation, which means the super version is used. */ -#ifdef BUG - METHOD FCLOSE() CLASS FileBase - - IF Self:noDosError() .AND. Self:nDosHandle > 0 - FCLOSE( Self:nDosHandle ) - Self:nLastDosMessage := FERROR() - Self:delItem( Self:nDosHandle ) - Self:lAtTop := Self:lAtBottom := .F. - Self:nPosition := 0 - ENDIF - - RETURN Self -#endif - /* Method: write() Params: Returns: Self @@ -422,68 +401,6 @@ METHOD WRITE( cChar ) CLASS FileBase RETURN Self -/* Method: getBuffer( ) - Params: Logical toggle for direction - Returns: - Purpose: To return the number of bytes either forward or backward from - the present file pointer position in which the next CRLF char - appears. If is a logical false (.F.) value, them - the operation will go in reverse order; otherwise, it will go - in a forward direction. The default value is a logical true - (.T.) value. -*/ - -/* Class declaration send message BuffGet to BufferGet. */ -#ifdef BUG - METHOD Buffget( lForward ) CLASS FileBase - - LOCAL cBuffer // as char - LOCAL nLocation // as int - LOCAL nRead // as int - LOCAL lWithCRLF := .F. // as logical - - DEFAULT lForward TO .T. - - IF !lForward - - nRead := FSEEK( Self:nDosHandle, ; - - ( iif( ::nposition < pBUFFER_LENGTH, ; - ::nposition, ; - pBUFFER_LENGTH ) ), ; - 1 ) // rewind backwards - - cBuffer := SPACE( ::nposition - nRead ) - FREAD( Self:nDosHandle, @cBuffer, ( ::nposition - nRead ) ) - - IF RIGHT( cBuffer, 2 ) == hb_OSNewLine() // with line already - cBuffer := LEFT( cBuffer, LEN( cBuffer ) - 2 ) - lWithCRLF := .T. - ENDIF - nLocation := LEN( cBuffer ) - ( RAT( hb_OSNewLine(), cBuffer ) ) - - ELSE - cBuffer := SPACE( pBUFFER_LENGTH ) - nRead := FREAD( Self:nDosHandle, @cBuffer, pBUFFER_LENGTH ) - FSEEK( Self:nDosHandle, - ( iif( nRead < pBUFFER_LENGTH, nRead, ; - pBUFFER_LENGTH ) ), 1 ) // Rewind - - // Now, parse the string. and file - - nLocation := AT( hb_OSNewLine(), cBuffer ) - - // Now, if there is NO CRLF in the buffer and if the value of the - // number of bytes read is less than the buffer length, then we - // have an end of file condition. - IF nLocation == 0 .AND. ( nRead < pBUFFER_LENGTH ) - // If so, then set the appropriate flags accordingly. - ::lAtBottom := .T. - ::lAtTop := .F. - ENDIF - ENDIF - - RETURN nLocation -#endif - /* Method: appendLine( Character line to append Returns: Self @@ -597,7 +514,7 @@ METHOD GOTO( nValue ) CLASS FileBase ENDIF ENDIF -RETURN nCount + RETURN nCount METHOD BufferGet( lForward ) CLASS FileBase @@ -645,4 +562,4 @@ METHOD BufferGet( lForward ) CLASS FileBase ENDIF ENDIF -RETURN nLocation + RETURN nLocation diff --git a/harbour/utils/hbmake/ft_funcs.prg b/harbour/utils/hbmake/ft_funcs.prg index b39dc550f1..b846be2e8f 100644 --- a/harbour/utils/hbmake/ft_funcs.prg +++ b/harbour/utils/hbmake/ft_funcs.prg @@ -4,7 +4,7 @@ /* * Harbour Project source code: - * ft_funcs.prg File support Functions For hbdoc + * File support Functions For hbdoc * * Copyright 2000 Luiz Rafael Culik * www - http://www.harbour-project.org @@ -55,7 +55,7 @@ #include "fileio.ch" #include "inkey.ch" -STATIC s_TheHandle +STATIC s_oFileBase /**** * FT_FUSE( cFile, nMode ) ---> nHandle @@ -63,34 +63,33 @@ STATIC s_TheHandle */ FUNCTION FT_FUSE( cFile, nMode ) - DEFAULT cFile TO s_TheHandle:closefile() - - IF cFile != NIL - - s_TheHandle := FileBase():new( cFile ) + IF cFile == NIL + s_oFileBase:closefile() + ELSE + s_oFileBase := FileBase():new( cFile ) IF nMode != NIL - s_TheHandle:nOpenMode := nMode + s_oFileBase:nOpenMode := nMode ENDIF - s_TheHandle:open() + s_oFileBase:open() ENDIF - RETURN s_TheHandle:nHan + RETURN s_oFileBase:nHan -FUNCTION ft_FEOF() - RETURN s_TheHandle:lAtBottom +FUNCTION FT_FEOF() + RETURN s_oFileBase:lAtBottom FUNCTION FReadLn() - RETURN s_TheHandle:retrieve() + RETURN s_oFileBase:retrieve() FUNCTION FT_FReadLn() RETURN StrTran( FReadLn(), Chr( 13 ), "" ) PROCEDURE FT_FGotop() - s_TheHandle:Gotop() + s_oFileBase:Gotop() RETURN PROCEDURE FT_FSKIP( n ) - s_TheHandle:Skip( n ) + s_oFileBase:Skip( n ) RETURN PROCEDURE FT_MKDIR( cDir ) diff --git a/harbour/utils/hbmake/hbmake.prg b/harbour/utils/hbmake/hbmake.prg index dce38452ca..67f68a9760 100644 --- a/harbour/utils/hbmake/hbmake.prg +++ b/harbour/utils/hbmake/hbmake.prg @@ -4,7 +4,7 @@ /* * xHarbour Project source code: - * hbmake.prg xHarbour make utility main file + * xHarbour make utility main file * * Copyright 2000-2007 Luiz Rafael Culik * www - http://www.xharbour.org diff --git a/harbour/utils/hbmake/readline.c b/harbour/utils/hbmake/hbmfrdln.c similarity index 94% rename from harbour/utils/hbmake/readline.c rename to harbour/utils/hbmake/hbmfrdln.c index 31fc21e565..9cfba691d2 100644 --- a/harbour/utils/hbmake/readline.c +++ b/harbour/utils/hbmake/hbmfrdln.c @@ -54,7 +54,6 @@ #include "hbapi.h" #include "hbapifs.h" -#include "hb_io.h" #include "hbset.h" #include "hbapiitm.h" #include "hbapierr.h" @@ -174,7 +173,6 @@ BYTE * hb_fsReadLine( FHANDLE hFileHandle, LONG *plBuffLen, char ** Term, int * HB_FUNC( HB_FREADLINE ) { PHB_ITEM pTerm1; - PHB_ITEM Opt = hb_itemNew( NULL ); FHANDLE hFileHandle = (FHANDLE) hb_parnl( 1 ); char ** Term; BYTE * pBuffer; @@ -194,7 +192,7 @@ HB_FUNC( HB_FREADLINE ) if( ISARRAY( 3 ) ) { pTerm1 = hb_param( 3, HB_IT_ARRAY ); - iTerms = (int) hb_arrayLen(pTerm1); + iTerms = (int) hb_arrayLen( pTerm1 ); if( iTerms <= 0 ) { @@ -207,13 +205,10 @@ HB_FUNC( HB_FREADLINE ) Term = (char**) hb_xgrab( sizeof(char*) * iTerms ); iTermSizes = (int *) hb_xgrab( sizeof(int) * iTerms ); - hb_itemClear( Opt ); - for(i=0;i + * www - http://www.harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + */ + +#include "hbapi.h" +#include "hbapiitm.h" +#include "hbapigt.h" + +/* Box array definitions */ +#define B_TOP 1 +#define B_LEFT 2 +#define B_BOTTOM 3 +#define B_RIGHT 4 +#define B_BACKCOLOR 5 +#define B_BARCOLOR 6 +#define B_DISPLAYNUM 8 +#define B_BARCHAR 7 +#define B_PERCENT 9 +#define B_LEN B_PERCENT + +#define B_BOXLINES "ÚÄ¿³ÙÄÀ³" + +static void hb_gaugeUpdate( PHB_ITEM pArray, float fPercent ) +{ + int iCenter = ( ( hb_arrayGetNL( pArray, B_RIGHT ) - hb_arrayGetNL( pArray, B_LEFT ) ) / 2 ) + 1; + int iRatio = hb_arrayGetNL( pArray, B_RIGHT ) - hb_arrayGetNL( pArray, B_LEFT ) - 1; + int iRow; + int iCols; + int iMax; + char szOldColor[ HB_CLRSTR_LEN ]; + char * szStr = " "; + char szPct[ 5 ]; + + hb_gtGetColorStr( szOldColor ); + hb_gtSetColorStr( hb_arrayGetCPtr( pArray, B_BARCOLOR ) ); + + fPercent = ( fPercent < 0 ? 0 : ( fPercent > 1 ? 1 : fPercent ) ); + iCols = (int) (fPercent * iRatio); + + if( hb_arrayGetL( pArray, B_DISPLAYNUM ) ) + { + snprintf( szPct, sizeof( szPct ), "%3.0f%%", fPercent * 100 ); + hb_gtWriteAt( (USHORT) hb_arrayGetNL( pArray, B_TOP ), + (USHORT) iCenter + 2, (BYTE *) szPct, 4 ); + } + + hb_gtBox( hb_arrayGetNI( pArray, B_TOP ) + 1, hb_arrayGetNI( pArray, B_LEFT ) + 1, + hb_arrayGetNI( pArray, B_BOTTOM ) - 1, hb_arrayGetNI( pArray, B_RIGHT ) - 1, + ( BYTE * ) szStr ); + + iMax = hb_arrayGetNL( pArray, B_BOTTOM ) - hb_arrayGetNL( pArray, B_TOP ) - 1; + for( iRow = 1; iRow <= iMax; iRow++ ) + { + hb_gtRepChar( (USHORT) (iRow + hb_arrayGetNL( pArray, B_TOP )), + (USHORT) (hb_arrayGetNL( pArray, B_LEFT ) + 1), + ( BYTE ) * hb_arrayGetCPtr( pArray, B_BARCHAR ), iCols ); + } + + hb_gtSetColorStr( szOldColor ); +} + +/* GaugeNew( , , , , + [], + [], + [] ) --> aGauge +*/ +HB_FUNC( GAUGENEW ) +{ + PHB_ITEM pReturn = hb_itemArrayNew( B_LEN ); /* Create array */ + + hb_arraySetNL( pReturn, B_TOP, hb_parni( B_TOP ) ); + hb_arraySetNL( pReturn, B_LEFT, hb_parni( B_LEFT ) ); + hb_arraySetNL( pReturn, B_BOTTOM, + ISNUM( B_BOTTOM ) ? + ( hb_parni( B_BOTTOM ) < hb_parni( B_TOP ) + 2 ? + hb_parni( B_TOP ) + 2 : hb_parni( B_BOTTOM ) ) : 0 ); + hb_arraySetNL( pReturn, B_RIGHT, + ISNUM( B_RIGHT ) ? + ( hb_parni( B_RIGHT ) < hb_parni( B_LEFT ) + 4 ? + hb_parni( B_LEFT ) + 4 : hb_parni( B_RIGHT ) ) : 0 ); + hb_arraySetC( pReturn, B_BACKCOLOR, ISCHAR( B_BACKCOLOR ) ? hb_parc( B_BACKCOLOR ) : "W/N" ); + hb_arraySetC( pReturn, B_BARCOLOR, ISCHAR( B_BARCOLOR ) ? hb_parc( B_BARCOLOR ) : "W+/N" ); + hb_arraySetL( pReturn, B_DISPLAYNUM, + !( ISNUM( B_RIGHT ) && + ISNUM( B_LEFT ) && + ( hb_parni( B_RIGHT ) < hb_parni( B_LEFT ) + 9 ) ) ); + hb_arraySetC( pReturn, B_BARCHAR, ISCHAR( B_BARCHAR ) ? hb_parc( B_BARCHAR ) : "\xdb" ); + hb_arraySetNL( pReturn, B_PERCENT, 0 ); + + hb_itemReturnRelease( pReturn ); +} + +/* GaugeDisplay( aGauge ) --> aGauge +*/ +HB_FUNC( GAUGEDISPLAY ) +{ + PHB_ITEM pArray = hb_param( 1, HB_IT_ARRAY ); + + if( pArray ) + { + int iCenter = ( ( hb_arrayGetNL( pArray, B_RIGHT ) - hb_arrayGetNL( pArray, B_LEFT ) ) / 2 ) + 1; + char szOldColor[ HB_CLRSTR_LEN ]; + char * szStr = " "; + + hb_gtGetColorStr( szOldColor ); + hb_gtSetColorStr( hb_arrayGetCPtr( pArray, B_BACKCOLOR ) ); + + hb_gtBox( (SHORT) hb_arrayGetNL( pArray, B_TOP ), + (SHORT) hb_arrayGetNL( pArray, B_LEFT ), + (SHORT) hb_arrayGetNL( pArray, B_BOTTOM ), + (SHORT) hb_arrayGetNL( pArray, B_RIGHT ), + (BYTE *) szStr ); + + hb_gtBox( (SHORT) hb_arrayGetNL( pArray, B_TOP ), + (SHORT) hb_arrayGetNL( pArray, B_LEFT ), + (SHORT) hb_arrayGetNL( pArray, B_BOTTOM ), + (SHORT) hb_arrayGetNL( pArray, B_RIGHT ), + (BYTE *) B_BOXLINES ); + + if( hb_arrayGetL( pArray, B_DISPLAYNUM ) ) + hb_gtWriteAt( (USHORT) hb_arrayGetNL( pArray, B_TOP ), + iCenter, ( BYTE * ) "[ ]", 8 ); + + hb_gtSetColorStr( szOldColor ); + + hb_gaugeUpdate( pArray, ( float ) hb_arrayGetND( pArray, B_PERCENT ) ); + + hb_itemReturn( pArray ); + } +} + +/* GaugeUpdate( aGauge, nPercent ) --> aGauge +*/ +HB_FUNC( GAUGEUPDATE ) +{ + PHB_ITEM pArray = hb_param( 1, HB_IT_ARRAY ); + + if( pArray ) + { + hb_gaugeUpdate( pArray, ISNUM( 2 ) ? ( float ) hb_parnd( 2 ) : 0 ); + + hb_itemReturn( pArray ); + } +} diff --git a/harbour/utils/hbmake/hbmlang.c b/harbour/utils/hbmake/hbmlang.c index 03aae9183f..e964af26f2 100644 --- a/harbour/utils/hbmake/hbmlang.c +++ b/harbour/utils/hbmake/hbmlang.c @@ -4,7 +4,7 @@ /* * Harbour Project source code: - * hbmlang.c Hbmake detection language function + * Hbmake detection language function * * Copyright 2000,2001 Luiz Rafael Culik * www - http://www.harbour-project.org @@ -53,8 +53,6 @@ #define HB_OS_WIN_32_USED #include "hbapi.h" -#include "hbapiitm.h" -#include "hbapigt.h" HB_FUNC( GETUSERLANG ) { @@ -62,207 +60,56 @@ HB_FUNC( GETUSERLANG ) #if defined(HB_OS_WIN_32) && (!defined(__RSXNT__)) && (!defined(__CYGWIN__)) + switch( GetSystemDefaultLangID() ) { - LANGID pLang = GetSystemDefaultLangID(); + case 0x0416: + case 0x0816: + lRet = 1; + break; - switch(pLang) { + case 0x0409: + case 0x0809: + case 0x0C09: + case 0x1009: + case 0x1409: + case 0x1809: + case 0x1C09: + case 0x2009: + case 0x2409: + case 0x2809: + case 0x2C09: + lRet = 2; + break; - case 0x0416: - case 0x0816: - { - lRet=1; - } + case 0x040A: + case 0x080A: + case 0x0C0A: + case 0x100A: + case 0x140A: + case 0x180A: + case 0x1C0A: + case 0x200A: + case 0x240A: + case 0x280A: + case 0x2C0A: + case 0x300A: + case 0x340A: + case 0x380A: + case 0x3C0A: + case 0x400A: + case 0x440A: + case 0x480A: + case 0x4C0A: + case 0x500A: + lRet = 3; + break; - break; - - case 0x0409 : - case 0x0809 : - case 0x0c09 : - case 0x1009 : - case 0x1409 : - case 0x1809 : - case 0x1c09 : - case 0x2009 : - case 0x2409 : - case 0x2809 : - case 0x2c09 : - { - lRet=2; - } - - break; - - case 0x040a : - case 0x080a : - case 0x0c0a : - case 0x100a : - case 0x140a : - case 0x180a : - case 0x1c0a : - case 0x200a : - case 0x240a : - case 0x280a : - case 0x2c0a : - case 0x300a : - case 0x340a : - case 0x380a : - case 0x3c0a : - case 0x400a : - case 0x440a : - case 0x480a : - case 0x4c0a : - case 0x500a : - { - lRet = 3; - } - break; - - default: - - lRet = 2; - break; - } + default: + lRet = 2; + break; } #else lRet = 2; #endif hb_retnl( lRet ); } - - -/* Box array definitions */ -#define B_TOP 1 -#define B_LEFT 2 -#define B_BOTTOM 3 -#define B_RIGHT 4 -#define B_BACKCOLOR 5 -#define B_BARCOLOR 6 -#define B_DISPLAYNUM 8 -#define B_BARCHAR 7 -#define B_PERCENT 9 -#define B_LEN B_PERCENT - -#define B_BOXLINES "ÚÄ¿³ÙÄÀ³" - -static void hb_gaugeUpdate( PHB_ITEM pArray, float fPercent ) -{ - int iCenter = ( ( hb_arrayGetNL( pArray, B_RIGHT ) - hb_arrayGetNL( pArray, B_LEFT ) ) / 2 ) + 1; - int iRatio = hb_arrayGetNL( pArray, B_RIGHT ) - hb_arrayGetNL( pArray, B_LEFT ) - 1; - int iRow; - int iCols; - int iMax; - char szOldColor[ HB_CLRSTR_LEN ]; - char * szStr = " "; - char szPct[ 5 ]; - - hb_gtGetColorStr( szOldColor ); - hb_gtSetColorStr( hb_arrayGetCPtr( pArray, B_BARCOLOR ) ); - - fPercent = ( fPercent < 0 ? 0 : ( fPercent > 1 ? 1 : fPercent ) ); - iCols = (int) (fPercent * iRatio); - - if( hb_arrayGetL( pArray, B_DISPLAYNUM ) ) - { - snprintf( szPct, sizeof( szPct ), "%3.0f%%", fPercent * 100 ); - hb_gtWriteAt( (USHORT) hb_arrayGetNL( pArray, B_TOP ), - (USHORT) iCenter + 2, (BYTE *) szPct, 4 ); - } - - hb_gtBox( hb_arrayGetNI( pArray, B_TOP ) + 1, hb_arrayGetNI( pArray, B_LEFT ) + 1, - hb_arrayGetNI( pArray, B_BOTTOM ) - 1, hb_arrayGetNI( pArray, B_RIGHT ) - 1, - ( BYTE * ) szStr ); - - iMax = hb_arrayGetNL( pArray, B_BOTTOM ) - hb_arrayGetNL( pArray, B_TOP ) - 1; - for( iRow = 1; iRow <= iMax; iRow++ ) - { - hb_gtRepChar( (USHORT) (iRow + hb_arrayGetNL( pArray, B_TOP )), - (USHORT) (hb_arrayGetNL( pArray, B_LEFT ) + 1), - ( BYTE ) * hb_arrayGetCPtr( pArray, B_BARCHAR ), iCols ); - } - - hb_gtSetColorStr( szOldColor ); -} - -/* GaugeNew( , , , , - [], - [], - [] ) --> aGauge -*/ -HB_FUNC( GAUGENEW ) -{ - PHB_ITEM pReturn = hb_itemArrayNew( B_LEN ); /* Create array */ - - hb_arraySetNL( pReturn, B_TOP, hb_parni( B_TOP ) ); - hb_arraySetNL( pReturn, B_LEFT, hb_parni( B_LEFT ) ); - hb_arraySetNL( pReturn, B_BOTTOM, - ISNUM( B_BOTTOM ) ? - ( hb_parni( B_BOTTOM ) < hb_parni( B_TOP ) + 2 ? - hb_parni( B_TOP ) + 2 : hb_parni( B_BOTTOM ) ) : 0 ); - hb_arraySetNL( pReturn, B_RIGHT, - ISNUM( B_RIGHT ) ? - ( hb_parni( B_RIGHT ) < hb_parni( B_LEFT ) + 4 ? - hb_parni( B_LEFT ) + 4 : hb_parni( B_RIGHT ) ) : 0 ); - hb_arraySetC( pReturn, B_BACKCOLOR, ISCHAR( B_BACKCOLOR ) ? hb_parc( B_BACKCOLOR ) : "W/N" ); - hb_arraySetC( pReturn, B_BARCOLOR, ISCHAR( B_BARCOLOR ) ? hb_parc( B_BARCOLOR ) : "W+/N" ); - hb_arraySetL( pReturn, B_DISPLAYNUM, - !( ISNUM( B_RIGHT ) && - ISNUM( B_LEFT ) && - ( hb_parni( B_RIGHT ) < hb_parni( B_LEFT ) + 9 ) ) ); - hb_arraySetC( pReturn, B_BARCHAR, ISCHAR( B_BARCHAR ) ? hb_parc( B_BARCHAR ) : "\xdb" ); - hb_arraySetNL( pReturn, B_PERCENT, 0 ); - - hb_itemReturnRelease( pReturn ); -} - -/* GaugeDisplay( aGauge ) --> aGauge -*/ -HB_FUNC( GAUGEDISPLAY ) -{ - PHB_ITEM pArray = hb_param( 1, HB_IT_ARRAY ); - - if( pArray ) - { - int iCenter = ( ( hb_arrayGetNL( pArray, B_RIGHT ) - hb_arrayGetNL( pArray, B_LEFT ) ) / 2 ) + 1; - char szOldColor[ HB_CLRSTR_LEN ]; - char * szStr = " "; - - hb_gtGetColorStr( szOldColor ); - hb_gtSetColorStr( hb_arrayGetCPtr( pArray, B_BACKCOLOR ) ); - - hb_gtBox( (SHORT) hb_arrayGetNL( pArray, B_TOP ), - (SHORT) hb_arrayGetNL( pArray, B_LEFT ), - (SHORT) hb_arrayGetNL( pArray, B_BOTTOM ), - (SHORT) hb_arrayGetNL( pArray, B_RIGHT ), - (BYTE *) szStr ); - - hb_gtBox( (SHORT) hb_arrayGetNL( pArray, B_TOP ), - (SHORT) hb_arrayGetNL( pArray, B_LEFT ), - (SHORT) hb_arrayGetNL( pArray, B_BOTTOM ), - (SHORT) hb_arrayGetNL( pArray, B_RIGHT ), - (BYTE *) B_BOXLINES ); - - if( hb_arrayGetL( pArray, B_DISPLAYNUM ) ) - hb_gtWriteAt( (USHORT) hb_arrayGetNL( pArray, B_TOP ), - iCenter, ( BYTE * ) "[ ]", 8 ); - - hb_gtSetColorStr( szOldColor ); - - hb_gaugeUpdate( pArray, ( float ) hb_arrayGetND( pArray, B_PERCENT ) ); - - hb_itemReturn( pArray ); - } -} - -/* GaugeUpdate( aGauge, nPercent ) --> aGauge -*/ -HB_FUNC( GAUGEUPDATE ) -{ - PHB_ITEM pArray = hb_param( 1, HB_IT_ARRAY ); - - if( pArray ) - { - hb_gaugeUpdate( pArray, ISNUM( 2 ) ? ( float ) hb_parnd( 2 ) : 0 ); - - hb_itemReturn( pArray ); - } -} diff --git a/harbour/utils/hbmake/hbmutils.prg b/harbour/utils/hbmake/hbmutils.prg index c88901d560..fde4f0d4b9 100644 --- a/harbour/utils/hbmake/hbmutils.prg +++ b/harbour/utils/hbmake/hbmutils.prg @@ -4,7 +4,7 @@ /* * xHarbour Project source code: - * hbmutils.prg - utils for hbmake. + * Utils for hbmake. * * Copyright 2000,2001,2002,2003,2004 Luiz Rafael Culik * www - http://www.xharbour.org diff --git a/harbour/utils/hbmake/pickarry.prg b/harbour/utils/hbmake/pickarry.prg index ee07151475..d04e61bc2b 100644 --- a/harbour/utils/hbmake/pickarry.prg +++ b/harbour/utils/hbmake/pickarry.prg @@ -4,7 +4,7 @@ /* * xHarbour Project source code: - * hbmake.prg xHarbour make utility main file + * xHarbour make utility main file * * Copyright 2000,2001,2002,2003,2004 Luiz Rafael Culik * www - http://www.xharbour.org diff --git a/harbour/utils/hbmake/pickfile.prg b/harbour/utils/hbmake/pickfile.prg index 537887ab78..3687ceb82c 100644 --- a/harbour/utils/hbmake/pickfile.prg +++ b/harbour/utils/hbmake/pickfile.prg @@ -74,15 +74,6 @@ #include "box.ch" #include "directry.ch" -*+-------------------------------------------------------------------- -*+ -*+ Function pickfile() -*+ -*+ Called from ( makelink.prg ) 1 - function makelink() -*+ ( pbinit.prg ) 1 - procedure pbinit() -*+ -*+-------------------------------------------------------------------- -*+ function pickfile( cFileSpec ) local cOldString := savescreen( 8, 19, 16, 61 ) diff --git a/harbour/utils/hbmake/tmake.prg b/harbour/utils/hbmake/tmake.prg index 6588e6a1f2..d2333d3eb0 100644 --- a/harbour/utils/hbmake/tmake.prg +++ b/harbour/utils/hbmake/tmake.prg @@ -4,7 +4,7 @@ /* * Harbour Project source code: - * tmake.prg file generator for hbmake + * File generator for hbmake * * Copyright 2000 Luiz Rafael Culik * www - http://www.harbour-project.org @@ -52,93 +52,90 @@ #include "hbclass.ch" #include "common.ch" -STATIC lEof := .F. +STATIC s_lEof := .F. -*------------ CLASS THBMAKE -*------------ -EXPORT: -DATA aDefines Init {} -DATA aBuildOrder Init {} -DATA aCommands Init {} -DATA aMacros Init {} -DATA aPrgs Init {} -DATA aExtLibs Init {} -DATA aCs Init {} -DATA aObjs Init {} -DATA aObjsc Init {} -DATA aRes Init {} -DATA nLinkHandle -DATA cLinkcomm Init "" -DATA lCompress Init .F. -DATA lForce Init .F. -DATA lLinux Init .F. -DATA szProject Init "" -DATA lLibrary Init .F. -DATA lInstallLib Init .F. -DATA lIgnoreErrors Init .F. -DATA lExtended Init .T. -DATA lOs2 Init .F. -DATA lRecurse Init .F. -DATA lEditMode Init .F. -DATA aDir -DATA aLangMessages init {} -DATA cDefLang -DATA lFwh init .F. -DATA lxFwh init .F. -DATA lCw init .F. -DATA lMini init .F. -DATA lHwgui init .F. -DATA lGui Init .F. -DATA lGtwvt init .F. -DATA lGtwvw init .F. -DATA lMWvW init .F. -DATA lXWT init .F. -DATA lxHGtk init .F. -DATA lWhoo init .F. -DATA lWhat32 init .F. -DATA lRddAds init .F. -DATA lMediator init .F. -DATA cMakefile init "" -DATA lExternalLib init .F. -DATA cObj init "" -DATA cUserdef init "" -DATA cUserInclude init "" -DATA cUserLib init "" -DATA lGenppo init .f. -DATA lCompMod init .f. -DATA lAutomemvar init .f. -DATA lvarismemvar init .f. -DATA ldebug init .f. -DATA lSupressline init .f. -DATA StartPath init "" -DATA cFmc init "" -DATA cMedpath init "" -DATA cAppLibName init "" -DATA cOs init "" -DATA cTopfile init "" -DATA aOut init {} -DATA cFilesToAdd init 5 -DATA lMT init .F. -DATA cWarningLevel init 0 -DATA cTopModule init "" -DATA cRes init "" -DATA cMacro init "" -DATA lGenCsource init .f. // Ath added 31-05-2006 -DATA cShell init "" -DATA cEditor init "" + EXPORTED: -METHOD New() -METHOD ReadMakefile(cFile) -METHOD ReplaceMacros( cMacros ) -METHOD FindMacro( cMacro, cRead ) + DATA aDefines Init {} + DATA aBuildOrder Init {} + DATA aCommands Init {} + DATA aMacros Init {} + DATA aPrgs Init {} + DATA aExtLibs Init {} + DATA aCs Init {} + DATA aObjs Init {} + DATA aObjsc Init {} + DATA aRes Init {} + DATA nLinkHandle + DATA cLinkcomm Init "" + DATA lCompress Init .F. + DATA lForce Init .F. + DATA lLinux Init .F. + DATA szProject Init "" + DATA lLibrary Init .F. + DATA lInstallLib Init .F. + DATA lIgnoreErrors Init .F. + DATA lExtended Init .T. + DATA lOs2 Init .F. + DATA lRecurse Init .F. + DATA lEditMode Init .F. + DATA aDir + DATA aLangMessages init {} + DATA cDefLang + DATA lFwh init .F. + DATA lxFwh init .F. + DATA lCw init .F. + DATA lMini init .F. + DATA lHwgui init .F. + DATA lGui Init .F. + DATA lGtwvt init .F. + DATA lGtwvw init .F. + DATA lMWvW init .F. + DATA lXWT init .F. + DATA lxHGtk init .F. + DATA lWhoo init .F. + DATA lWhat32 init .F. + DATA lRddAds init .F. + DATA lMediator init .F. + DATA cMakefile init "" + DATA lExternalLib init .F. + DATA cObj init "" + DATA cUserdef init "" + DATA cUserInclude init "" + DATA cUserLib init "" + DATA lGenppo init .F. + DATA lCompMod init .F. + DATA lAutomemvar init .F. + DATA lvarismemvar init .F. + DATA ldebug init .F. + DATA lSupressline init .F. + DATA StartPath init "" + DATA cFmc init "" + DATA cMedpath init "" + DATA cAppLibName init "" + DATA cOs init "" + DATA cTopfile init "" + DATA aOut init {} + DATA cFilesToAdd init 5 + DATA lMT init .F. + DATA cWarningLevel init 0 + DATA cTopModule init "" + DATA cRes init "" + DATA cMacro init "" + DATA lGenCsource init .F. // Ath added 31-05-2006 + DATA cShell init "" + DATA cEditor init "" + + METHOD New() + METHOD ReadMakefile(cFile) + METHOD ReplaceMacros( cMacros ) + METHOD FindMacro( cMacro, cRead ) ENDCLASS -*------------------------- METHOD New() CLASS THbMake -*------------------------- ::cObj := "obj" + Space( 40 ) ::cUserdef := Space( 200 ) @@ -149,384 +146,375 @@ METHOD New() CLASS THbMake ::cTopModule := Space( 20 ) ::cEditor := "" -return self + return self -*--------------------------------------- METHOD ReadMakefile(cFile) CLASS THbMake -*--------------------------------------- - LOCAL cBuffer := {} - LOCAL cMacro := ::cMacro - LOCAL cDep := "#DEPENDS" - LOCAL cOpt := "#OPTS" - LOCAL cCom := "#COMMANDS" - LOCAL cBuild := "#BUILD" - LOCAL cTemp := "" - LOCAL cTemp1 := "" - LOCAL aTemp := {} - LOCAL lMacrosec := .f. - LOCAL lBuildSec := .f. - LOCAL lComSec := .f. - LOCAL aTemp1 := {} - LOCAL cCfg := "" - LOCAL lCfgFound := .F. - LOCAL aTempCFiles := {} - Local nHandle - Local cObjitem - Local cRes := "" - Local cItem - LOCAL lLinux := At( "linux", Lower( Os() ) ) > 0 - Local lExtended := .T., szProject - LOCAL lPrgObjRule := .F. + LOCAL cBuffer := {} + LOCAL cMacro := ::cMacro + LOCAL cDep := "#DEPENDS" + LOCAL cOpt := "#OPTS" + LOCAL cCom := "#COMMANDS" + LOCAL cBuild := "#BUILD" + LOCAL cTemp := "" + LOCAL cTemp1 := "" + LOCAL aTemp := {} + LOCAL lMacrosec := .F. + LOCAL lBuildSec := .F. + LOCAL lComSec := .F. + LOCAL aTemp1 := {} + LOCAL cCfg := "" + LOCAL lCfgFound := .F. + LOCAL aTempCFiles := {} + Local nHandle + Local cObjitem + Local cRes := "" + Local cItem + LOCAL lLinux := At( "linux", Lower( Os() ) ) > 0 + Local lExtended := .T., szProject + LOCAL lPrgObjRule := .F. - nHandle := FT_FUSE( cFile ) - IF nHandle < 0 - RETURN self - ENDIF - cBuffer := Trim( Substr( ReadLN( @lEof ), 1 ) ) - ::lLibrary :=.f. + nHandle := FT_FUSE( cFile ) + IF nHandle < 0 + RETURN self + ENDIF + cBuffer := Trim( ReadLN( @s_lEof ) ) + ::lLibrary :=.F. - WHILE !leof + WHILE !s_lEof - IF At( cMacro, cBuffer ) > 0 - lMacroSec := .T. - lBuildSec := .f. - lComSec := .f. - ELSEIF At( cBuild, cBuffer ) > 0 - lMacroSec := .f. - lBuildSec := .T. - lComSec := .f. - ELSEIF At( cCom, cBuffer ) > 0 - lBuildSec := .f. - lComSec := .t. - lMacroSec := .f. - ELSE - ? "Invalid Make File" - Fclose( nHandle ) - RETURN Nil - ENDIF + IF At( cMacro, cBuffer ) > 0 + lMacroSec := .T. + lBuildSec := .F. + lComSec := .F. + ELSEIF At( cBuild, cBuffer ) > 0 + lMacroSec := .F. + lBuildSec := .T. + lComSec := .F. + ELSEIF At( cCom, cBuffer ) > 0 + lBuildSec := .F. + lComSec := .T. + lMacroSec := .F. + ELSE + ? "Invalid Make File" + Fclose( nHandle ) + RETURN Nil + ENDIF - cTemp := Trim( Substr( ReadLN( @lEof ), 1 ) ) + cTemp := Trim( ReadLN( @s_lEof ) ) - IF At( "//", ctemp ) > 0 - - WHILE At( "//", ctemp ) > 0 - ctemp := Strtran( ctemp, " //", "" ) - cTemp += Trim( Substr( ReadLN( @lEof ), 1 ) ) - ENDDO + IF At( "//", ctemp ) > 0 + WHILE At( "//", ctemp ) > 0 ctemp := Strtran( ctemp, " //", "" ) - ENDIF + cTemp += Trim( ReadLN( @s_lEof ) ) + ENDDO - aTemp := ListasArray2( Alltrim( cTemp ), "=" ) + ctemp := Strtran( ctemp, " //", "" ) + ENDIF - IF lmacrosec + aTemp := ListasArray2( Alltrim( cTemp ), "=" ) - IF Alltrim( Left( ctemp, 7 ) ) <> "!ifndef" .and. Alltrim( Left( ctemp, 6 ) ) <> "!endif" .and. Alltrim( Left( ctemp, 7 ) ) <> "!iffile" .and. Alltrim( Left( ctemp, 7 ) ) <> "!stdout" .and. Alltrim( Left( ctemp, 6 ) ) <> "!ifdef" + IF lmacrosec - IF Len( aTemp ) > 1 + IF Alltrim( Left( ctemp, 7 ) ) <> "!ifndef" .and. Alltrim( Left( ctemp, 6 ) ) <> "!endif" .and. Alltrim( Left( ctemp, 7 ) ) <> "!iffile" .and. Alltrim( Left( ctemp, 7 ) ) <> "!stdout" .and. Alltrim( Left( ctemp, 6 ) ) <> "!ifdef" - IF At( "$", aTemp[ 2 ] ) > 0 - Aadd( ::aMacros, { aTemp[ 1 ], ::replacemacros( aTemp[ 2 ] ) } ) - ELSE - Aadd( ::aMacros, { aTemp[ 1 ], aTemp[ 2 ] } ) -// tracelog(aTemp[ 1 ], aTemp[ 2 ]) - ENDIF - ENDIF + IF Len( aTemp ) > 1 - IF aTemp[ 1 ] == "PROJECT" - ::cAppLibName := aTemp[ 2 ] - ::cAppLibName := strtran(::cAppLibName ,"$(PR)","") - ::cAppLibName := strtran(::cAppLibName ,".exe","") - ::cAppLibName := strtran(::cAppLibName ,".lib","") - ENDIF + IF At( "$", aTemp[ 2 ] ) > 0 + Aadd( ::aMacros, { aTemp[ 1 ], ::replacemacros( aTemp[ 2 ] ) } ) + ELSE + Aadd( ::aMacros, { aTemp[ 1 ], aTemp[ 2 ] } ) +// tracelog(aTemp[ 1 ], aTemp[ 2 ]) + ENDIF + ENDIF - IF aTemp[ 1 ] == "LIBFILES" - ::lRddAds := "rddads" $ aTemp[ 2 ] - ENDIF + IF aTemp[ 1 ] == "PROJECT" + ::cAppLibName := aTemp[ 2 ] + ::cAppLibName := strtran(::cAppLibName ,"$(PR)","") + ::cAppLibName := strtran(::cAppLibName ,".exe","") + ::cAppLibName := strtran(::cAppLibName ,".lib","") + ENDIF - IF aTemp[ 1 ] == "C4W" - ::cFMC := aTemp[2] - ::lCw := .t. - endif + IF aTemp[ 1 ] == "LIBFILES" + ::lRddAds := "rddads" $ aTemp[ 2 ] + ENDIF - IF aTemp[ 1 ] == "FWH" - ::cFMC := aTemp[2] - ::lFwh := .t. - endif + IF aTemp[ 1 ] == "C4W" + ::cFMC := aTemp[2] + ::lCw := .T. + endif - IF aTemp[ 1 ] == "MINIGUI" - ::cFMC := aTemp[2] - ::lmini := .t. - endif + IF aTemp[ 1 ] == "FWH" + ::cFMC := aTemp[2] + ::lFwh := .T. + endif - IF aTemp[ 1 ] == "HWGUI" - ::cFMC := aTemp[2] - ::lHwGui := .t. - endif + IF aTemp[ 1 ] == "MINIGUI" + ::cFMC := aTemp[2] + ::lmini := .T. + endif - IF aTemp[ 1 ] == "GTWVT" - ::cFMC := "" - ::lGtwvt := .t. - endif + IF aTemp[ 1 ] == "HWGUI" + ::cFMC := aTemp[2] + ::lHwGui := .T. + endif - IF aTemp[ 1 ] == "GTWVW" - ::cFMC := "" - ::lGtwvw := .t. - endif - IF aTemp[ 1 ] == "MWVW" - ::cFMC := "" - ::lGtwvw := .t. - ::lMWvW := .t. - endif + IF aTemp[ 1 ] == "GTWVT" + ::cFMC := "" + ::lGtwvt := .T. + endif - IF aTemp[ 1 ] == "XWT" - ::cFMC := "" - ::lXWT := .t. - endif + IF aTemp[ 1 ] == "GTWVW" + ::cFMC := "" + ::lGtwvw := .T. + endif + IF aTemp[ 1 ] == "MWVW" + ::cFMC := "" + ::lGtwvw := .T. + ::lMWvW := .T. + endif - IF aTemp[ 1 ] == "WHOO" - ::cFMC := aTemp[2] - ::lWhoo := .t. - endif + IF aTemp[ 1 ] == "XWT" + ::cFMC := "" + ::lXWT := .T. + endif - IF aTemp[ 1 ] == "WHAT32" - ::cFMC := aTemp[2] - ::lWhat32 := .t. - endif + IF aTemp[ 1 ] == "WHOO" + ::cFMC := aTemp[2] + ::lWhoo := .T. + endif - IF aTemp[ 1 ] == "XHGTK" - ::cFMC := aTemp[2] - ::lxHGtk := .t. - endif + IF aTemp[ 1 ] == "WHAT32" + ::cFMC := aTemp[2] + ::lWhat32 := .T. + endif - IF aTemp[ 1 ] == "MEDIATOR" - ::cMedpath := aTemp[2] - ::lmEDIATOR := .t. - endif + IF aTemp[ 1 ] == "XHGTK" + ::cFMC := aTemp[2] + ::lxHGtk := .T. + endif - IF aTemp[ 1 ] == "COMPRESS" - ::lCompress := "YES" $ aTemp[ 2 ] - endif + IF aTemp[ 1 ] == "MEDIATOR" + ::cMedpath := aTemp[2] + ::lmEDIATOR := .T. + endif - IF aTemp[ 1 ] == "SHELL" - ::cShell := aTemp[ 2 ] - endif + IF aTemp[ 1 ] == "COMPRESS" + ::lCompress := "YES" $ aTemp[ 2 ] + endif - IF aTemp[ 1 ] == "EXTERNALLIB" - ::lExternalLib := "YES" $ aTemp[ 2 ] - endif + IF aTemp[ 1 ] == "SHELL" + ::cShell := aTemp[ 2 ] + endif - IF aTemp[ 1 ] == "XFWH" - ::lxFwh := "YES" $ aTemp[ 2 ] - endif + IF aTemp[ 1 ] == "EXTERNALLIB" + ::lExternalLib := "YES" $ aTemp[ 2 ] + endif - IF aTemp[ 1 ] == "FILESTOADD" - ::cFilesToAdd := Val( aTemp[ 2 ] ) - endif + IF aTemp[ 1 ] == "XFWH" + ::lxFwh := "YES" $ aTemp[ 2 ] + endif - IF aTemp[ 1 ] == "MT" - ::lMt := "YES" $ aTemp[ 2 ] - endif + IF aTemp[ 1 ] == "FILESTOADD" + ::cFilesToAdd := Val( aTemp[ 2 ] ) + endif - IF aTemp[ 1 ] == "GUI" - ::lGUI := "YES" $ aTemp[ 2 ] - endif + IF aTemp[ 1 ] == "MT" + ::lMt := "YES" $ aTemp[ 2 ] + endif - IF aTemp[ 1 ] == "WARNINGLEVEL" - ::cWarningLevel := Val( aTemp[ 2 ] ) - endif + IF aTemp[ 1 ] == "GUI" + ::lGUI := "YES" $ aTemp[ 2 ] + endif - IF aTemp[ 1 ] == "OBJFILES" - cObjitem := substr( atemp[ 2 ],1,at(")",atemp[ 2 ])) - - ::cObj := ::replacemacros(cObjItem) - ::aObjs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) - ENDIF + IF aTemp[ 1 ] == "WARNINGLEVEL" + ::cWarningLevel := Val( aTemp[ 2 ] ) + endif - IF aTemp[ 1 ] == "OBJCFILES" + IF aTemp[ 1 ] == "OBJFILES" + cObjitem := Left( atemp[ 2 ], at(")",atemp[ 2 ])) + + ::cObj := ::replacemacros(cObjItem) + ::aObjs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) + ENDIF - aTemp1 := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) + IF aTemp[ 1 ] == "OBJCFILES" - IF Len( atemp1 ) == 1 + aTemp1 := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) - IF !Empty( atemp[ 1 ] ) - ::aObjsC := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) - ENDIF - ELSE - ::aObjsC := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) - ENDIF - ENDIF + IF Len( atemp1 ) == 1 - IF aTemp[ 1 ] == "PRGFILES" - ::aPrgs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) - lExtended := .T. - ENDIF + IF !Empty( atemp[ 1 ] ) + ::aObjsC := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) + ENDIF + ELSE + ::aObjsC := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) + ENDIF + ENDIF - IF aTemp[ 1 ] == "PRGFILE" - ::aPrgs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) - ENDIF + IF aTemp[ 1 ] == "PRGFILES" + ::aPrgs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) + lExtended := .T. + ENDIF - IF atemp[ 1 ] == "CFILES" + IF aTemp[ 1 ] == "PRGFILE" + ::aPrgs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) + ENDIF - IF lExtended + IF atemp[ 1 ] == "CFILES" - aTempCFiles := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) + IF lExtended - IF ( Len( aTempCFiles ) == 1 ) + aTempCFiles := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) - IF !Empty( aTempCFiles[ 1 ] ) - ::aCs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) - ENDIF - ELSE - ::aCs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) - ENDIF - ELSE + IF ( Len( aTempCFiles ) == 1 ) + + IF !Empty( aTempCFiles[ 1 ] ) ::aCs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) - ENDIF - ENDIF - - IF aTemp[ 1 ] == "EXTLIBFILES" - ::aExtLibs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) - ENDIF - - - IF atemp[ 1 ] == "RESFILES" - - ::aRes := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) - - FOR EACH cItem in :: aRes - ::cRes += cItem +" " - NEXT - ENDIF - - IF aTemp[ 1 ] == "RECURSE" - ::lRecurse := AT( "YES" , aTemp[ 2 ] ) > 0 - ENDIF - - IF aTemp[ 1 ] == "LIBRARY" - ::lLibrary := AT( "YES", aTemp[ 2 ] ) > 0 - ENDIF - - IF aTemp[ 1 ] == "INSTALLLIB" - ::lInstallLib := AT( "YES", aTemp[ 2 ] ) > 0 - ENDIF - - IF aTemp[ 1 ] == "HARBOURFLAGS" - - ::lGenppo := AT( "-p" , aTemp[ 2 ] ) > 0 - ::lCompMod := AT( "-m" , aTemp[ 2 ] ) > 0 - ::lAutomemvar := AT( "-a" , aTemp[ 2 ] ) > 0 - ::lvarismemvar := AT( "-v" , aTemp[ 2 ] ) > 0 - ::ldebug := AT( "-b" , aTemp[ 2 ] ) > 0 - ::lSupressline := AT( "-l" , aTemp[ 2 ] ) > 0 - aTemp[ 2 ] := strtran(aTemp[ 2 ],"-p","") - aTemp[ 2 ] := strtran(aTemp[ 2 ],"-m","") - aTemp[ 2 ] := strtran(aTemp[ 2 ],"-a","") - aTemp[ 2 ] := strtran(aTemp[ 2 ],"-v","") - aTemp[ 2 ] := strtran(aTemp[ 2 ],"-b","") - aTemp[ 2 ] := strtran(aTemp[ 2 ],"-l","") - aTemp[ 2 ] := Alltrim( aTemp[ 2 ] ) - - endif - - IF aTemp[ 1 ] == "USERDEFINE" - ::cUserDef := aTemp[ 2 ] - endif - - IF aTemp[ 1 ] == "USERINCLUDE" - ::cUserInclude := aTemp[ 2 ] - endif - - IF aTemp[ 1 ] == "USERLIBS" - ::cUserLib := aTemp[ 2 ] - endif - - IF aTemp[ 1 ] == "TOPMODULE" - ::cTopModule := aTemp[ 2 ] - endif - - IF aTemp[ 1 ] == "EDITOR" - ::cEditor := aTemp[ 2 ] - endif + ENDIF + ELSE + ::aCs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) + ENDIF + ELSE + ::aCs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) + ENDIF ENDIF - ENDIF - IF lbuildSec - szProject := cTemp - ::aBuildOrder := Listasarray2( cTemp, ":" ) - ENDIF - - IF lComSec // Ath added 31-05-2006 - - IF lPrgObjRule - ::lGenCsource := "-go3" $ LOWER(cTemp) - lPrgObjRule := .F. + IF aTemp[ 1 ] == "EXTLIBFILES" + ::aExtLibs := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) ENDIF - IF aTemp[ 1 ] == ".prg.obj:" .OR. aTemp[ 1 ] == ".prg.o:" - lPrgObjRule := .T. + + + IF atemp[ 1 ] == "RESFILES" + + ::aRes := Listasarray2( ::replacemacros( atemp[ 2 ] ), " " ) + + FOR EACH cItem in :: aRes + ::cRes += cItem +" " + NEXT ENDIF - ENDIF // end Ath added 31-05-2006 + + IF aTemp[ 1 ] == "RECURSE" + ::lRecurse := AT( "YES" , aTemp[ 2 ] ) > 0 + ENDIF + + IF aTemp[ 1 ] == "LIBRARY" + ::lLibrary := AT( "YES", aTemp[ 2 ] ) > 0 + ENDIF + + IF aTemp[ 1 ] == "INSTALLLIB" + ::lInstallLib := AT( "YES", aTemp[ 2 ] ) > 0 + ENDIF + + IF aTemp[ 1 ] == "HARBOURFLAGS" + + ::lGenppo := AT( "-p" , aTemp[ 2 ] ) > 0 + ::lCompMod := AT( "-m" , aTemp[ 2 ] ) > 0 + ::lAutomemvar := AT( "-a" , aTemp[ 2 ] ) > 0 + ::lvarismemvar := AT( "-v" , aTemp[ 2 ] ) > 0 + ::ldebug := AT( "-b" , aTemp[ 2 ] ) > 0 + ::lSupressline := AT( "-l" , aTemp[ 2 ] ) > 0 + aTemp[ 2 ] := strtran(aTemp[ 2 ],"-p","") + aTemp[ 2 ] := strtran(aTemp[ 2 ],"-m","") + aTemp[ 2 ] := strtran(aTemp[ 2 ],"-a","") + aTemp[ 2 ] := strtran(aTemp[ 2 ],"-v","") + aTemp[ 2 ] := strtran(aTemp[ 2 ],"-b","") + aTemp[ 2 ] := strtran(aTemp[ 2 ],"-l","") + aTemp[ 2 ] := Alltrim( aTemp[ 2 ] ) + + endif + + IF aTemp[ 1 ] == "USERDEFINE" + ::cUserDef := aTemp[ 2 ] + endif - IF cTemp = "#BUILD" - cBuffer := cTemp - ELSEIF cTemp == "#COMMANDS" - cbuffer := cTemp - ENDIF - ENDDO + IF aTemp[ 1 ] == "USERINCLUDE" + ::cUserInclude := aTemp[ 2 ] + endif - qout( nhandle) - Fclose( nHandle ) -RETURN self + IF aTemp[ 1 ] == "USERLIBS" + ::cUserLib := aTemp[ 2 ] + endif + + IF aTemp[ 1 ] == "TOPMODULE" + ::cTopModule := aTemp[ 2 ] + endif + + IF aTemp[ 1 ] == "EDITOR" + ::cEditor := aTemp[ 2 ] + endif + ENDIF + ENDIF + + IF lbuildSec + szProject := cTemp + ::aBuildOrder := Listasarray2( cTemp, ":" ) + ENDIF + + IF lComSec // Ath added 31-05-2006 + + IF lPrgObjRule + ::lGenCsource := "-go3" $ LOWER(cTemp) + lPrgObjRule := .F. + ENDIF + IF aTemp[ 1 ] == ".prg.obj:" .OR. aTemp[ 1 ] == ".prg.o:" + lPrgObjRule := .T. + ENDIF + ENDIF // end Ath added 31-05-2006 + + IF cTemp == "#BUILD" .OR. cTemp == "#COMMANDS" + cBuffer := cTemp + ENDIF + ENDDO + + qout( nhandle) + Fclose( nHandle ) + RETURN self -*-------------------------------------------- METHOD ReplaceMacros( cMacros ) CLass THBMAKE -*-------------------------------------------- - LOCAL nCount := 0 - LOCAL aTempMacros := {} - LOCAL aLocalMacros := {} + LOCAL nCount := 0 + LOCAL aTempMacros := {} + LOCAL aLocalMacros := {} - aTempMacros := Listasarray2( cMacros, " " ) + aTempMacros := Listasarray2( cMacros, " " ) - AEval( aTempMacros, { | xMacro | iif( At( "$", xMacro ) > 0, ; - iif( At( ";", xMacro ) > 0, ( aLocalMacros := Listasarray2( xMacro, ";" ), ; - Aeval( aLocalMacros, { | x | ::FindMacro( x, @cMacros ) } ) ), ; - ::FindMacro( xMacro, @cMacros ) ), ) } ) + AEval( aTempMacros, { | xMacro | iif( At( "$", xMacro ) > 0, ; + iif( At( ";", xMacro ) > 0, ( aLocalMacros := Listasarray2( xMacro, ";" ), ; + Aeval( aLocalMacros, { | x | ::FindMacro( x, @cMacros ) } ) ), ; + ::FindMacro( xMacro, @cMacros ) ), ) } ) -RETURN cMacros + RETURN cMacros -*---------------------------------------------- METHOD FindMacro( cMacro, cRead ) CLASS THBMAKE -*---------------------------------------------- + LOCAL nPos + LOCAL cTemp + LOCAL aLocalMacros := {} - LOCAL nPos - LOCAL cTemp - LOCAL aLocalMacros := {} + cMacro := Left( cMacro, At( ")", cMacro ) ) - cMacro := Substr( cMacro, 1, At( ")", cMacro ) ) + IF At( "-", cMacro ) > 0 + cMacro := Substr( cMacro, 3 ) + ENDIF - IF At( "-", cMacro ) > 0 - cMacro := Substr( cMacro, 3 ) - ENDIF + IF At( ";", cMacro ) > 0 + cMacro := Substr( cMacro, At( ";", cMacro ) + 1 ) + ENDIF - IF At( ";", cMacro ) > 0 - cMacro := Substr( cMacro, At( ";", cMacro ) + 1 ) - ENDIF + nPos := Ascan( ::aMacros, { | x | "$(" + Alltrim( x[ 1 ] ) + ")" == cMacro } ) - nPos := Ascan( ::aMacros, { | x | "$(" + Alltrim( x[ 1 ] ) + ")" == cMacro } ) + IF nPos == 0 - IF nPos == 0 + cTemp := Strtran( cMacro, "$(", "" ) + cTemp := Strtran( cTemp, ")", "" ) - cTemp := Strtran( cMacro, "$(", "" ) - cTemp := Strtran( cTemp, ")", "" ) + IF !Empty( cTemp ) + cRead := Alltrim( Strtran( cRead, cMacro, Gete( cTemp ) ) ) + ENDIF + ELSE + cRead := Alltrim( Strtran( cRead, cMacro, ::aMacros[ nPos, 2 ] ) ) + ENDIF - IF !Empty( cTemp ) - cRead := Alltrim( Strtran( cRead, cMacro, Gete( cTemp ) ) ) - ENDIF - ELSE - cRead := Alltrim( Strtran( cRead, cMacro, ::aMacros[ nPos, 2 ] ) ) - ENDIF - -RETURN cRead + RETURN cRead