* ChangeLog.txt
+ added encoding information to the header, which is UTF-8
from now on. It means that high chars are now allowed,
but ONLY in UTF-8 encoding. Configure your editor accordingly.
+ added SVN props for UTF-8.
* contrib/hbblink/blinker.prg
* contrib/hbxpp/runshell.prg
! RUNSHELL()/SWPRUNCMD() fixes for *nix systems.
* src/codepage/l_hu.c
* comment made bit more precise
* src/codepage/cpua866.c
+ comment added about the different from standard
Ukrainian collation
* harbour/include/hbapiitm.h
* harbour/src/vm/itemapi.c
+ added new C function hb_itemEqual()
* harbour/src/vm/hashes.c
% use hb_itemEqual()
* harbour/src/vm/classes.c
! updated some code to work with class and instance variables
declared with SYNC attribute
! fixed __clsGetProperties() with .T. in 2-nd parameter to not
return PERSISTENT variables twice
* added new PRG functions:
__objGetIVars( <oObject>, [<nScope>], [<lChanged>] )
-> <aIVars> { { <cName>, <xVal> }, ... }
__objSetIVars( <oObject> | <hClass> | <cClassName> | <sClassFunc>,
<aIVars> ) -> <oObject>
* harbour/src/rtl/cdpapi.c
! fixed upper and lower strings validation encoded in UTF8.
If both string contained errors at the same place then
it was silently ignored.
+ added stderr message about wrong CPs when compiled with
__HB_IGNORE_CP_ERRORS macro
* harbour/src/codepage/cpua866.c
! fixed UA866 definition. CP866 does not contain cyrillic version
of "I" and "i" letters and also "Ґ" and "ґ" so Ukrainian letters
defined in l_ua.c cannot be used.
* src/codepage/cpsviso.c
! fixed codepage from ISO-8859-1 to ISO-8859-15, which
is needed to be able to represent all characters in the
current Swedish collation. Though it turns out these
offending three chars are not part of the Swedish alphabet.
So here I'm finishing and letting others to fix the rest
if there is any.
* README.txt
+ added reminder in TROUBLESHOOTING for users who prefer
to install various Harbour version into system locations.
Advice for millionth time: Never install unstable Harbour
versions to system locations.
+ src/codepage/l_sr_cyr.c
+ src/codepage/l_sr_lat.c
* src/codepage/cpsr646.c
* src/codepage/cpsr646c.c
* separated collations from the two correct SR CP modules
; TOFIX: ? This page suggests that there are latin digraphs
that should be specially sorted:
https://en.wikipedia.org/wiki/Serbo-Croatian#Writing_systems
* src/codepage/cpsrwin.c
* changed to utilize the standard Serbian cyrillic collation to
the same used by SR646C CP module. Old one seemed
quite wrong though I'm not even remotely expert in Serbian.
[INCOMPATIBLE]
If you use "SRWIN" for indexing, make sure to reindex
; Verify me
* src/codepage/cpua866.c
* changed to utilize the standard UK (Ukrainian) collation to
the same used by all other Ukrainian CP modules. The old
one missed the characters:
U+0490 (UPPER) - http://codepoints.net/U+0490
U+0491 (LOWER) - http://codepoints.net/U+0491
According to this page, these two chars are part of the
Ukrainian alphabet:
https://en.wikipedia.org/wiki/Ukrainian_language#Alphabet
; TOFIX: RUISO:
This has 4 extra character pairs compared to all
other Russian CP modules:
UPPER:
U+0401 - http://codepoints.net/U+0401 (Russian alphabet)
U+0404 - http://codepoints.net/U+0404 (Ukrainian alphabet)
U+0407 - http://codepoints.net/U+0407 (Ukrainian alphabet)
U+040E - http://codepoints.net/U+040E (Belarusian alphabet)
LOWER:
U+0451 - http://codepoints.net/U+0451 (Russian alphabet)
U+0454 - http://codepoints.net/U+0454 (Ukrainian alphabet)
U+0457 - http://codepoints.net/U+0457 (Ukrainian alphabet)
U+045E - http://codepoints.net/U+045E (Belarusian alphabet)
From the above I surmise that it'd be better if
above chars would be part of std russian collation,
though neither I'm an expert nor I'm sure that putting
them to the end of the collation does anything good,
in which latter case, it'd be better be removed from RUISO.
For sure though that U+401/U+0451 should be added to std
collation in l_ru.c.
Any comments from Russian-breathing Harbourers?
* doc/en/lang.txt
* include/hbapilng.h
* src/rtl/langapi.c
+ HB_LANGNAME() Harbour API extended to accept optional
language ID. See docs.
+ HB_LANGMESSAGE() Harbour API extended to accept 2nd parameter
as optional language ID. See docs.
+ added new C level API to retrieve a language string from
any language module (not just selected one):
const char * hb_langGetItem( const char * pszID, int iIndex );
+ extended hb_langName() C level API to be able to retrieve
name of any language modules, not just selected one:
char * hb_langName( const char * pszID );
[INCOMPATIBLE]
* hb_langDGetItem() C level API moved to 'compatibility' status
* uncrustified unattendedly
* src/codepage/l_fr.c
! fixed another typo which was result of local paste mistake
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ extended the wording of -comp=/-plat= options, default behavior indicated
* tests/langapi.prg
! updated to RTE at the end and to use non-legacy language IDs
* tests/langapi.prg
* contrib/hbnf/tests/datecnfg.prg
* utils/hbtest/hbtest.prg
* minor cleanup
- src/codepage/l_ua.c
+ src/codepage/l_uk.c
* src/codepage/cpua1125.c
* src/codepage/cpua1251.c
* src/codepage/cpuakoi8.c
! renamed to be in sync with ISO language code
and src/lang/uk.c filename
* src/codepage/cpsviso.c
! fixed wrong conversion in prev. Turns out code 140, 156 and 159
are not part of the ISO-8859-1 CP:
[ https://en.wikipedia.org/wiki/ISO/IEC_8859-2 ]
; NOTE: To Klas: I'd appreciate if you could test both SVISO
and SVWIN if they work exactly like before.
It probably will be wrong and if it's so probably it
should be converted to raw form, or even better to
use ISO-8859-15 CP, which does contain the required
Swedish letters:
[ https://en.wikipedia.org/wiki/ISO/IEC_8859-15 ]
* src/codepage/cp_tpl.c
* updated for UTF8
* src/codepage/cphr646.c
* src/codepage/cpsl646.c
* src/codepage/cpsr646.c
! fixed escape chars wrongly converted in prev commit
* src/codepage/cpsr646c.c
+ converted to UTF-8.
; TODO: test it.
* tests/cpinfo.prg
+ generate UTF-8 CP modules when using Harbour builds.
; NOTE: Now all CPs are using UTF-8 (#define HB_CP_UTF8)
so now we may well delete the non-UTF-8 mode and
the extra flag as well.
* harbour/include/hbcdpreg.h
* harbour/include/hbapicdp.h
* harbour/src/rtl/cdpapi.c
* added to hb_cdpRegisterNew() new parameter which informs CP engine
that passed strings with upper and lower letters are in UTF8 encoding.
* harbour/src/codepage/cpplmaz.c
* defined PLMAZ codepage using UTF8 encoding - just as an example.
* harbour/utils/Makefile
* compile hbtest before hbmk2 - it alows to build HVM test tool even if
HBMK2 cannot be compiled (i.e. some compilers does not accept
resource/icon files used by HBMK2)
* src/codepage/cpcs852.c
* src/codepage/cpsk852.c
! changed to forced binary (raw) format by regenerating them from
Harbour with a patched cpinfo.prg. It resolves the clang hang
on OS X after upgrading to Xcode 4.6 with clang 'Apple LLVM version 4.2 (clang-425.0.24) (based on LLVM 3.2svn)'
Besides the above two, more cp sources are still generating
warnings about invalid CP used, and these are the only remaining
Harbour sources that use non-UTF-8 and non-7-bit ASCII chars
(see 2012-07-22 16:09 UTC+0200), so probably it'd be best to fix
them all either this way, or some other, f.e. by storing them
as UTF-8.
* tests/cpinfo.prg
* minor in output formatting
* harbour/contrib/hbct/ctwin.c
! fixed default translation in GETSCRUC() for control characters
* harbour/package/harbour.spec
* updated for new files in bin dir
* contrib/hbhpdf/harupdf.ch
+ sync instruction comment for developers
* contrib/xhb/xhberr.prg
! replaced very shoddy commented code dealing with memvars
with clean code (though using internal calls)
! fixed screen dump for unicode/non-unicode
* include/fileio.ch
* replaced C-specific code in a Harbour header with
non-future-proof but cross-compatible code. untested.
* src/3rd/zlib/Makefile
! potential but untested fix for msvcarm targets
* harbour/src/vm/classes.c
+ added new PRG function:
__clsGetAncestors( <nClass> ) -> { <nSupper1>, <nSupper2>, ... }
* generate RTE if someone tries to register scalar class with instance
variables.
* updated some comments
* harbour/include/hbapiitm.h
* harbour/src/vm/itemapi.c
+ added new C function hb_itemGetLX()
It's similar to hb_itemGetL() but returns HB_TRUE for
some non logical items to mimic Cl*pper behavior.
* harbour/src/rdd/workarea.c
* harbour/src/rdd/dbf1.c
! use hb_itemGetLX() instead of hb_itemGetL() in DBEVAL(),
COPY TO ..., APPEND FROM ..., SORT TO ... functions and
commands - Cl*pper compatible behavior.
* harbour/src/rdd/dbfntx/dbfntx1.c
* minor indenting
* harbour/include/fileio.ch
+ added HB_FA_ANY macro value - it's attribute mask for hb_fsFindFirst()
which includes all directory entries regardless of their attributes.
* harbour/contrib/hbct/files.c
! fixed FILEATTR() to accept by default directories, hidden and system
files when called with file name in first parameter - it's standard
CT3 behavior.
! limit attributes in mask used by FILE*() functions to standard DOS
ones - without it existing code is not portable to * nixes.
* src/rdd/usrrdd/rdds/arrayrdd.prg
! more formatting fix to latest patch
; TOFIX: hbformat to uppercase 'NIL' and to add
space between '!' operator and next token. Also to
format #define code (old) and to not break with inline
comments inside continued lines (old).
- contrib/hbhpdf/error.prg
+ contrib/hbhpdf/errstr.prg
* contrib/hbhpdf/hbhpdf.hbp
! renamed to not have the word 'error' in filename
* src/rdd/usrrdd/rdds/arrayrdd.prg
* patch by Quique:
! Fix '=' (comparative operator) in seek and scope
! Fix ADel()/AIns with 3 arguments
! Fix unlock records when change the pointer
+ Add locate
! my fixes: if() -> iif(), ending EOL, missing formatting,
copyright line
* harbour/src/rtl/itemseri.c
+ added support for deserialization items with cross references encoded
by HB_SERIALIZE() in xHarbour.
Now everything (except codeblocks) [hb_]serialized by xHarbour can
be decoded by HB_DESERIALIZE() in Harbour.
* harbour/src/rtl/itemseri.c
+ added support for deserialization item with cross references encoded
by HB_SERIALIZE() in xHarbour.
Now everything (except codeblocks) [hb_]serialized by xHarbour can
be decoded by HB_DESERIALIZE() in Harbour.
* utils/hbmk2/hbmk2.prg
+ links to markdown and markdown to man-page converter tool
! minor cleanup to prev
* utils/hbmk2/hbmk2.1
* some updates
* ChangeLog.txt
! typos/updates in previous entry
* extras/hbdoc/*.prg
* src/rtl/memoedit.prg
* tests/clasinh.prg
* tests/classch.prg
* tests/inhprob.prg
! updated for new ::super: syntax
* src/rtl/itemseri.c
! fixed typo in latest modification:
'warning: use of unary operator that may be intended as compound assignment (+=)'
* contrib/hbgd/tests/test_out.prg
* contrib/hbhttpd/*
* contrib/hbtip/thtml.prg
* contrib/xhb/*.prg
* extras/httpsrv/*
* extras/guestbk/*
* website/faq/*.html
* website/samples/HowToBuildOnLinux.html
* website/third-party.html
* some steps to modernize old HTML
* extras/hbdoc/*.prg
* do not use [] as string delimiter
- tests/function.cfm
- website/samples/function.cfm.html
* .gitattributes
- obsolete file deleted
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/*.po
+ added '-warn=yes' option in sync with warn= .hbc directive
* cleaned help for -cpp and -cpp= options
* '-inc' option moved to short help page and clarified a little
- deprecated several hbmk2 options synonyms. After this
update, hbmk2 will issue a warning with the recommended
replacement switch (and exact location where it has
found it), and these will ultimately disappear with
HB_LEGACY_LEVEL4 (after next release, or earlier, depending
on how disrupting it is or how long the new release
will take):
-compiler= -> -comp=
-platform -> -plat=
-mwindows -> -gui
-mconsole -> -std
-nodebug -> -debug-
-nooptim -> -optim-
-nomap -> -map-
-noimplib -> -implib-
-nobeep -> -beep-
-nominipo -> -minipo-
-noinc -> -inc-
-noignore -> -ignore-
-nohbcppmm -> -hbcppmm-
-nostrip -> -strip-
-warn= (value omitted) -> -warn=yes
-nowarn -> -warn-
-compr= (value omitted) -> -compr=yes
-compr=def -> -compr=yes
-nocompr -> -compr-
-head= (value omitted) -> -head=full
-head -> -head=full
-head- -> -head=off
-nohead -> -head=off
-nocpp -> -cpp-
-norun -> -run-
-notrace -> -trace-
.hbc directives (no warning for these ones):
compr=def -> compr=yes
<*>=1 -> <*>=yes
<*>=0 -> <*>=no
Macros (no warning for these ones):
${hb_platform} -> ${hb_plat}
${hb_compiler} -> ${hb_comp}
; Update your .hbp/.hbm/.hbc files and hbmk2
command-line according to above and the new
warnings. Important to note, that _all_ of the
required modifications are _backward
compatible_ with Harbour 3.0.0 and 2.0.0.
* package/winuni/RELNOTES.txt
* use -plat= option in examples
* tests/testcom1.prg
+ made it compatible with unicode/script mode
* harbour/src/vm/classes.c
* updated some comments
* renamed hb_setClsHandle() to __objSetClassHandle()
old function name covered by HB_LEGACY_LEVEL5 macro
* harbour/src/rtl/itemseri.c
+ added support for deserialization xHarbour HB_SERIALIZE() output.
All types except codeblocks are supported. I haven't added support
for xHarbour serialized data with cyclic references. If it will be
really necessary then I can implement it.
I also added workaround for bug in xHarbour serialization code so
now Harbour correctly decodes data with LONGLONG numbers though
xHarbour cannot correctly decode its own stream.
Now Harbour can deserialize xHarbour data encoded by HB_SERIALIZE()
and stored somewhere. It can be important in migration process, i.e.
SQLRDD uses HB_SERIALIZE() to encode data in memos so now SQLRDD
port for Harbour should read old tables and decode xHarbour items
correctly. The same is for any other tool which saved HB_SERIALIZE()
output in xHarbour.
* harbour/ChangeLog.txt
* minor update
* utils/hbmk2/hbmk2.prg
! FindInPath(): fixed for filenames with an empty
extension on *nix systems when opening hbrun scripts.
[slight chance of regression.]
! fixed to use ".\" also on non-*nix systems when using
-run option and the target doesn't have a directory.
Previously the wrong executable might have been executed
if another one with the same name existed in path.
+ detect another variant of "multiple definitions" linker option
+ detect "multiple definitions" linker message for another C compiler
+ tests/testcom1.prg
+ added com sample code posted by Przemek earlier
* contrib/hbsms/tests/send.prg
+ added Linux device name
* src/rtl/cdpdet.prg
* cleanup to local function name
* src/rtl/teditor.prg
! fixed current color being used instead of editor's own
colorspec when scrolling the editing area using
up/down/left/right keys
* utils/hbmk2/hbmk2.prg
! -env: option being wrongly listed as command-line only in help.
Regression after 2012-06-14 12:01 UTC+0200.
* comments
* ChangeLog.txt
! adjusted recommended replacement options in previous commit msg
* utils/hbmk2/hbmk2.prg
* code cleanup to ease adding linker message exceptions
* unused functions enclosed in '#if 0' guards
+ show warning for options that are only valid on command line
and ignored when used inside .hbp/.hbm files.
- deleted compatibility features:
- '-arch=' option (use '-platform=' instead)
Notice it will now be passed to Harbour compiler and possibly
interpreted as '-a' option, so it's better to update it _now_.
- '${hb_arch}' compatibility macro (use '${hb_platform}' instead)
- 'mt=mt' .hbc command (use 'mt=yes' instead)
* '-mwindows' and '-mconsole' legacy options will now issue
a warning with suggested replacement options (-gui/-std)
+ hbmk2 will now issue a warning if certain known low-level linker
options are used. Current list is: -Wl,--allow-multiple-definition,
-force:multiple, -w-dpl. These options are ideal if the goal
is to shoot yourself in the foot, otherwise they are not
recommended.
* contrib/hbnf/clrsel.prg
* contrib/hbnf/tests/clrsel.prg
! fixed obscure unicode issue
* utils/hbtest/rt_class.prg
* applied tests/fixcase.hb
% use new Harbour functions in Harbour-only code
* extras/httpsrv/uhttpd.prg
% use new Harbour function
* harbour/src/vm/classes.c
% small speed optimization for inline methods
+ added internal list of super classes bound with each class
% use super class list for scope checking
% use list of super classes for instance area casting
% use super class list in super destructor code - it should cause
noticeable speed improvement for releasing objects with destructors.
! few security fixes like possible GPF on wrong paramas.
* harbour/src/vm/macro.c
% use HB_P_DUPLICATE instrad of HB_P_PUSHUNREF in Field[W]Block()
functions
* harbour/src/rtl/gtwvt/gtwvt.c
! do not generate HB_K_RESIZE after SetMode() if there is no active
console window.
* harbour/include/hbstack.h
* cleaned declarations of some hb_stack*() functions - moved to internal
functions: hb_stackFree(), hb_stackInit(), hb_stackIncrease() and
hb_stackRemove()
exported: hb_stackPush(), hb_stackTopOffset() and hb_stackTotalItems()
* harbour/include/hbwmain.c
! fixed typo in argv list declaration
* harbour/utils/hbtest/rt_class.prg
+ added code to test non virtual hidden messages and super casting.
* harbour/contrib/hbmzip/mzip.c
* minor modifications in casting and parameter checking to make them
compatible with other similar core operations, i.e. FWRITE()
* src/rtl/hbfilehi.prg
! hb_PathRelativize() with a lForceRelative == .T. option
might have return wrong result if the base directory had symlinks.
As a workaround/hack, now the relative path will only be returned
if it actually exists. Otherwise the non-relative variant will
be returned.
; It should fix hbmk2 on OS X when f.e. building a plain .c source
in (default) non-incremental mode.
* utils/hbmk2/hbmk2.prg
! fixed to list missing symbols once even reported multiple
times in the linker output.
! fixed to not list symbols as missing if reported in certain
different error situations (f.e. as doubly defined symbol).
Extend exceptions as needed for other errors/compilers/language translations.
* src/rtl/tget.prg
! fixed RTE in ::OverStrike()/::Insert() when a non-string
parameter was passed
! fixed Clipper incompatibility when passing certain
multichar strings to ::OverStrike()/::Insert(). (f.e. "12", "23")
Clipper always uses the first char only.
! fixed ::unTransform() missing the leading decimal
point in number picture masks (f.e. ".9", "-.9", ".-9")
* tests/rto_get.prg
+ added regression tests for cases fixed above
* tests/rto_get.prg
* tests/rto_tb.prg
* minor modification to make them work as hbrun scripts
* contrib/hbmzip/3rd/minizip/minizip.dif
* contrib/hbmzip/3rd/minizip/zip.c
* contrib/hbmzip/mzip.c
% eliminated part of local minizip patch by using
newer API flavor and passing version_made_by value
in interface code.
* contrib/hbmzip/mzip.c
% use sizeof() instead of repeating HB_PATH_MAX
+ use larger than HB_PATH_MAX buffer to read out
filenames stored in zip file entries. (useful when
using unicode filenames which are stored in UTF-8)
+ added support for .zip unicode filename and comment
support introduced in PKZIP 6.3.2 [dated 2007] standard:
[http://www.pkware.com/documents/casestudies/APPNOTE.TXT]
hb_zipFileCreate()/hb_zipStoreFile()/hb_zipStoreFileHandle()
will now accept a new last parameter <lUnicode>,
which when .T. will force to store the filename/comment
in UTF8 in the .zip file.
hb_unzipFileInfo()/hb_unzipExtractCurrentFile()
will now honor filenames/comments stored in unicode
mode and make any necessary conversions.
; Notice that not every .zip tool support this relatively
new PKZIP format extension. Also notice that before that
extension the only officially supported codepage was
CP437 [See D.1 in Appendix D], which means no accented
chars. Whatever else CP used, the behavior becomes
application dependent and may or may not work as expected.
; Test/review/whatever
* contrib/hbmzip/tests/myunzip.prg
+ standardized date format
+ switched internally to unicode to be able to handle
unicode code to work best with unicode zips.
* contrib/hbmzip/tests/myzip.prg
+ new '--unicode' switch to enable storing filenames
in unicode by using PKZIP 6.3 .zip format and
unicode mode internally.
* src/rtl/gtwin/gtwin.c
! fixed to handle Alt+numpad keyboard entry in case the scan codes
were received in a single ReadConsoleInput() call. Such behavior
was observed when using keypad/alt mode with multiple brands of
barcode scanners, but most probably it might have happened anytime.
! fixed warnings in trace printf() masks
+ printf() trace will now log all scan codes read by ReadConsoleInput(),
more scan code information in more readable way and alt+numpad handling
more comprehensibly logged.
* cleaned a few numeric types
; Review me.
* utils/hbmk2/hbmk2.prg
+ display option source file/line in some output messages
! '-nooptim' option was not recognized after 2009-05-13 08:10 UTC+0200
(recommended format '-optim-' was working all along)