Absolutely great commit, solving a very important pending issue. Thanks a lot!
Brgds, Viktor On Sun, Nov 8, 2009 at 2:46 AM, <[email protected]> wrote: > Revision: 12830 > > http://harbour-project.svn.sourceforge.net/harbour-project/?rev=12830&view=rev > Author: druzus > Date: 2009-11-08 01:46:17 +0000 (Sun, 08 Nov 2009) > > Log Message: > ----------- > 2009-11-08 02:43 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) > * harbour/src/vm/set.c > ! fixed small typos in returned values (FALSE instead of NULL and 0) > > * harbour/src/vm/estack.c > * make calling hb_stackTotalItems() safe in MT mode when stack is not > initialized - now this function can be used to check if HVM stack > exists and is initialized in ST and MT mode > > * harbour/src/rtl/errintlo.c > ! fixed at least 4 GPF traps exploited when hb_errInternal() was called > and HVM stack was not initialized > > * harbour/include/Makefile > + harbour/include/hbcdpreg.h > * harbour/include/hbapicdp.h > * harbour/src/rtl/cdpapi.c > + added new CDP API which fixes many errors and limitations in old > implementation. > Warning !!! some very serious bugs in national sorting have been > fixed. It may cause that old indexes using some national > sorting will not be compatible. Please rebuild existing > indexes. > > * harbour/src/vm/itemapi.c > * harbour/src/rdd/hsx/hsx.c > * harbour/src/rdd/dbfntx/dbfntx1.c > * harbour/src/rdd/dbfnsx/dbfnsx1.c > * harbour/src/rdd/dbfcdx/dbfcdx1.c > * harbour/contrib/hbbmcdx/bmdbfcdx.c > * harbour/contrib/rddads/adsx.c > * harbour/contrib/rddsql/sqlmix.c > * updated to work with new CDP API > TOFIX: update adsx.c and sqlmix.c to use hb_cdpcmp() which resepcts > sorting with accented and mulitybyts characters. > Mindaugas, can you update above code? > > * harbour/src/codepage/cpbg866.c > * harbour/src/codepage/cpbgiso.c > * harbour/src/codepage/cpbgmik.c > * harbour/src/codepage/cpbgwin.c > * harbour/src/codepage/cpcs852.c > * harbour/src/codepage/cpcsiso.c > * harbour/src/codepage/cpcskam.c > * harbour/src/codepage/cpcswin.c > * harbour/src/codepage/cpde850.c > * harbour/src/codepage/cpdeiso.c > * harbour/src/codepage/cpdewin.c > * harbour/src/codepage/cpel737.c > * harbour/src/codepage/cpeliso.c > * harbour/src/codepage/cpelwin.c > * harbour/src/codepage/cpes850.c > * harbour/src/codepage/cpes850c.c > * harbour/src/codepage/cpesiso.c > * harbour/src/codepage/cpesisoc.c > * harbour/src/codepage/cpeswin.c > * harbour/src/codepage/cpeswinc.c > * harbour/src/codepage/cpeswinm.c > * harbour/src/codepage/cpfr850.c > * harbour/src/codepage/cpfriso.c > * harbour/src/codepage/cpfrwin.c > * harbour/src/codepage/cphr437.c > * harbour/src/codepage/cphr852.c > * harbour/src/codepage/cphrwin.c > * harbour/src/codepage/cphu852.c > * harbour/src/codepage/cphu852s.c > * harbour/src/codepage/cphuiso.c > * harbour/src/codepage/cphuisos.c > * harbour/src/codepage/cphuwin.c > * harbour/src/codepage/cphuwins.c > * harbour/src/codepage/cpit437.c > * harbour/src/codepage/cpit850.c > * harbour/src/codepage/cpitisb.c > * harbour/src/codepage/cpitiso.c > * harbour/src/codepage/cpitwin.c > * harbour/src/codepage/cpltwin.c > * harbour/src/codepage/cppl852.c > * harbour/src/codepage/cppliso.c > * harbour/src/codepage/cpplmaz.c > * harbour/src/codepage/cpplwin.c > * harbour/src/codepage/cppt850.c > * harbour/src/codepage/cpptiso.c > * harbour/src/codepage/cpro852.c > * harbour/src/codepage/cproiso.c > * harbour/src/codepage/cprowin.c > * harbour/src/codepage/cpru866.c > * harbour/src/codepage/cpruiso.c > * harbour/src/codepage/cprukoi.c > * harbour/src/codepage/cpruwin.c > * harbour/src/codepage/cpsk852.c > * harbour/src/codepage/cpskiso.c > * harbour/src/codepage/cpskkam.c > * harbour/src/codepage/cpskwin.c > * harbour/src/codepage/cpsl437.c > * harbour/src/codepage/cpsl852.c > * harbour/src/codepage/cpsliso.c > * harbour/src/codepage/cpslwin.c > * harbour/src/codepage/cpsrwin.c > * harbour/src/codepage/cpsv850.c > * harbour/src/codepage/cpsvclip.c > * harbour/src/codepage/cpsviso.c > * harbour/src/codepage/cpsvwin.c > * harbour/src/codepage/cptr857.c > * harbour/src/codepage/cptriso.c > * harbour/src/codepage/cptrwin.c > * harbour/src/codepage/cpua1125.c > * harbour/src/codepage/cpua866.c > * harbour/src/codepage/cpuakoi.c > * harbour/src/codepage/cpuawin.c > * harbour/src/codepage/uc037.c > * harbour/src/codepage/uc1006.c > * harbour/src/codepage/uc1026.c > * harbour/src/codepage/uc1125.c > * harbour/src/codepage/uc1250.c > * harbour/src/codepage/uc1251.c > * harbour/src/codepage/uc1252.c > * harbour/src/codepage/uc1253.c > * harbour/src/codepage/uc1254.c > * harbour/src/codepage/uc1255.c > * harbour/src/codepage/uc1256.c > * harbour/src/codepage/uc1257.c > * harbour/src/codepage/uc1258.c > * harbour/src/codepage/uc424.c > * harbour/src/codepage/uc500.c > * harbour/src/codepage/uc737.c > * harbour/src/codepage/uc775.c > * harbour/src/codepage/uc850.c > * harbour/src/codepage/uc852.c > * harbour/src/codepage/uc855.c > * harbour/src/codepage/uc856.c > * harbour/src/codepage/uc857.c > * harbour/src/codepage/uc860.c > * harbour/src/codepage/uc861.c > * harbour/src/codepage/uc862.c > * harbour/src/codepage/uc863.c > * harbour/src/codepage/uc864.c > * harbour/src/codepage/uc865.c > * harbour/src/codepage/uc866.c > * harbour/src/codepage/uc869.c > * harbour/src/codepage/uc874.c > * harbour/src/codepage/uc875.c > * harbour/src/codepage/uc885910.c > * harbour/src/codepage/uc885911.c > * harbour/src/codepage/uc885913.c > * harbour/src/codepage/uc885914.c > * harbour/src/codepage/uc885915.c > * harbour/src/codepage/uc885916.c > * harbour/src/codepage/uc88591b.c > * harbour/src/codepage/uc8859_1.c > * harbour/src/codepage/uc8859_2.c > * harbour/src/codepage/uc8859_3.c > * harbour/src/codepage/uc8859_4.c > * harbour/src/codepage/uc8859_5.c > * harbour/src/codepage/uc8859_6.c > * harbour/src/codepage/uc8859_7.c > * harbour/src/codepage/uc8859_8.c > * harbour/src/codepage/uc8859_9.c > * harbour/src/codepage/ucascii.c > * harbour/src/codepage/ucatari.c > * harbour/src/codepage/uckam.c > * harbour/src/codepage/uckoi8.c > * harbour/src/codepage/uckoi8u.c > * harbour/src/codepage/ucmacce.c > * harbour/src/codepage/ucmaccyr.c > * harbour/src/codepage/ucmacgrk.c > * harbour/src/codepage/ucmacice.c > * harbour/src/codepage/ucmacrom.c > * harbour/src/codepage/ucmactrk.c > * harbour/src/codepage/ucmaz.c > * harbour/src/codepage/ucmik.c > * harbour/src/codepage/ucnext.c > * updated for new CP API > Warning: please test all national CPs. I'm not able to test unknown for > me national character conditions so it's possible that I made > something wrong. Additionally current CP API does not have > some limitations which existed in the old one so now some hacks > or workarounds can be cleaned. I.e. now all translations are > done using Unicode tables so it's not necessary to use the > same number of characters to make them working. > Updating CP files I've found the following potential problems > in definitions which I haven't fixed or fixed only partially: > > cpes850c.c - update for new format removing hacks for old CP > implementation > cpesisoc.c > remove, it's not longer necessary > cpeswinc.c / > cpeswinm.c - it is the same as cpesiso.c so it should be removed > > cphu852.c \ > cphu852s.c \ > cphuiso.c > update for new format removing hacks for old CP > cphuwin.c / implementation > > cphuisos.c > remove, it's not longer necessary > cphuwins.c / > > cphr437.c > does it really use CP-437? and ^...@~}|{` instead of > cpsl437.c / nationalletters or it uses different then 437 CP for > 7-bit Croatian characters encoding. It's important > because without valid unicode table translations will > not work. > > cpit437.c - update for new version if necessary (upper characters) > > cpsv850.c \ > cpsviso.c > they had ACCENTED_INTERLEAVED but without > ACCENTED_EQUAL > cpsvwin.c / so this setting was ignored. Now it's not ignored. > > cpsvclip.c - update for new format to be fully not only > "almost compatible with Clipper's NTXSWE.OBJ" > > For sure these are not all problems inherited from old CP > implementation so please verify all existing CPs. > > * harbour/src/codepage/cp_tpl.c > + added new example for CP definition. Working on new CPs please read > this description: > If accented characters need special sorting ( HB_CDP_ACSORT_EQUAL > or > HB_CDP_ACSORT_INTERLEAVE ) then you need to mark the accented > characters with the symbol '~' before each of them, for example: > 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 ... > if such multibyte character has its own Unicode representation then > this Unicode value can be set using '=' symbol, for example: > ....h.ch=2A7C.i > and it will be used in translations. > > The Upper case string and the Lower case string should use the > same letters. If some characters does not have corresponding upper > or lower letter then space ' ' can be used as dummy character, for > example in German CPs there is no upper case 'scharfes S' letter > so space is used as dummy character. > > HB_CP_LATIN should be 1 if the national alphabet is based on Latin > otherwise 0 > > Please note that now you can use two versions of CP definition. > The 1-st one which uses human readable form similar to the old CP > definition and 2-nd which uses directly final CP tables so it > allows to replicate any conditions which existed in Clipper or > any other compatible language which uses static tables. > tests/cpinfo.prg can generate automatically .c files with new CP > definition in the 2-nd version. Now if user wants to create new > Harbour CP which is fully Clipper compatible he only has to > compile and link cpinfo.prg with given national sorting module > and then execute it with new Harbour CP name as 1-st parameter. > cp<cpname>.c file is generated which can be added to Harbour > repository. Optional 2-nd parameter is CP description and 3-rd > is Harbour Unicode table ID (if not given 437 is used and should > be updated by user in .c file). This method should definitely > resolve any problems with creating Clipper compatible CP definition. > It also allows to easy verify if CP definitions are compatible. It's > enough to compare generated .c files. > > * harbour/src/codepage/uckam.c > ! fixed Kamenicky Unicode table definition - it was Mazovia CP :) > > * harbour/src/codepage/cpde850.c > * harbour/src/codepage/cpdeiso.c > * harbour/src/codepage/cpdewin.c > ! fixed CP wrongly encoded CP due to limitations in old CP definition. > Now it's possible to define different number of upper an lower > characters (space " " can be used as dummy character) and I used > it to eliminate hack for 'scharfes S' which does not exists as upper > case. > Please clean other CPs which contain similar hacks. > > * harbour/src/codepage/cphu852.c > * harbour/src/codepage/cphuiso.c > * harbour/src/codepage/cphuwin.c > * harbour/src/codepage/cpua866.c > * removed dummy letters introduced for old translation code > > * harbour/src/rtl/natmsg.c > * harbour/src/rtl/cdpapi.c > * harbour/include/hbextern.ch > + added HB_CDPINFO() function > * redirected _NATSORTVER() function to HB_CDPINFO() > > To All, > Please check your national sorting in current version and make > any updates if necessary or inform me about found problems. > I've checked that Polish CPs are working fine and all existing > CPs passes my test program which verified some technical aspects > of CP implementation. But I cannot verify if this definitions > satisfy users in different countries. > > Modified Paths: > -------------- > trunk/harbour/ChangeLog > trunk/harbour/contrib/hbbmcdx/bmdbfcdx.c > trunk/harbour/contrib/rddads/adsx.c > trunk/harbour/contrib/rddsql/sqlmix.c > trunk/harbour/include/Makefile > trunk/harbour/include/hbapicdp.h > trunk/harbour/include/hbextern.ch > trunk/harbour/src/codepage/cp_tpl.c > trunk/harbour/src/codepage/cpbg866.c > trunk/harbour/src/codepage/cpbgiso.c > trunk/harbour/src/codepage/cpbgmik.c > trunk/harbour/src/codepage/cpbgwin.c > trunk/harbour/src/codepage/cpcs852.c > trunk/harbour/src/codepage/cpcsiso.c > trunk/harbour/src/codepage/cpcskam.c > trunk/harbour/src/codepage/cpcswin.c > trunk/harbour/src/codepage/cpde850.c > trunk/harbour/src/codepage/cpdeiso.c > trunk/harbour/src/codepage/cpdewin.c > trunk/harbour/src/codepage/cpel737.c > trunk/harbour/src/codepage/cpeliso.c > trunk/harbour/src/codepage/cpelwin.c > trunk/harbour/src/codepage/cpes850.c > trunk/harbour/src/codepage/cpes850c.c > trunk/harbour/src/codepage/cpesiso.c > trunk/harbour/src/codepage/cpesisoc.c > trunk/harbour/src/codepage/cpeswin.c > trunk/harbour/src/codepage/cpeswinc.c > trunk/harbour/src/codepage/cpeswinm.c > trunk/harbour/src/codepage/cpfr850.c > trunk/harbour/src/codepage/cpfriso.c > trunk/harbour/src/codepage/cpfrwin.c > trunk/harbour/src/codepage/cphr437.c > trunk/harbour/src/codepage/cphr852.c > trunk/harbour/src/codepage/cphrwin.c > trunk/harbour/src/codepage/cphu852.c > trunk/harbour/src/codepage/cphu852s.c > trunk/harbour/src/codepage/cphuiso.c > trunk/harbour/src/codepage/cphuisos.c > trunk/harbour/src/codepage/cphuwin.c > trunk/harbour/src/codepage/cphuwins.c > trunk/harbour/src/codepage/cpit437.c > trunk/harbour/src/codepage/cpit850.c > trunk/harbour/src/codepage/cpitisb.c > trunk/harbour/src/codepage/cpitiso.c > trunk/harbour/src/codepage/cpitwin.c > trunk/harbour/src/codepage/cpltwin.c > trunk/harbour/src/codepage/cppl852.c > trunk/harbour/src/codepage/cppliso.c > trunk/harbour/src/codepage/cpplmaz.c > trunk/harbour/src/codepage/cpplwin.c > trunk/harbour/src/codepage/cppt850.c > trunk/harbour/src/codepage/cpptiso.c > trunk/harbour/src/codepage/cpro852.c > trunk/harbour/src/codepage/cproiso.c > trunk/harbour/src/codepage/cprowin.c > trunk/harbour/src/codepage/cpru866.c > trunk/harbour/src/codepage/cpruiso.c > trunk/harbour/src/codepage/cprukoi.c > trunk/harbour/src/codepage/cpruwin.c > trunk/harbour/src/codepage/cpsk852.c > trunk/harbour/src/codepage/cpskiso.c > trunk/harbour/src/codepage/cpskkam.c > trunk/harbour/src/codepage/cpskwin.c > trunk/harbour/src/codepage/cpsl437.c > trunk/harbour/src/codepage/cpsl852.c > trunk/harbour/src/codepage/cpsliso.c > trunk/harbour/src/codepage/cpslwin.c > trunk/harbour/src/codepage/cpsrwin.c > trunk/harbour/src/codepage/cpsv850.c > trunk/harbour/src/codepage/cpsvclip.c > trunk/harbour/src/codepage/cpsviso.c > trunk/harbour/src/codepage/cpsvwin.c > trunk/harbour/src/codepage/cptr857.c > trunk/harbour/src/codepage/cptriso.c > trunk/harbour/src/codepage/cptrwin.c > trunk/harbour/src/codepage/cpua1125.c > trunk/harbour/src/codepage/cpua866.c > trunk/harbour/src/codepage/cpuakoi.c > trunk/harbour/src/codepage/cpuawin.c > trunk/harbour/src/codepage/uc037.c > trunk/harbour/src/codepage/uc1006.c > trunk/harbour/src/codepage/uc1026.c > trunk/harbour/src/codepage/uc1125.c > trunk/harbour/src/codepage/uc1250.c > trunk/harbour/src/codepage/uc1251.c > trunk/harbour/src/codepage/uc1252.c > trunk/harbour/src/codepage/uc1253.c > trunk/harbour/src/codepage/uc1254.c > trunk/harbour/src/codepage/uc1255.c > trunk/harbour/src/codepage/uc1256.c > trunk/harbour/src/codepage/uc1257.c > trunk/harbour/src/codepage/uc1258.c > trunk/harbour/src/codepage/uc424.c > trunk/harbour/src/codepage/uc500.c > trunk/harbour/src/codepage/uc737.c > trunk/harbour/src/codepage/uc775.c > trunk/harbour/src/codepage/uc850.c > trunk/harbour/src/codepage/uc852.c > trunk/harbour/src/codepage/uc855.c > trunk/harbour/src/codepage/uc856.c > trunk/harbour/src/codepage/uc857.c > trunk/harbour/src/codepage/uc860.c > trunk/harbour/src/codepage/uc861.c > trunk/harbour/src/codepage/uc862.c > trunk/harbour/src/codepage/uc863.c > trunk/harbour/src/codepage/uc864.c > trunk/harbour/src/codepage/uc865.c > trunk/harbour/src/codepage/uc866.c > trunk/harbour/src/codepage/uc869.c > trunk/harbour/src/codepage/uc874.c > trunk/harbour/src/codepage/uc875.c > trunk/harbour/src/codepage/uc885910.c > trunk/harbour/src/codepage/uc885911.c > trunk/harbour/src/codepage/uc885913.c > trunk/harbour/src/codepage/uc885914.c > trunk/harbour/src/codepage/uc885915.c > trunk/harbour/src/codepage/uc885916.c > trunk/harbour/src/codepage/uc88591b.c > trunk/harbour/src/codepage/uc8859_1.c > trunk/harbour/src/codepage/uc8859_2.c > trunk/harbour/src/codepage/uc8859_3.c > trunk/harbour/src/codepage/uc8859_4.c > trunk/harbour/src/codepage/uc8859_5.c > trunk/harbour/src/codepage/uc8859_6.c > trunk/harbour/src/codepage/uc8859_7.c > trunk/harbour/src/codepage/uc8859_8.c > trunk/harbour/src/codepage/uc8859_9.c > trunk/harbour/src/codepage/ucascii.c > trunk/harbour/src/codepage/ucatari.c > trunk/harbour/src/codepage/uckam.c > trunk/harbour/src/codepage/uckoi8.c > trunk/harbour/src/codepage/uckoi8u.c > trunk/harbour/src/codepage/ucmacce.c > trunk/harbour/src/codepage/ucmaccyr.c > trunk/harbour/src/codepage/ucmacgrk.c > trunk/harbour/src/codepage/ucmacice.c > trunk/harbour/src/codepage/ucmacrom.c > trunk/harbour/src/codepage/ucmactrk.c > trunk/harbour/src/codepage/ucmaz.c > trunk/harbour/src/codepage/ucmik.c > trunk/harbour/src/codepage/ucnext.c > trunk/harbour/src/rdd/dbfcdx/dbfcdx1.c > trunk/harbour/src/rdd/dbfnsx/dbfnsx1.c > trunk/harbour/src/rdd/dbfntx/dbfntx1.c > trunk/harbour/src/rdd/hsx/hsx.c > trunk/harbour/src/rtl/cdpapi.c > trunk/harbour/src/rtl/errintlo.c > trunk/harbour/src/rtl/natmsg.c > trunk/harbour/src/vm/estack.c > trunk/harbour/src/vm/itemapi.c > trunk/harbour/src/vm/set.c > trunk/harbour/tests/cpinfo.prg > > Added Paths: > ----------- > trunk/harbour/include/hbcdpreg.h > > > This was sent by the SourceForge.net collaborative development platform, > the world's largest Open Source development site. > _______________________________________________ > Harbour mailing list > [email protected] > http://lists.harbour-project.org/mailman/listinfo/harbour >
_______________________________________________ Harbour mailing list [email protected] http://lists.harbour-project.org/mailman/listinfo/harbour
