diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 50babc3d1b..1897e2eccb 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,31 @@ +2000-04-17 14:40 GMT-4 David G. Holm + + * doc/en/set.txt + * include/hbset.h + * include/set.ch + * source/pp/pptable.c + * source/rtl/set.c + + Added support for 'SET( _SET_LANGUAGE, )'. + + * include/hbsetup.h + + Added __RSXNT__ to the platform test for OS_DOS_COMPATIBLE. + ! Only define HB_OS_UNIX if it is not already defined (unchanged) + and OS_UNIX_COMPATIBLE is defined (used to be platform tests), + because HB_OS_UNIX was being set for RSXNT and I couldn't see + the point of duplicating all of the platform tests. + + * config/w32/gcc.cf + * config/w32/mingw32.cf + * config/w32/rsxnt.cf + + Added LNK_USR_PATH and LNK_USR_LIB environment variables to specify + non-Harbour libraries. Put one or more paths in LNK_USR_PATH and one + or more base library names in LNK_USR_LIB, using spaces to separate. + + + source/lang/msgis850.c + * source/lang/Makefile + + Added partial Icelandic support for code page 850 (the national + language code page for Icelandic is 861). + 20000417-16:06 GMT+2 Maurilio Longo * config/os2/gcc.cf diff --git a/harbour/config/w32/gcc.cf b/harbour/config/w32/gcc.cf index 94f8e309e4..11c69524f2 100644 --- a/harbour/config/w32/gcc.cf +++ b/harbour/config/w32/gcc.cf @@ -47,6 +47,14 @@ LINKPATHS += -L$(TOP)$(ROOT)source/rtl/$(HB_GT_LIB)/$(ARCH) LINKLIBS += -l$(HB_GT_LIB) endif +# HB_SCREEN_LIB: empty, or one of ncurses, slang +# HB_SCREEN_LIB=ncurses +# HB_SCREEN_LIB=slang + +ifneq ($(HB_SCREEN_LIB),) +LINKLIBS += -l$(HB_SCREEN_LIB) +endif + # Add the optional user path(s) ifneq ($(LNK_USR_PATH),) LINKPATHS += $(foreach path, $(LNK_USR_PATH), -L$(path)) @@ -57,14 +65,6 @@ ifneq ($(LNK_USR_LIB),) LINKLIBS += $(foreach lib, $(LNK_USR_LIB), -l$(lib)) endif -# HB_SCREEN_LIB: empty, or one of ncurses, slang -# HB_SCREEN_LIB=ncurses -# HB_SCREEN_LIB=slang - -ifneq ($(HB_SCREEN_LIB),) -LINKLIBS += -l$(HB_SCREEN_LIB) -endif - # The -) option could be appropriate to link against libraries with # cyclic dependencies, but I think it is not really necessary if the # libraries are kept in proper order. diff --git a/harbour/config/w32/mingw32.cf b/harbour/config/w32/mingw32.cf index 8bfbf4af9b..1902d3e7af 100644 --- a/harbour/config/w32/mingw32.cf +++ b/harbour/config/w32/mingw32.cf @@ -55,6 +55,16 @@ ifneq ($(HB_SCREEN_LIB),) LINKLIBS += -l$(HB_SCREEN_LIB) endif +# Add the optional user path(s) +ifneq ($(LNK_USR_PATH),) +LINKPATHS += $(foreach path, $(LNK_USR_PATH), -L$(path)) +endif + +# Add the optional user libarary (or libraries) +ifneq ($(LNK_USR_LIB),) +LINKLIBS += $(foreach lib, $(LNK_USR_LIB), -l$(lib)) +endif + # The -) option could be appropriate to link against libraries with # cyclic dependencies, but I think it is not really necessary if the # libraries are kept in proper order. diff --git a/harbour/config/w32/rsxnt.cf b/harbour/config/w32/rsxnt.cf index d7a487913f..06930ff4be 100644 --- a/harbour/config/w32/rsxnt.cf +++ b/harbour/config/w32/rsxnt.cf @@ -58,6 +58,16 @@ ifneq ($(HB_SCREEN_LIB),) LINKLIBS += -l$(HB_SCREEN_LIB) endif +# Add the optional user path(s) +ifneq ($(LNK_USR_PATH),) +LINKPATHS += $(foreach path, $(LNK_USR_PATH), -L$(path)) +endif + +# Add the optional user libarary (or libraries) +ifneq ($(LNK_USR_LIB),) +LINKLIBS += $(foreach lib, $(LNK_USR_LIB), -l$(lib)) +endif + # The -) option could be appropriate to link against libraries with # cyclic dependencies, but I think it is not really necessary if the # libraries are kept in proper order. diff --git a/harbour/doc/en/set.txt b/harbour/doc/en/set.txt index 40f75abd76..8fd45046c1 100644 --- a/harbour/doc/en/set.txt +++ b/harbour/doc/en/set.txt @@ -302,6 +302,10 @@ * disabled, GETs and PROMPTs are displayed using the * standard color setting. * + * _SET_LANGUAGE + * + * Specifies the language to be used for Harbour messages. + * * _SET_MARGIN * * Sets the left margin for all printed output. The default diff --git a/harbour/include/hbset.h b/harbour/include/hbset.h index 4b49ebb78e..82bf1632cb 100644 --- a/harbour/include/hbset.h +++ b/harbour/include/hbset.h @@ -103,7 +103,10 @@ typedef enum HB_SET_OPTIMIZE = 44, HB_SET_AUTOPEN = 45, HB_SET_AUTORDER = 46, - HB_SET_AUTOSHARE = 47 + HB_SET_AUTOSHARE = 47, + + /* Harbour SET extensions start at 100 */ + HB_SET_LANGUAGE = 100 } HB_set_enum; typedef struct @@ -148,7 +151,7 @@ typedef struct BOOL HB_SET_WRAP; int HB_SET_MESSAGE; BOOL HB_SET_MCENTER; - BOOL HB_SET_SCROLLBREAK; /* QUESTION: What does this do ? */ + BOOL HB_SET_SCROLLBREAK; HB_inkey_enum HB_SET_EVENTMASK; int HB_SET_MBLOCKSIZE; char * HB_SET_MFILEEXT; diff --git a/harbour/include/hbsetup.h b/harbour/include/hbsetup.h index 79bd3bcf93..c93f46b647 100644 --- a/harbour/include/hbsetup.h +++ b/harbour/include/hbsetup.h @@ -165,7 +165,7 @@ */ #if defined(__GNUC__) /* The GNU C compiler is used */ - #if defined(__DJGPP__) || defined(__EMX__) || defined(_Windows) || defined(_WIN32) + #if defined(__DJGPP__) || defined(__EMX__) || defined(_Windows) || defined(_WIN32) || defined(__RSXNT__) /* The DJGPP port of GNU C is used - for DOS platform */ #define OS_DOS_COMPATIBLE #define OS_PATH_LIST_SEPARATOR ';' @@ -239,7 +239,7 @@ #endif #ifndef HB_OS_UNIX - #if defined(__GNUC__) && !(defined(__DJGPP__) || defined(HARBOUR_GCC_OS2) || defined(__CYGNUS__)) + #ifdef OS_UNIX_COMPATIBLE #define HB_OS_UNIX #endif #endif diff --git a/harbour/include/set.ch b/harbour/include/set.ch index 1cc8b13462..1409cc8c2b 100644 --- a/harbour/include/set.ch +++ b/harbour/include/set.ch @@ -95,7 +95,10 @@ #define _SET_AUTORDER 46 #define _SET_AUTOSHARE 47 - #define _SET_COUNT 47 +#define _SET_LANGUAGE 100 + +#define __SET_COUNT_HB 1 + #endif /* _SET_CH */ diff --git a/harbour/source/lang/Makefile b/harbour/source/lang/Makefile index 04380b2611..4b9834dd5a 100644 --- a/harbour/source/lang/Makefile +++ b/harbour/source/lang/Makefile @@ -14,10 +14,10 @@ C_SOURCES=\ msghu852.c \ msghucwi.c \ msghuwin.c \ + msgis850.c \ msgpt.c \ msgro.c \ LIBNAME=lang include $(TOP)$(ROOT)config/lib.cf - diff --git a/harbour/source/lang/msgis850.c b/harbour/source/lang/msgis850.c new file mode 100644 index 0000000000..b0848f1e63 --- /dev/null +++ b/harbour/source/lang/msgis850.c @@ -0,0 +1,191 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * Language Support Module (IS850) + * + * Copyright 2000 Victor Szakats (English, from msgen.c) + * Copyright 2000 David G. Holm (Icelandic) + * 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 of the License, or + * (at your option) any later version, with one exception: + * + * The exception is that if you link the Harbour Runtime Library (HRL) + * and/or the Harbour Virtual Machine (HVM) 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 HRL + * and/or HVM code into it. + * + * 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 program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit + * their web site at http://www.gnu.org/). + * + */ + +/* Language name: Icelandic */ +/* ISO language code (2 chars): IS */ +/* Codepage: 850 */ + +#include "hbapilng.h" + +static HB_LANG s_lang = +{ + { + /* Identification */ + + "IS850", /* ID */ + "Icelandic", /* Name (in English) */ + "Öslenska", /* Name (in native language) */ + "IS", /* RFC ID */ + "850", /* Codepage */ + "$Revision$ $Date$", /* Version */ + + /* Month names */ + + "Jan£ar", + "Febr£ar", + "Mars", + "Apr”ll", + "Ma”", + "Jun”", + "Jul”", + "µg£st", + "September", + "Okt¢ber", + "N¢vember", + "Desember", + + /* Day names */ + + "Sunnudagur", + "M nudagur", + "čriŠjudagur", + "MiŠvikudagur", + "Fimmtudagur", + "F”studagur", + "Laugardagur", + + /* CA-Cl*pper compatible natmsg items */ + + "Gagnagrunnar Skr artal S”Šast Breytt St‘rŠ", + "Viltu fleyri pr¢fanir?", + "Blads”Ša", + "** Subtotal **", + "* Subsubtotal *", + "*** Samtals ***", + "Ins", + " ", + "R”ng dagsetning", + "Range: ", + " - ", + "J/N", + "ąGILD EXPRESSION", + + /* Error description names */ + + "Unknown error", + "Argument error", + "Bound error", + "String overflow", + "Numeric overflow", + "Zero divisor", + "Numeric error", + "Syntax error", + "Operation too complex", + "", + "", + "Memory low", + "Undefined function", + "No exported method", + "Variable does not exist", + "Alias does not exist", + "No exported variable", + "Illegal characters in alias", + "Alias already in use", + "", + "Create error", + "Open error", + "Close error", + "Read error", + "Write error", + "Print error", + "", + "", + "", + "", + "Operation not supported", + "Limit exceeded", + "Corruption detected", + "Data type error", + "Data width error", + "Workarea not in use", + "Workarea not indexed", + "Exclusive required", + "Lock required", + "Write not allowed", + "Append lock failed", + "Lock Failure", + "", + "", + "", + "", + "array access", + "array assign", + "array dimension", + "not an array", + "conditional", + + /* Internal error names */ + + "Unrecoverable error %lu: ", + "Error recovery failure", + "No ERRORBLOCK() for error", + "Too many recursive error handler calls", + "RDD invalid or failed to load", + "Invalid method type from %s", + "hb_xgrab can't allocate memory", + "hb_xrealloc called with a NULL pointer", + "hb_xrealloc called with an invalid pointer", + "hb_xrealloc can't reallocate memory", + "hb_xfree called with an invalid pointer", + "hb_xfree called with a NULL pointer", + "Can\'t locate the starting procedure: \'%s\'", + "No starting procedure", + "Unsupported VM opcode", + "Symbol item expected from %s", + "Invalid symbol type for self from %s", + "Codeblock expected from %s", + "Incorrect item type on the stack trying to pop from %s", + "Stack underflow", + "An item was going to be copied to itself from %s", + "Invalid symbol item passed as memvar %s", + + /* Texts */ + + "YYYY-MM-DD", + "J", + "N" + } +}; + +HB_LANG_ANNOUNCE( IS850 ); + +HB_CALL_ON_STARTUP_BEGIN( hb_lang_Init_IS850 ) + hb_langRegister( &s_lang ); +HB_CALL_ON_STARTUP_END( hb_lang_Init_IS850 ) +#if ! defined(__GNUC__) && ! defined(_MSC_VER) + #pragma startup hb_lang_Init_IS850 +#endif + diff --git a/harbour/source/pp/pptable.c b/harbour/source/pp/pptable.c index 351baf46c7..0cec3d805b 100644 --- a/harbour/source/pp/pptable.c +++ b/harbour/source/pp/pptable.c @@ -96,8 +96,9 @@ static DEFINES sD___47 = {"_SET_OPTIMIZE",NULL,-1,"44", &sD___46 }; static DEFINES sD___48 = {"_SET_AUTOPEN",NULL,-1,"45", &sD___47 }; static DEFINES sD___49 = {"_SET_AUTORDER",NULL,-1,"46", &sD___48 }; static DEFINES sD___50 = {"_SET_AUTOSHARE",NULL,-1,"47", &sD___49 }; +static DEFINES sD___51 = {"_SET_LANGUAGE",NULL,-1,"100", &sD___50 }; -DEFINES * hb_pp_topDefine = &sD___50; +DEFINES * hb_pp_topDefine = &sD___51; static COMMANDS sC___1 = {0,"NOTE","\1A30",NULL,NULL }; static COMMANDS sC___2 = {0,"DO","WHILE \1A00","while \1A00",&sC___1 }; diff --git a/harbour/source/rtl/set.c b/harbour/source/rtl/set.c index bb32f48a94..4ec408968c 100644 --- a/harbour/source/rtl/set.c +++ b/harbour/source/rtl/set.c @@ -40,6 +40,7 @@ #include "hbapierr.h" #include "hbapifs.h" #include "hbapigt.h" +#include "hbapilng.h" #include "hbset.h" HB_SET_STRUCT hb_set; @@ -603,6 +604,13 @@ HB_FUNC( SET ) hb_retl( hb_set.HB_SET_WRAP ); if( args > 1 ) hb_set.HB_SET_WRAP = set_logical( pArg2 ); break; + case HB_SET_LANGUAGE : + hb_retc( hb_langID() ); + if( args > 1 && ! HB_IS_NIL( pArg2 ) ) + { + hb_langSelectID( hb_itemGetCPtr( pArg2 ) ); + } + break; default : /* Return NIL if called with invalid SET specifier */ break; @@ -693,4 +701,3 @@ void hb_setRelease( void ) hb_set.HB_SET_TYPEAHEAD = -1; hb_inkeyReset( TRUE ); /* Free keyboard typeahead buffer */ } -