diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 3107bccd8d..16747b37bf 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,36 @@ +19990704-16:20 Ryszard Glab + +* include/init.h + * changed definitions of HB_INIT_SYMBOLS_* and HB_CALL_ON_STARTUP_* + to make it more consistent. The symbol table should be defined now: + HB_INIT_SYMBOLS_BEGIN( moduleName__InitSymbols ) + { "FIRST", FS_PUBLIC, HB_FIRST, 0}, + /* more symbols */ + HB_INIT_SYMBOLS_END( moduleName__InitSymbols ); + +* source/compiler/harbour.y + * changed generated C code to support new HB_INIT_SYMBOLS_* macros + +* source/rtl/arrays.c +* source/rtl/classes.c +* source/rtl/console.c +* source/rtl/dates.c +* source/rtl/descend.c +* source/rtl/dir.c +* source/rtl/environ.c +* source/rtl/files.c +* source/rtl/hardcr.c +* source/rtl/math.c +* source/rtl/mtran.c +* source/rtl/set.c +* source/rtl/strings.c +* source/rtl/transfrm.c + * changed to use he new definition of HB_INIT_SYMBOLS_* and + HB_CALL_ON_STARTUP_* macros + +* tests/working/box.prg + * changed "BOX.CH" to lowercase (Linux is case-sensitive OS) + 19990702-09:08 Alexander Kresin * source\hbpp\hbpp.c * Changed logic for fixing some problems diff --git a/harbour/include/init.h b/harbour/include/init.h index 07950d837c..7d00e1e5a5 100644 --- a/harbour/include/init.h +++ b/harbour/include/init.h @@ -12,81 +12,89 @@ void ProcessSymbols( SYMBOL * pSymbols, WORD wSymbols ); #ifdef HARBOUR_STRICT_ANSI_C #define HB_INIT_SYMBOLS_BEGIN( func ) \ +static SYMBOL symbols[] = { + +#define HB_INIT_SYMBOLS_END( func ) }; }; \ void func( void ) \ { \ ProcessSymbols( symbols, sizeof( symbols ) / sizeof( SYMBOL ) ); \ } -#define HB_INIT_SYMBOLS_END( func ) -#define HB_CALL_ON_STARTUP_BEGIN( func ) func( void ) -#define HB_CALL_ON_STARTUP_END( func ) +#define HB_CALL_ON_STARTUP_BEGIN( func ) func( void ) { +#define HB_CALL_ON_STARTUP_END( func ) } #else /* HARBOUR_STRICT_ANSI_C */ #ifdef __GNUC__ #define HB_INIT_SYMBOLS_BEGIN( func ) \ + static SYMBOL symbols[] = { + +#define HB_INIT_SYMBOLS_END( func ) }; \ static void __attribute__ ((constructor)) func( void ) \ { \ ProcessSymbols( symbols, sizeof( symbols ) / sizeof( SYMBOL ) ); \ } -#define HB_INIT_SYMBOLS_END( func ) + #define HB_CALL_ON_STARTUP_BEGIN( func ) \ - static void __attribute__ ((constructor)) func( void ) + static void __attribute__ ((constructor)) func( void ) { -#define HB_CALL_ON_STARTUP_END( func ) +#define HB_CALL_ON_STARTUP_END( func ) } #endif #ifdef __BORLANDC__ #define HB_INIT_SYMBOLS_BEGIN( func ) \ + static SYMBOL symbols[] = { + +#define HB_INIT_SYMBOLS_END( func ) }; \ static void func( void ) \ { \ ProcessSymbols( symbols, sizeof( symbols ) / sizeof( SYMBOL ) ); \ } -#define HB_INIT_SYMBOLS_END( func ) - #define HB_CALL_ON_STARTUP_BEGIN( func ) \ - static void func( void ) + static void func( void ) { -#define HB_CALL_ON_STARTUP_END( func ) +#define HB_CALL_ON_STARTUP_END( func ) } #endif #if (defined(_MSC_VER) || defined(__IBMCPP__)) #define HB_INIT_SYMBOLS_BEGIN( func ) \ -static int func( void ) \ -{ \ - ProcessSymbols( symbols, sizeof( symbols ) / sizeof( SYMBOL ) ); \ - return 1; \ -} + static SYMBOL symbols[] = { -#define HB_INIT_SYMBOLS_END( func ) static int static_int_##func = func(); +#define HB_INIT_SYMBOLS_END( func ) }; \ + static int func( void ) \ + { \ + ProcessSymbols( symbols, sizeof( symbols ) / sizeof( SYMBOL ) ); \ + return 1; \ + }; \ + static int static_int_##func = func() #define HB_CALL_ON_STARTUP_BEGIN( func ) \ -static int func( void ); \ -static int static_int_##func = func(); \ -static int func( void ) +static int func( void ) { -#define HB_CALL_ON_STARTUP_END( func ) return 1; +#define HB_CALL_ON_STARTUP_END( func ) return 1 }; \ + static int static_int_##func = func() #endif #ifdef __WATCOMC__ #define HB_INIT_SYMBOLS_BEGIN( func ) \ -static int func( void ) \ -{ \ - ProcessSymbols( symbols, sizeof( symbols ) / sizeof( SYMBOL ) ); \ - return 1; \ -} - -#define HB_INIT_SYMBOLS_END( func ) static int static_int_##func = func(); + static SYMBOL symbols[] = { + +#define HB_INIT_SYMBOLS_END( func ) }; \ + static int func( void ) \ + { \ + ProcessSymbols( symbols, sizeof( symbols ) / sizeof( SYMBOL ) ); \ + return 1; \ + }; \ + static int static_int_##func = func() #define HB_CALL_ON_STARTUP_BEGIN( func ) \ -static int func( void ); \ -static int static_int_##func = func(); \ -static int func( void ) + static int func( void ) { -#define HB_CALL_ON_STARTUP_END( func ) return 1; +#define HB_CALL_ON_STARTUP_END( func ) return 1; }; \ + static int static_int_##func = func() #endif #endif /*HARBOUR_STRICT_ANSI_C */ diff --git a/harbour/source/compiler/harbour.y b/harbour/source/compiler/harbour.y index 03b160ca6e..4c3e1511db 100644 --- a/harbour/source/compiler/harbour.y +++ b/harbour/source/compiler/harbour.y @@ -2070,7 +2070,10 @@ void GenCCode( char *szFileName, char *szName ) /* generates the C languag } /* writes the symbol table */ - fprintf( yyc, "\nstatic SYMBOL symbols[] = { " ); +/* fprintf( yyc, "\nstatic SYMBOL symbols[] = { " ); */ + /* Generate the wrapper that will initialize local symbol table + */ + fprintf( yyc, "\n\nHB_INIT_SYMBOLS_BEGIN( %s__InitSymbols )\n", symbols.pFirst->szName ); if( ! _iStartProc ) pSym = pSym->pNext; /* starting procedure is always the first symbol */ @@ -2111,16 +2114,12 @@ void GenCCode( char *szFileName, char *szName ) /* generates the C languag } if( pSym != symbols.pLast ) - fprintf( yyc, ",\n " ); + fprintf( yyc, ",\n" ); pSym = pSym->pNext; } - fprintf( yyc, " };\n\n" ); - - /* Generate function that will initialize local symbol table - */ - fprintf( yyc, "HB_INIT_SYMBOLS_BEGIN( %s__InitSymbols );\n", symbols.pFirst->szName ); - fprintf( yyc, "HB_INIT_SYMBOLS_END( %s__InitSymbols )\n\n", symbols.pFirst->szName ); +/* fprintf( yyc, " };\n\n" ); */ + fprintf( yyc, "\nHB_INIT_SYMBOLS_END( %s__InitSymbols );\n", symbols.pFirst->szName ); fprintf( yyc, "#pragma startup %s__InitSymbols\n\n", symbols.pFirst->szName ); /* Generate functions data diff --git a/harbour/source/rtl/arrays.c b/harbour/source/rtl/arrays.c index 30df1dd4fe..d9116bc18e 100644 --- a/harbour/source/rtl/arrays.c +++ b/harbour/source/rtl/arrays.c @@ -21,7 +21,7 @@ HARBOUR HB_ASIZE(void); HARBOUR HB_ASORT(void); HARBOUR HB_ATAIL(void); -static SYMBOL symbols[] = { +HB_INIT_SYMBOLS_BEGIN( Arrays__InitSymbols ) { "ACLONE", FS_PUBLIC, HB_ACLONE , 0 }, { "ACOPY", FS_PUBLIC, HB_ACOPY , 0 }, { "ADEL", FS_PUBLIC, HB_ADEL , 0 }, @@ -33,8 +33,8 @@ static SYMBOL symbols[] = { { "ASIZE", FS_PUBLIC, HB_ASIZE , 0 }, { "ASORT", FS_PUBLIC, HB_ASORT , 0 }, { "ATAIL", FS_PUBLIC, HB_ATAIL , 0 }, -}; - +HB_INIT_SYMBOLS_END( Arrays__InitSymbols ); +#pragma startup Arrays__InitSymbols PHB_ITEM hb_itemNew( PHB_ITEM ); PHB_ITEM hb_itemArrayPut( PHB_ITEM , ULONG , PHB_ITEM ); @@ -46,10 +46,6 @@ static char *szBoundError = "Bound error: Array access"; static char *szArgumentError = "Argument error: incorrect type"; -HB_INIT_SYMBOLS_BEGIN( Arrays__InitSymbols ); -HB_INIT_SYMBOLS_END( Arrays__InitSymbols ) -#pragma startup Arrays__InitSymbols - /* * Internal */ diff --git a/harbour/source/rtl/classes.c b/harbour/source/rtl/classes.c index c846b31a60..4663a876da 100644 --- a/harbour/source/rtl/classes.c +++ b/harbour/source/rtl/classes.c @@ -96,7 +96,7 @@ HARBOUR HB_OMODMETHOD( void ); /* Exported symbols of both classes.c and objfunc.prg */ -static SYMBOL symbols[] = { +HB_INIT_SYMBOLS_BEGIN( Classes__InitSymbols ) { "AODATA" , FS_PUBLIC, HB_AODATA , 0 }, { "AOGET" , FS_PUBLIC, HB_AOGET , 0 }, { "AOMETHOD" , FS_PUBLIC, HB_AOMETHOD , 0 }, @@ -120,11 +120,7 @@ static SYMBOL symbols[] = { { "OMODINLINE" , FS_PUBLIC, HB_OMODINLINE , 0 }, { "OMODMETHOD" , FS_PUBLIC, HB_OMODMETHOD , 0 }, { "OSEND" , FS_PUBLIC, HB_OSEND , 0 } -}; - - -HB_INIT_SYMBOLS_BEGIN( Classes__InitSymbols ); -HB_INIT_SYMBOLS_END( Classes__InitSymbols ) +HB_INIT_SYMBOLS_END( Classes__InitSymbols ); #pragma startup Classes__InitSymbols /* diff --git a/harbour/source/rtl/console.c b/harbour/source/rtl/console.c index 878c2ddc13..201cf5c2c3 100644 --- a/harbour/source/rtl/console.c +++ b/harbour/source/rtl/console.c @@ -57,7 +57,7 @@ HARBOUR HB_SETPRC( void ); HARBOUR HB_QOUT( void ); HARBOUR HB_QQOUT( void ); -static SYMBOL symbols[] = { +HB_INIT_SYMBOLS_BEGIN( Console__InitSymbols ) { "__ACCEPT" , FS_PUBLIC, HB___ACCEPT , 0 }, { "__EJECT" , FS_PUBLIC, HB___EJECT , 0 }, { "DEVOUT" , FS_PUBLIC, HB_DEVOUT , 0 }, @@ -77,18 +77,13 @@ static SYMBOL symbols[] = { { "SETPRC" , FS_PUBLIC, HB_SETPRC , 0 }, { "QOUT" , FS_PUBLIC, HB_QOUT , 0 }, { "QQOUT" , FS_PUBLIC, HB_QQOUT , 0 } -}; - - -HB_INIT_SYMBOLS_BEGIN( Console__InitSymbols ); -HB_INIT_SYMBOLS_END( Console__InitSymbols ) +HB_INIT_SYMBOLS_END( Console__InitSymbols ); #pragma startup Console__InitSymbols static unsigned short dev_row, dev_col, p_row, p_col; static char CrLf [ CRLF_BUFFER_LEN ]; HB_CALL_ON_STARTUP_BEGIN( InitializeConsole ) -{ #if defined(OS_DOS_COMPATIBLE) CrLf [0] = 13; CrLf [1] = 10; @@ -107,8 +102,7 @@ HB_CALL_ON_STARTUP_BEGIN( InitializeConsole ) dev_col = 0; #endif p_row = p_col = 0; - HB_CALL_ON_STARTUP_END( InitializeConsole ) -} +HB_CALL_ON_STARTUP_END( InitializeConsole ); #pragma startup InitializeConsole USHORT hb_max_row( void ) diff --git a/harbour/source/rtl/dates.c b/harbour/source/rtl/dates.c index 46decaa0e9..2352d4762e 100644 --- a/harbour/source/rtl/dates.c +++ b/harbour/source/rtl/dates.c @@ -39,14 +39,12 @@ HARBOUR HB_STOD( void ); HARBOUR HB_TIME( void ); HARBOUR HB_YEAR( void ); -static SYMBOL symbols[] = { +HB_INIT_SYMBOLS_BEGIN( Dates__InitSymbols ) { "STOD", FS_PUBLIC, HB_STOD, 0 } -}; /* rest of the functions is pulled automatically in initsymb.c */ - - -HB_INIT_SYMBOLS_BEGIN( Dates__InitSymbols ); -HB_INIT_SYMBOLS_END( Dates__InitSymbols ) +HB_INIT_SYMBOLS_END( Dates__InitSymbols ); #pragma startup Dates__InitSymbols +/* rest of the functions is pulled automatically in initsymb.c */ + double hb__seconds( void ) { diff --git a/harbour/source/rtl/descend.c b/harbour/source/rtl/descend.c index e9e229a0f8..8262294b6c 100644 --- a/harbour/source/rtl/descend.c +++ b/harbour/source/rtl/descend.c @@ -11,12 +11,9 @@ extern STACK stack; HARBOUR HB_DESCEND(void); -static SYMBOL symbols[] = { +HB_INIT_SYMBOLS_BEGIN( Descend__InitSymbols ) { "DESCEND", FS_PUBLIC, HB_DESCEND, 0 } -}; - -HB_INIT_SYMBOLS_BEGIN( Descend__InitSymbols ); -HB_INIT_SYMBOLS_END( Descend__InitSymbols ) +HB_INIT_SYMBOLS_END( Descend__InitSymbols ); #pragma Descend__InitSymbols char *hb_strdescend( char *string ) diff --git a/harbour/source/rtl/dir.c b/harbour/source/rtl/dir.c index 3dc934c2ce..5f5396a85a 100644 --- a/harbour/source/rtl/dir.c +++ b/harbour/source/rtl/dir.c @@ -87,12 +87,9 @@ HARBOUR HB_DIRECTORY(void); -static SYMBOL symbols[] = { +HB_INIT_SYMBOLS_BEGIN( Dir__InitSymbols ) { "DIRECTORY", FS_PUBLIC, HB_DIRECTORY, 0 } -}; - -HB_INIT_SYMBOLS_BEGIN( Dir__InitSymbols ); -HB_INIT_SYMBOLS_END( Dir__InitSymbols ) +HB_INIT_SYMBOLS_END( Dir__InitSymbols ); #pragma startup Dir__InitSymbols static BOOL hb_strMatchDOS (char *pszString, char *pszMask); diff --git a/harbour/source/rtl/environ.c b/harbour/source/rtl/environ.c index 05efe6fdc8..7071878803 100644 --- a/harbour/source/rtl/environ.c +++ b/harbour/source/rtl/environ.c @@ -43,15 +43,12 @@ HARBOUR HB_GETENV(void); HARBOUR HB_OS(void); HARBOUR HB_VERSION(void); -static SYMBOL symbols[] = { +HB_INIT_SYMBOLS_BEGIN( Environ__InitSymbols ) { "__RUN" , FS_PUBLIC, HB___RUN , 0 }, { "GETENV" , FS_PUBLIC, HB_GETENV , 0 }, { "OS" , FS_PUBLIC, HB_OS , 0 }, { "VERSION", FS_PUBLIC, HB_VERSION, 0 } -}; - -HB_INIT_SYMBOLS_BEGIN( Environ__InitSymbols ); -HB_INIT_SYMBOLS_END( Environ__InitSymbols ) +HB_INIT_SYMBOLS_END( Environ__InitSymbols ); #pragma startup Environ__InitSymbols HARBOUR HB_OS(void) diff --git a/harbour/source/rtl/files.c b/harbour/source/rtl/files.c index 9181f62c7c..386e2e48b2 100644 --- a/harbour/source/rtl/files.c +++ b/harbour/source/rtl/files.c @@ -131,7 +131,7 @@ HARBOUR HB_I2BIN( void ); HARBOUR HB_L2BIN( void ); HARBOUR HB_W2BIN( void ); -static SYMBOL symbols[] = { +HB_INIT_SYMBOLS_BEGIN( Files__InitSymbols ) { "BIN2I" , FS_PUBLIC, HB_BIN2I , 0 }, { "BIN2L" , FS_PUBLIC, HB_BIN2L , 0 }, { "BIN2W" , FS_PUBLIC, HB_BIN2W , 0 }, @@ -148,10 +148,7 @@ static SYMBOL symbols[] = { { "I2BIN" , FS_PUBLIC, HB_I2BIN , 0 }, { "L2BIN" , FS_PUBLIC, HB_L2BIN , 0 }, { "W2BIN" , FS_PUBLIC, HB_W2BIN , 0 } -}; - -HB_INIT_SYMBOLS_BEGIN( Files__InitSymbols ); -HB_INIT_SYMBOLS_END( Files__InitSymbols ) +HB_INIT_SYMBOLS_END( Files__InitSymbols ); #pragma startup Files__InitSymbols /* Convert HARBOUR flags to IO subsystem flags */ diff --git a/harbour/source/rtl/hardcr.c b/harbour/source/rtl/hardcr.c index 8c4670c982..59dd7f69df 100644 --- a/harbour/source/rtl/hardcr.c +++ b/harbour/source/rtl/hardcr.c @@ -12,12 +12,9 @@ HARBOUR HB_HARDCR(void); -static SYMBOL symbols[] = { +HB_INIT_SYMBOLS_BEGIN( HardCR__InitSymbols ) { "HARDCR", FS_PUBLIC, HB_HARDCR, 0 } -}; - -HB_INIT_SYMBOLS_BEGIN( HardCR__InitSymbols ); -HB_INIT_SYMBOLS_END( HardCR__InitSymbols ) +HB_INIT_SYMBOLS_END( HardCR__InitSymbols ); #pragma startup HardCR__InitSymbols char *hb_hardcr( char *string ) diff --git a/harbour/source/rtl/math.c b/harbour/source/rtl/math.c index da30a3c191..6691a89a55 100644 --- a/harbour/source/rtl/math.c +++ b/harbour/source/rtl/math.c @@ -20,13 +20,12 @@ HARBOUR HB_MOD( void ); HARBOUR HB_ROUND( void ); HARBOUR HB_SQRT( void ); -static SYMBOL symbols[] = { -{ "MOD" , FS_PUBLIC, HB_MOD , 0 } -}; /* The rest of functions is pulled automatically by initsymb.c */ -HB_INIT_SYMBOLS_BEGIN( Math__InitSymbols ); -HB_INIT_SYMBOLS_END( Math__InitSymbols ) +HB_INIT_SYMBOLS_BEGIN( Math__InitSymbols ) +{ "MOD" , FS_PUBLIC, HB_MOD , 0 } +HB_INIT_SYMBOLS_END( Math__InitSymbols ); #pragma startup Math__InitSymbols +/* The rest of functions is pulled automatically by initsymb.c */ HARBOUR HB_ABS( void ) { diff --git a/harbour/source/rtl/mtran.c b/harbour/source/rtl/mtran.c index cd2dff13e2..2c1d635401 100644 --- a/harbour/source/rtl/mtran.c +++ b/harbour/source/rtl/mtran.c @@ -14,12 +14,10 @@ HARBOUR HB_MEMOTRAN(void); -static SYMBOL symbols[] = { -{ "MEMOTRAN", FS_PUBLIC, HB_MEMOTRAN, 0 } -}; -HB_INIT_SYMBOLS_BEGIN( Memotran__InitSymbols ); -HB_INIT_SYMBOLS_END( Memotran__InitSymbols ) +HB_INIT_SYMBOLS_BEGIN( Memotran__InitSymbols ) +{ "MEMOTRAN", FS_PUBLIC, HB_MEMOTRAN, 0 } +HB_INIT_SYMBOLS_END( Memotran__InitSymbols ); #pragma startup Memotran__InitSymbols char *hb_memotran( char *string, char *hardcr, char *softcr ) diff --git a/harbour/source/rtl/set.c b/harbour/source/rtl/set.c index b6287986fa..93667a87d9 100644 --- a/harbour/source/rtl/set.c +++ b/harbour/source/rtl/set.c @@ -34,13 +34,10 @@ int hb_set_printhan; HARBOUR HB_SET( void ); HARBOUR HB___SETCENTURY( void ); -static SYMBOL symbols[] = { +HB_INIT_SYMBOLS_BEGIN( Set__InitSymbols ) { "__SETCENTURY", FS_PUBLIC, HB___SETCENTURY, 0 }, { "SET" , FS_PUBLIC, HB_SET , 0 } -}; - -HB_INIT_SYMBOLS_BEGIN( Set__InitSymbols ); -HB_INIT_SYMBOLS_END( Set__InitSymbols ) +HB_INIT_SYMBOLS_END( Set__InitSymbols ); #pragma startup Set__InitSymbols static BOOL set_logical (PHB_ITEM pItem) diff --git a/harbour/source/rtl/strings.c b/harbour/source/rtl/strings.c index da43b85ab9..9dca6f98d6 100644 --- a/harbour/source/rtl/strings.c +++ b/harbour/source/rtl/strings.c @@ -51,7 +51,7 @@ HARBOUR HB_TRIM( void ); HARBOUR HB_UPPER( void ); HARBOUR HB_VAL( void ); -static SYMBOL symbols[] = { +HB_INIT_SYMBOLS_BEGIN( Strings__InitSymbols ) { "ALLTRIM" , FS_PUBLIC, HB_ALLTRIM, 0 }, { "ISALPHA" , FS_PUBLIC, HB_ISALPHA, 0 }, { "ISDIGIT" , FS_PUBLIC, HB_ISDIGIT, 0 }, @@ -65,18 +65,14 @@ static SYMBOL symbols[] = { { "RIGHT" , FS_PUBLIC, HB_RIGHT , 0 }, { "STRTRAN" , FS_PUBLIC, HB_STRTRAN, 0 }, { "STUFF" , FS_PUBLIC, HB_STUFF , 0 } -}; /* The rest of functions is pulled automatically by initsymb.c */ - -HB_INIT_SYMBOLS_BEGIN( Strings__InitSymbols ); -HB_INIT_SYMBOLS_END( Strings__InitSymbols ) +HB_INIT_SYMBOLS_END( Strings__InitSymbols ); #pragma startup Strings__InitSymbols +/* The rest of functions is pulled automatically by initsymb.c */ #ifdef HARBOUR_STRICT_CLIPPER_COMPATIBILITY HB_CALL_ON_STARTUP_BEGIN( Strings_InitInfinity ) -{ infinity = -log( 0 ); -} -HB_CALL_ON_STARTUP_END( Strings_InitInfinity ) +HB_CALL_ON_STARTUP_END( Strings_InitInfinity ); #pragma startup Strings_InitInfinity #endif diff --git a/harbour/source/rtl/transfrm.c b/harbour/source/rtl/transfrm.c index 3154d917bc..9b6fb70ce7 100644 --- a/harbour/source/rtl/transfrm.c +++ b/harbour/source/rtl/transfrm.c @@ -18,11 +18,9 @@ HARBOUR HB_TRANSFORM( void ); -static SYMBOL symbols[] = { -{ "TRANSFORM" , FS_PUBLIC, HB_TRANSFORM , 0 } -}; -HB_INIT_SYMBOLS_BEGIN( Transfrm__InitSymbols ); +HB_INIT_SYMBOLS_BEGIN( Transfrm__InitSymbols ) +{ "TRANSFORM" , FS_PUBLIC, HB_TRANSFORM , 0 } HB_INIT_SYMBOLS_END( Transfrm__InitSymbols ) #pragma startup Transfrm__InitSymbols diff --git a/harbour/tests/working/box.prg b/harbour/tests/working/box.prg index b5b039cfef..5a9a0cad1d 100644 --- a/harbour/tests/working/box.prg +++ b/harbour/tests/working/box.prg @@ -1,6 +1,6 @@ // Testing Harbour device management. -#include "BOX.CH" +#include "box.ch" function Main() dispbox( 1, 1, 5, 5, B_SINGLE + 'X', 'color not supported')