From aef588d0279e82e58b7fde1ffb8f4cd56aafcdfb Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Mon, 20 Oct 2008 06:47:13 +0000 Subject: [PATCH] 2008-10-20 08:39 UTC+0200 Viktor Szakats (harbour.01 syenar hu) * contrib/hbdbgfx/Makefile * contrib/hbdbgfx/common.mak + contrib/hbdbgfx/make_gcc.sh * contrib/hbdbgfx/make_b32.bat * contrib/hbdbgfx/make_vc.bat * contrib/hbdbgfx/hbdbgfx.h * contrib/hbdbgfx/dbgfxc.c * contrib/hbdbgfx/dbgfx.prg * contrib/hbdbgfx/sprintf.prg * Some cleanups and fixes. ; TOFIX: hb_ToOutDebug() for WinCE/Unicode. Maybe adding other platforms. --- harbour/ChangeLog | 14 + harbour/contrib/hbdbgfx/Makefile | 14 +- harbour/contrib/hbdbgfx/common.mak | 38 +-- harbour/contrib/hbdbgfx/dbgfx.prg | 241 ++++++++-------- harbour/contrib/hbdbgfx/dbgfxc.c | 278 +++++++++--------- harbour/contrib/hbdbgfx/hbdbgfx.h | 136 ++++----- harbour/contrib/hbdbgfx/make_b32.bat | 2 +- harbour/contrib/hbdbgfx/make_gcc.sh | 7 + harbour/contrib/hbdbgfx/make_vc.bat | 2 +- harbour/contrib/hbdbgfx/sprintf.prg | 413 ++++++++++++++------------- 10 files changed, 577 insertions(+), 568 deletions(-) create mode 100755 harbour/contrib/hbdbgfx/make_gcc.sh diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 68573e3768..42421ed7b3 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,20 @@ 2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2008-10-20 08:39 UTC+0200 Viktor Szakats (harbour.01 syenar hu) + * contrib/hbdbgfx/Makefile + * contrib/hbdbgfx/common.mak + + contrib/hbdbgfx/make_gcc.sh + * contrib/hbdbgfx/make_b32.bat + * contrib/hbdbgfx/make_vc.bat + * contrib/hbdbgfx/hbdbgfx.h + * contrib/hbdbgfx/dbgfxc.c + * contrib/hbdbgfx/dbgfx.prg + * contrib/hbdbgfx/sprintf.prg + * Some cleanups and fixes. + ; TOFIX: hb_ToOutDebug() for WinCE/Unicode. + Maybe adding other platforms. + 2008-10-19 20:18 UTC-0500 Teo Fonrouge (teo/at/windtelsoft/dot/com) * source/debug/dbgbrwsr.prg ! Fixed out of range error ( BASE/1133 ) when scrolling out the source diff --git a/harbour/contrib/hbdbgfx/Makefile b/harbour/contrib/hbdbgfx/Makefile index 39636b284b..cb5e98a0c8 100644 --- a/harbour/contrib/hbdbgfx/Makefile +++ b/harbour/contrib/hbdbgfx/Makefile @@ -7,22 +7,18 @@ ROOT = ../../ C_SOURCES=\ dbgfxc.c \ +C_HEADERS=\ + hbdbgfx.h \ + PRG_SOURCES=\ - dbgfx.prg \ - sprinf.prg \ + dbgfx.prg \ + sprintf.prg \ LIBNAME=hbdbgfx -ifeq ($(HB_COMPILER),mingw32) - CFLAGS := $(CFLAGS) -I/usr/include -else - CFLAGS := $(CFLAGS) -I/usr/include -endif - include $(TOP)$(ROOT)config/header.cf INSTALL_RULE_HEADERS := $(INSTALL_RULE) include $(TOP)$(ROOT)config/lib.cf install:: $(INSTALL_RULE_HEADERS) - diff --git a/harbour/contrib/hbdbgfx/common.mak b/harbour/contrib/hbdbgfx/common.mak index a87ccbdafb..7662b4c16d 100644 --- a/harbour/contrib/hbdbgfx/common.mak +++ b/harbour/contrib/hbdbgfx/common.mak @@ -1,19 +1,19 @@ -# -# $Id: common.mak 7935 2007-11-10 11:31:17Z vszakats $ -# - -LIBNAME = hbdbgfx - -LIB_PATH = $(LIB_DIR)\$(LIBNAME)$(LIBEXT) - -# -# LIB rules -# - -LIB_OBJS = \ - $(OBJ_DIR)\dbgfxc$(OBJEXT) \ - $(OBJ_DIR)\dbgfx$(OBJEXT) \ - $(OBJ_DIR)\sprintf$(OBJEXT) \ - -all: \ - $(LIB_PATH) \ +# +# $Id$ +# + +LIBNAME = hbdbgfx + +LIB_PATH = $(LIB_DIR)\$(LIBNAME)$(LIBEXT) + +# +# LIB rules +# + +LIB_OBJS = \ + $(OBJ_DIR)\dbgfxc$(OBJEXT) \ + $(OBJ_DIR)\dbgfx$(OBJEXT) \ + $(OBJ_DIR)\sprintf$(OBJEXT) \ + +all: \ + $(LIB_PATH) \ diff --git a/harbour/contrib/hbdbgfx/dbgfx.prg b/harbour/contrib/hbdbgfx/dbgfx.prg index fc8cfe8ce1..1bde6c0a83 100644 --- a/harbour/contrib/hbdbgfx/dbgfx.prg +++ b/harbour/contrib/hbdbgfx/dbgfx.prg @@ -1,122 +1,119 @@ - -/* - * $Id: gd.prg 7887 2007-10-30 18:25:37Z lf_sfnet $ - */ - -/* - * Harbour Project source code: - * Debug Functions - * - * Copyright 2007-2008 Francesco Saverio Giudice - * 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 "common.ch" -#include "fileio.ch" - -REQUEST HB_SPRINTF - -STATIC s_lToOutDebug := TRUE -STATIC s_lToLogFile := TRUE -STATIC s_lEmptyLogFile := TRUE - -FUNCTION HB_ToOutDebugOnOff( lOnOff ) - LOCAL lOld := s_lToOutDebug - IF HB_ISLOGICAL( lOnOff ) - s_lToOutDebug := lOnOff - ENDIF -RETURN lOld - -PROCEDURE HB_ToOutDebug( ... ) - IF s_lToOutDebug - hb_OutDebug( hb_sprintf( ... ) ) - ENDIF -RETURN - -FUNCTION HB_ToLogFileOnOff( lOnOff ) - LOCAL lOld := s_lToLogFile - IF HB_ISLOGICAL( lOnOff ) - s_lToLogFile := lOnOff - ENDIF -RETURN lOld - -FUNCTION HB_EmptyLogFileOnOff( lOnOff ) - LOCAL lOld := s_lEmptyLogFile - IF HB_ISLOGICAL( lOnOff ) - s_lEmptyLogFile := lOnOff - ENDIF -RETURN lOld - -PROCEDURE HB_ToLogFile( cLogFile, ... ) - LOCAL nHandle - - IF !s_lToLogFile - RETURN - ENDIF - - DEFAULT cLogFile TO "logfile.log" - - IF cLogFile <> NIL - - IF !s_lEmptyLogFile .AND. FILE( cLogFile ) - nHandle := FOpen( cLogFile, FO_READWRITE + FO_SHARED) - ELSE - nHandle := FCreate( cLogFile ) - s_lEmptyLogFile := FALSE - // After I have create it I have to close and open in shared way - IF Ferror() == 0 .AND. nHandle > 0 - FClose( nHandle ) - nHandle := FOpen( cLogFile, FO_READWRITE + FO_SHARED) - ENDIF - ENDIF - - // Writing - IF nHandle > 0 - FSeek( nHandle, 0, FS_END ) - FWrite( nHandle, hb_sprintf( ... ) ) - FWrite( nHandle, HB_OSNewLine() ) - FClose( nHandle ) - ENDIF - ENDIF -RETURN - + +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * Debug Functions + * + * Copyright 2007-2008 Francesco Saverio Giudice + * 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 "common.ch" +#include "fileio.ch" + +STATIC s_lToOutDebug := TRUE +STATIC s_lToLogFile := TRUE +STATIC s_lEmptyLogFile := TRUE + +FUNCTION HB_ToOutDebugOnOff( lOnOff ) + LOCAL lOld := s_lToOutDebug + IF hb_isLogical( lOnOff ) + s_lToOutDebug := lOnOff + ENDIF +RETURN lOld + +PROCEDURE HB_ToOutDebug( ... ) + IF s_lToOutDebug + hb_OutDebug( hb_sprintf( ... ) ) + ENDIF +RETURN + +FUNCTION HB_ToLogFileOnOff( lOnOff ) + LOCAL lOld := s_lToLogFile + IF hb_isLogical( lOnOff ) + s_lToLogFile := lOnOff + ENDIF +RETURN lOld + +FUNCTION HB_EmptyLogFileOnOff( lOnOff ) + LOCAL lOld := s_lEmptyLogFile + IF hb_isLogical( lOnOff ) + s_lEmptyLogFile := lOnOff + ENDIF +RETURN lOld + +PROCEDURE HB_ToLogFile( cLogFile, ... ) + LOCAL nHandle + + IF !s_lToLogFile + RETURN + ENDIF + + DEFAULT cLogFile TO "logfile.log" + + IF cLogFile != NIL + + IF !s_lEmptyLogFile .AND. hb_FileExists( cLogFile ) + nHandle := FOpen( cLogFile, FO_READWRITE + FO_SHARED) + ELSE + nHandle := FCreate( cLogFile ) + s_lEmptyLogFile := FALSE + // After I have create it I have to close and open in shared way + IF Ferror() == 0 .AND. nHandle > 0 + FClose( nHandle ) + nHandle := FOpen( cLogFile, FO_READWRITE + FO_SHARED) + ENDIF + ENDIF + + // Writing + IF nHandle > 0 + FSeek( nHandle, 0, FS_END ) + FWrite( nHandle, hb_sprintf( ... ) ) + FWrite( nHandle, HB_OSNewLine() ) + FClose( nHandle ) + ENDIF + ENDIF +RETURN diff --git a/harbour/contrib/hbdbgfx/dbgfxc.c b/harbour/contrib/hbdbgfx/dbgfxc.c index e1ef302db0..35bcd9a212 100644 --- a/harbour/contrib/hbdbgfx/dbgfxc.c +++ b/harbour/contrib/hbdbgfx/dbgfxc.c @@ -1,142 +1,136 @@ - -/* - * $Id: gd.prg 7887 2007-10-30 18:25:37Z lf_sfnet $ - */ - -/* - * Harbour Project source code: - * Debug Functions - * - * Copyright 2007-2008 Francesco Saverio Giudice - * 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 -#include "hbapi.h" -#include "hbapiitm.h" -#include "hbvm.h" -#include "item.api" - -static BOOL s_bToOutputDebug = TRUE; -static BOOL s_bToLogFile = TRUE; - -static BOOL s_bEmptyLogFile = TRUE; - -HB_EXPORT BOOL hb_ToOutDebugOnOff( BOOL bOnOff ) -{ - BOOL bOld = s_bToOutputDebug; - s_bToOutputDebug = bOnOff; - return ( bOld ); -} - -HB_EXPORT void hb_ToOutDebug( const char * sTraceMsg, ... ) -{ - if ( s_bToOutputDebug ) - { - char buffer[ 1024 ]; - va_list ap; - - va_start( ap, sTraceMsg ); - vsprintf( buffer, sTraceMsg, ap ); - va_end( ap ); - - OutputDebugString( buffer ); - } - -} - -HB_EXPORT BOOL hb_ToLogFileOnOff( BOOL bOnOff ) -{ - BOOL bOld = s_bToLogFile; - s_bToLogFile = bOnOff; - return ( bOld ); -} - -HB_EXPORT BOOL hb_EmptyLogFile( BOOL bOnOff ) -{ - BOOL bOld = s_bEmptyLogFile; - s_bEmptyLogFile = bOnOff; - return ( bOld ); -} - -HB_EXPORT void hb_ToLogFile( const char * sFile, const char * sTraceMsg, ... ) -{ - FILE *hFile; - - if( ! s_bToLogFile ) - { - return; - } - - if( sFile == NULL ) - { - if( s_bEmptyLogFile ) - { - s_bEmptyLogFile = FALSE; - - /* Empty the file if it exists. */ - hFile = fopen( "logfile.log", "w" ); - } - else - { - hFile = fopen( "logfile.log", "a" ); - } - } - else - { - hFile = fopen( sFile, "a" ); - } - - if( hFile ) - { - va_list ap; - - va_start( ap, sTraceMsg ); - vfprintf( hFile, sTraceMsg, ap ); - va_end( ap ); - - fclose( hFile ); - } - -} - +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * Debug Functions + * + * Copyright 2007-2008 Francesco Saverio Giudice + * 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. + * + */ + +#define HB_OS_WIN_32_USED + +#include "hbapi.h" +#include "hbapiitm.h" +#include "hbapifs.h" + +static BOOL s_bToOutputDebug = TRUE; +static BOOL s_bToLogFile = TRUE; + +static BOOL s_bEmptyLogFile = TRUE; + +HB_EXPORT BOOL hb_ToOutDebugOnOff( BOOL bOnOff ) +{ + BOOL bOld = s_bToOutputDebug; + s_bToOutputDebug = bOnOff; + return bOld; +} + +HB_EXPORT void hb_ToOutDebug( const char * sTraceMsg, ... ) +{ + if( s_bToOutputDebug ) + { +#if defined( HB_OS_WIN_32 ) + /* TOFIX: Convert to/from Unicode */ + + char buffer[ 1024 ]; + va_list ap; + + va_start( ap, sTraceMsg ); + vsnprintf( buffer, sizeof( buffer ), sTraceMsg, ap ); + va_end( ap ); + + OutputDebugString( ( LPCWSTR ) buffer ); +#endif + } +} + +HB_EXPORT BOOL hb_ToLogFileOnOff( BOOL bOnOff ) +{ + BOOL bOld = s_bToLogFile; + s_bToLogFile = bOnOff; + return bOld; +} + +HB_EXPORT BOOL hb_EmptyLogFile( BOOL bOnOff ) +{ + BOOL bOld = s_bEmptyLogFile; + s_bEmptyLogFile = bOnOff; + return bOld; +} + +HB_EXPORT void hb_ToLogFile( const char * sFile, const char * sTraceMsg, ... ) +{ + FILE * hFile; + + if( s_bToLogFile ) + { + if( sFile == NULL ) + { + if( s_bEmptyLogFile ) + { + s_bEmptyLogFile = FALSE; + + /* Empty the file if it exists. */ + hFile = hb_fopen( "logfile.log", "w" ); + } + else + hFile = hb_fopen( "logfile.log", "a" ); + } + else + hFile = hb_fopen( sFile, "a" ); + + if( hFile ) + { + va_list ap; + + va_start( ap, sTraceMsg ); + vfprintf( hFile, sTraceMsg, ap ); + va_end( ap ); + + fclose( hFile ); + } + } +} diff --git a/harbour/contrib/hbdbgfx/hbdbgfx.h b/harbour/contrib/hbdbgfx/hbdbgfx.h index d936d55dce..c46d39cd3b 100644 --- a/harbour/contrib/hbdbgfx/hbdbgfx.h +++ b/harbour/contrib/hbdbgfx/hbdbgfx.h @@ -1,68 +1,68 @@ -/* - * $Id: hbdate.h 7705 2007-09-05 14:50:23Z druzus $ - */ - -/* - * Harbour Project source code: - * Header file for Debug Functions API - * - * Copyright 2007-2008 Francesco Saverio Giudice - * 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. - * - */ - -#ifndef HB_DBGFX_H_ -#define HB_DBGFX_H_ - -#include "hbsetup.h" - -HB_EXTERN_BEGIN - -extern HB_EXPORT BOOL hb_ToOutDebugOnOff( BOOL bOnOff ); -extern HB_EXPORT void hb_ToOutDebug( const char * sTraceMsg, ... ); -extern HB_EXPORT BOOL hb_ToLogFileOnOff( BOOL bOnOff ); -extern HB_EXPORT BOOL hb_EmptyLogFile( BOOL bOnOff ); -extern HB_EXPORT void hb_ToLogFile( const char * sFile, const char * sTraceMsg, ... ); - -HB_EXTERN_END - -#endif /* HB_DBGFX_H_ */ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * Header file for Debug Functions API + * + * Copyright 2007-2008 Francesco Saverio Giudice + * 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. + * + */ + +#ifndef HB_DBGFX_H_ +#define HB_DBGFX_H_ + +#include "hbsetup.h" + +HB_EXTERN_BEGIN + +extern HB_EXPORT BOOL hb_ToOutDebugOnOff( BOOL bOnOff ); +extern HB_EXPORT void hb_ToOutDebug( const char * sTraceMsg, ... ); +extern HB_EXPORT BOOL hb_ToLogFileOnOff( BOOL bOnOff ); +extern HB_EXPORT BOOL hb_EmptyLogFile( BOOL bOnOff ); +extern HB_EXPORT void hb_ToLogFile( const char * sFile, const char * sTraceMsg, ... ); + +HB_EXTERN_END + +#endif /* HB_DBGFX_H_ */ diff --git a/harbour/contrib/hbdbgfx/make_b32.bat b/harbour/contrib/hbdbgfx/make_b32.bat index 01bf9aec3a..c484512c4c 100644 --- a/harbour/contrib/hbdbgfx/make_b32.bat +++ b/harbour/contrib/hbdbgfx/make_b32.bat @@ -1,6 +1,6 @@ @echo off rem -rem $Id: make_b32.bat 7995 2007-11-19 14:13:53Z vszakats $ +rem $Id$ rem call ..\mtpl_b32.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/harbour/contrib/hbdbgfx/make_gcc.sh b/harbour/contrib/hbdbgfx/make_gcc.sh new file mode 100755 index 0000000000..0593942308 --- /dev/null +++ b/harbour/contrib/hbdbgfx/make_gcc.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +# +# $Id$ +# + +../mtpl_gcc.sh $1 $2 $3 $4 $5 $6 $7 $8 $9 diff --git a/harbour/contrib/hbdbgfx/make_vc.bat b/harbour/contrib/hbdbgfx/make_vc.bat index f96dcc781a..4ceb9b9261 100644 --- a/harbour/contrib/hbdbgfx/make_vc.bat +++ b/harbour/contrib/hbdbgfx/make_vc.bat @@ -1,6 +1,6 @@ @echo off rem -rem $Id: make_vc.bat 7995 2007-11-19 14:13:53Z vszakats $ +rem $Id$ rem call ..\mtpl_vc.bat %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/harbour/contrib/hbdbgfx/sprintf.prg b/harbour/contrib/hbdbgfx/sprintf.prg index b9650b529e..68853b3450 100644 --- a/harbour/contrib/hbdbgfx/sprintf.prg +++ b/harbour/contrib/hbdbgfx/sprintf.prg @@ -1,206 +1,207 @@ -/* - * $Id: sprintf.prg,v 1.3 2003/12/21 02:17:39 maurifull Exp $ - */ - -/* - * xHarbour Project source code: - * hb_sprintf() function - * - * Copyright 2003 Mauricio Abre - * www - http://www.xharbour.org - * 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 "common.ch" -#include "..\xhb\hbcompat.ch" - -FUNCTION hb_sprintf(...) - LOCAL aPar, cReturn, nPar, nPos, cTok - LOCAL nLen := 0, lUnsigned := .F., l0 := .F., lSign := .F., nDec, xVal - LOCAL cString - - aPar := HB_aParams() - cReturn := "" - cString := aPar[1] - nPar := 2 - - DO WHILE !Empty( cString ) - - nPos := Len( cString ) + 1 - cTok := NIL - - IF '%' $ cString - nPos := At( '%', cString ) - cTok := '%' - ENDIF - IF '\' $ cString .AND. At( '\', cString ) < nPos - nPos := At( '\', cString ) - cTok := '\' - ENDIF - - cReturn += Left( cString, nPos - 1 ) - - DO CASE - CASE cTok == NIL - EXIT - - CASE cTok == '\' - SWITCH SubStr( cString, ++nPos, 1 ) - CASE 't' - cReturn += ' ' - EXIT - - CASE 'n' - cReturn += Chr( 13 ) - EXIT - - CASE 'r' - cReturn += Chr( 10 ) - EXIT - - DEFAULT - cReturn += cString[nPos] - EXIT - END - - CASE cTok == '%' - lUnsigned := .F. - SWITCH SubStr( cString, ++nPos, 1 ) - CASE '%' - cReturn += '%' - EXIT - - CASE '+' - cString := Left( cString, nPos - 1 ) + SubStr( cString, nPos + 1 ) - nPos := At( '%', cString ) - 1 - lSign := .T. - EXIT - - CASE '0' - cString := Left( cString, nPos - 1 ) + SubStr( cString, nPos + 1 ) - nPos := At( '%', cString ) - 1 - l0 := .T. - EXIT - - CASE '1' - CASE '2' - CASE '3' - CASE '4' - CASE '5' - CASE '6' - CASE '7' - CASE '8' - CASE '9' - nLen := Val( SubStr( cString, nPos ) ) - cTok := Left( cString, nPos - 1 ) - DO WHILE cString[nPos] $ '1234567890.' - nPos++ - ENDDO - cString := cTok + SubStr( cString, nPos ) - nPos := At( '%', cString ) - 1 - EXIT - - CASE 'u' - lUnsigned := .T. - nPos++ - - CASE 'd' - CASE 'l' - CASE 'f' - CASE 'i' - xVal := aPar[nPar++] - IF !ISNUMBER( xVal ) - xVal := 0 - ENDIF - IF nLen != 0 - IF nLen - Int( nLen ) > 0.0 - nDec := Str( nLen ) - DO WHILE Right( nDec, 1 ) == '0' - nDec := Left( nDec, Len( nDec ) - 1 ) - END - nDec := Val( SubStr( nDec, At( '.', nDec ) + 1 ) ) - ELSE - nDec := 0 - ENDIF - cTok := Str( IIF( lUnsigned, Abs( xVal ), xVal ), nLen, nDec ) - ELSE - cTok := LTrim( Str( IIF( lUnsigned, Abs( xVal ), xVal ) ) ) - ENDIF - IF l0 - IF '-' $ cTok .AND. cTok[1] != '-' - cTok := StrTran( cTok, '-', ' ' ) - cTok[1] := '-' - ENDIF - cTok := StrTran( cTok, ' ', '0' ) - l0 := .F. - ENDIF - IF lSign .AND. cTok[1] != '-' - IF nLen == 0 - cTok := '+' + cTok - ELSE - cTok[1] := '+' - ENDIF - lSign := .F. - ENDIF - nLen := 0 - cReturn += cTok - EXIT - - CASE 'c' - CASE 's' - IF nLen == 0 - nLen := Len( cStr( aPar[nPar] ) ) - END - cReturn += PadL( cStr( aPar[nPar++] ), nLen ) - nLen := 0 - l0 := .F. - lSign := .F. - EXIT - - END - ENDCASE - - cString := SubStr( cString, nPos + 1 ) - ENDDO - -RETURN cReturn \ No newline at end of file +/* + * $Id$ + */ + +/* + * xHarbour Project source code: + * hb_sprintf() function + * + * Copyright 2003 Mauricio Abre + * www - http://www.xharbour.org + * 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 "common.ch" + +FUNCTION hb_sprintf( ... ) + LOCAL aPar, cReturn, nPar, nPos, cTok + LOCAL nLen := 0, lUnsigned := .F., l0 := .F., lSign := .F., nDec, xVal + LOCAL cString + + aPar := HB_aParams() + cReturn := "" + cString := aPar[1] + nPar := 2 + + DO WHILE !Empty( cString ) + + nPos := Len( cString ) + 1 + cTok := NIL + + IF '%' $ cString + nPos := At( '%', cString ) + cTok := '%' + ENDIF + IF '\' $ cString .AND. At( '\', cString ) < nPos + nPos := At( '\', cString ) + cTok := '\' + ENDIF + + cReturn += Left( cString, nPos - 1 ) + + DO CASE + CASE cTok == NIL + EXIT + + CASE cTok == '\' + + SWITCH SubStr( cString, ++nPos, 1 ) + CASE 't' + cReturn += ' ' + EXIT + + CASE 'n' + cReturn += Chr( 13 ) + EXIT + + CASE 'r' + cReturn += Chr( 10 ) + EXIT + + OTHERWISE + cReturn += SubStr( cString, nPos, 1 ) + EXIT + ENDSWITCH + + CASE cTok == '%' + lUnsigned := .F. + + SWITCH SubStr( cString, ++nPos, 1 ) + CASE '%' + cReturn += '%' + EXIT + + CASE '+' + cString := Left( cString, nPos - 1 ) + SubStr( cString, nPos + 1 ) + nPos := At( '%', cString ) - 1 + lSign := .T. + EXIT + + CASE '0' + cString := Left( cString, nPos - 1 ) + SubStr( cString, nPos + 1 ) + nPos := At( '%', cString ) - 1 + l0 := .T. + EXIT + + CASE '1' + CASE '2' + CASE '3' + CASE '4' + CASE '5' + CASE '6' + CASE '7' + CASE '8' + CASE '9' + nLen := Val( SubStr( cString, nPos ) ) + cTok := Left( cString, nPos - 1 ) + DO WHILE SubStr( cString, nPos, 1 ) $ '1234567890.' + nPos++ + ENDDO + cString := cTok + SubStr( cString, nPos ) + nPos := At( '%', cString ) - 1 + EXIT + + CASE 'u' + lUnsigned := .T. + nPos++ + + CASE 'd' + CASE 'l' + CASE 'f' + CASE 'i' + xVal := aPar[nPar++] + IF !ISNUMBER( xVal ) + xVal := 0 + ENDIF + IF nLen != 0 + IF nLen - Int( nLen ) > 0.0 + nDec := Str( nLen ) + DO WHILE Right( nDec, 1 ) == '0' + nDec := Left( nDec, Len( nDec ) - 1 ) + END + nDec := Val( SubStr( nDec, At( '.', nDec ) + 1 ) ) + ELSE + nDec := 0 + ENDIF + cTok := Str( IIF( lUnsigned, Abs( xVal ), xVal ), nLen, nDec ) + ELSE + cTok := hb_NToS( IIF( lUnsigned, Abs( xVal ), xVal ) ) + ENDIF + IF l0 + IF '-' $ cTok .AND. Left( cTok, 1 ) != '-' + cTok := StrTran( cTok, '-', ' ' ) + cTok := '-' + SubStr( cTok, 2 ) + ENDIF + cTok := StrTran( cTok, ' ', '0' ) + l0 := .F. + ENDIF + IF lSign .AND. Left( cTok, 1 ) != '-' + IF nLen == 0 + cTok := '+' + cTok + ELSE + cTok := '+' + SubStr( cTok, 2 ) + ENDIF + lSign := .F. + ENDIF + nLen := 0 + cReturn += cTok + EXIT + + CASE 'c' + CASE 's' + IF nLen == 0 + nLen := Len( hb_cStr( aPar[nPar] ) ) + ENDIF + cReturn += PadL( hb_cStr( aPar[nPar++] ), nLen ) + nLen := 0 + l0 := .F. + lSign := .F. + EXIT + + ENDSWITCH + ENDCASE + + cString := SubStr( cString, nPos + 1 ) + ENDDO + +RETURN cReturn