diff --git a/harbour/ChangeLog b/harbour/ChangeLog index a8b8f2e7ba..b21af4c165 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,28 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +2007-11-14 02:00 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/common.mak + * harbour/source/codepage/Makefile + + harbour/source/codepage/cpesmwin.c + - harbour/source/codepage/cpesmwi.c + * renamed + + * harbour/source/rtl/cdpapi.c + ! do not use '~' as accented character marker if neither ACCENTED_EQUAL + nor ACCENTED_INTERLEAVED is set - in some CPs '~' is a letter + ! use '~' as accented character marker only if it exists in UPPER and + LOWER letter sets - our CP code cannot properly decode letter sets + when this condition is not true - it should be fixed (TOFIX) + ! use '.' as multibyte character marker only if it exists in UPPER and + LOWER letter sets - our CP code cannot properly decode letter sets + when this condition is not true - it should be fixed (TOFIX) + + * harbour/source/codepage/cpeldos.c + * harbour/source/codepage/cpelwin.c + * updated accent marker upper letters to be the same as in lower ones + Greek users should fix me. + 2007-11-14 00:51 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/make_gcc.sh * harbour/make_gnu.sh diff --git a/harbour/common.mak b/harbour/common.mak index 2fc99ef66a..c3d625aad3 100644 --- a/harbour/common.mak +++ b/harbour/common.mak @@ -736,7 +736,7 @@ CODEPAGE_LIB_OBJS = \ $(OBJ_DIR)\cpeldos$(OBJEXT) \ $(OBJ_DIR)\cpelwin$(OBJEXT) \ $(OBJ_DIR)\cpesdos$(OBJEXT) \ - $(OBJ_DIR)\cpesmwi$(OBJEXT) \ + $(OBJ_DIR)\cpesmwin$(OBJEXT) \ $(OBJ_DIR)\cpeswin$(OBJEXT) \ $(OBJ_DIR)\cpfrdos$(OBJEXT) \ $(OBJ_DIR)\cpgedos$(OBJEXT) \ diff --git a/harbour/source/codepage/Makefile b/harbour/source/codepage/Makefile index 7c9be1025d..974a18eb49 100644 --- a/harbour/source/codepage/Makefile +++ b/harbour/source/codepage/Makefile @@ -18,7 +18,7 @@ C_SOURCES=\ cpelwin.c \ cpesdos.c \ cpeswin.c \ - cpesmwi.c \ + cpesmwin.c \ cpfrdos.c \ cpgedos.c \ cpgewin.c \ diff --git a/harbour/source/codepage/cpeldos.c b/harbour/source/codepage/cpeldos.c index 63b00cca87..77e4f80779 100644 --- a/harbour/source/codepage/cpeldos.c +++ b/harbour/source/codepage/cpeldos.c @@ -85,7 +85,7 @@ static HB_CODEPAGE s_codepage = { "EL", HB_CPID_737, HB_UNITB_737, NUMBER_OF_CHARACTERS, - "~ꁂ녆~쇈~퉊~~~", + "~ꁂ~녆~쇈~퉊~~~", "~ᙚ~❞~㟠~塢~槨~筮~", IS_LATIN, ACCENTED_EQUAL, ACCENTED_INTERLEAVED, 0, 0, NULL, NULL, NULL, NULL, 0, NULL }; diff --git a/harbour/source/codepage/cpelwin.c b/harbour/source/codepage/cpelwin.c index ea9a254aab..b2167bd4d8 100644 --- a/harbour/source/codepage/cpelwin.c +++ b/harbour/source/codepage/cpelwin.c @@ -86,7 +86,7 @@ static HB_CODEPAGE s_codepage = { "ELWIN", HB_CPID_1253, HB_UNITB_1253, NUMBER_OF_CHARACTERS, - "~Ÿ~~~~~", + "~~~~~~~", "~~~~~~~", IS_LATIN, ACCENTED_EQUAL, ACCENTED_INTERLEAVED, 0, 0, NULL, NULL, NULL, NULL, 0, NULL }; diff --git a/harbour/source/codepage/cpesmwi.c b/harbour/source/codepage/cpesmwin.c similarity index 99% rename from harbour/source/codepage/cpesmwi.c rename to harbour/source/codepage/cpesmwin.c index a7a1d25416..d4ce867432 100644 --- a/harbour/source/codepage/cpesmwi.c +++ b/harbour/source/codepage/cpesmwin.c @@ -75,7 +75,7 @@ /* If ACCENTED_EQUAL or ACCENTED_INTERLEAVED is 1, you need to mark the accented characters with the symbol '~' before each of them, for example: - a~ + a~ If there is two-character sequence, which is considered as one, it should be marked with '.' before and after it, for example: ... h.ch.i ... diff --git a/harbour/source/rtl/cdpapi.c b/harbour/source/rtl/cdpapi.c index 0dd545936c..860bbf297a 100644 --- a/harbour/source/rtl/cdpapi.c +++ b/harbour/source/rtl/cdpapi.c @@ -337,7 +337,8 @@ HB_EXPORT BOOL hb_cdpRegister( PHB_CODEPAGE cdpage ) } for( i = ia = 1; *ptrUpper; i++, ia++, ptrUpper++, ptrLower++ ) { - if( *ptrUpper == '~' ) + if( ( cdpage->lAccEqual || cdpage->lAccInterleave ) && + *ptrUpper == '~' && *ptrLower == '~' ) { for( ptr = ptrUpper + 1; *ptr; ptr++ ) *( ptr - 1 ) = *ptr; @@ -348,7 +349,9 @@ HB_EXPORT BOOL hb_cdpRegister( PHB_CODEPAGE cdpage ) if( cdpage->lAccEqual ) i--; } - else if( *ptrUpper == '.' ) + else if( *ptrUpper == '.' && *ptrLower == '.' && + ptrUpper[1] && ptrUpper[2] && ptrUpper[3] == '.' && + ptrLower[1] && ptrLower[2] && ptrLower[3] == '.' ) { multi[nMulti].cFirst[0] = *( ptrUpper + 1 ); multi[nMulti].cFirst[1] = *( ptrLower + 1 );