* 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)
* utils/hbmk2/hbmk2.prg
+ show warning if user -I/-L parameters explicitly
specify the core header/lib dirs of Harbour. This
is wrong/unnecessary depending on context, and for
sure never does any good.
* harbour/include/hbapicls.h
* harbour/src/vm/classes.c
+ added new internal C function:
void hb_objCloneTo( PHB_ITEM pDest, PHB_ITEM pSource,
PHB_NESTED_CLONED pClonedList );
it copies object or clone it if class overloaded clone operation.
; TODO: add support for user defined class clone operation
* harbour/include/hbapiitm.h
* harbour/src/vm/itemapi.c
* changed returned type of hb_itemCloneTo() to void
* harbour/src/vm/itemapi.c
* use hb_objCloneTo() in hb_itemClone*() functions.
* harbour/src/vm/arrays.c
* use hb_objCloneTo() in array/hash clone code.
* harbour/src/vm/arrayshb.c
! fixed return values in AEVAL() and ACOPY() when array
is passed by reference.
* harbour/src/rtl/tclass.prg
* harbour/src/vm/classes.c
* declare :SUPER and :__SUPER messages as non virtual ones.
Now ::SUPER and ::__SUPER messages executed in object method
returns casting to 1-st super object of the class in which
executed method was defined.
* harbour/include/hbclass.ch
* removed xtranslations for SUPER(): - this workaround for
missing non virtual messages in some Clipper OOP implementations
was breaking valid code which tried to use real :SUPER message
and made SUPER reserved word, i.e. it was not possible to create
code like:
LOCAL super := ::parent2
? super:v1, super:v2
Now this hack is not longer necessary and :SUPER is non virtual
massage in Harbour.
INCOMPATIBLE: If someone has some code like:
SUPER():MSG()
SUPER( PARENT ):MSG()
then please change it to:
::SUPER:MSG()
::PARENT:MSG()
* harbour/contrib/hbmysql/tmysql.prg
* harbour/contrib/hbmysql/tsqlbrw.prg
! fixed to use ::super() instead of super()
* harbour/src/rdd/usrrdd/rdds/arrayrdd.prg
+ added GOCOLD() method - this method is necessary for WAs
passed to HB_DBDETACH()
* harbour/doc/xhb-diff.txt
* small update
* harbour/contrib/*/*.hbx
* regenerated
* harbour/src/rtl/hbcom.c
+ added translation for some OS error codes
* harbour/src/rdd/dbdetach.c
! minor correction in comment
* harbour/doc/xhb-diff.txt
+ added new section:
THREAD LOCAL WORK AREAS AND CONCURRENT WORK AREA ACCESS
* src/rtl/teditor.prg
! fixed a regression from 2012-11-14 04:49 UTC+0100, caused
by an odd coding case that doesn't occure anywhere else
in codebase (verified). Thanks to Vlado for noticing.
* harbour/src/vm/classes.c
! fixed unexpected item clearing in object item assignment when
variable is passed by reference - problem reported by Quique.
Here are code examples which could exploit the problem:
o:_var( @x )
or:
o:var := { @x }[ 1 ]
or:
o:var := iif( .t., @x, )
* harbour/src/rtl/hbcom.c
* enable RTS and DTR registers by default in MS-Windows builds.
I hope it will reduce number of pseudo "error" messages sent
by people who cannot read basic flow control documentation.
% unlock HVM when break signal is sent
* harbour/src/rtl/hbcom.c
* harbour/src/rtl/hbsocket.c
* harbour/src/rtl/filesys.c
! fixed timeval usage in repeated select() calls in systems like Linux
* harbour/contrib/hbwin/win_rpc.c
! fixed WINCE builds
* harbour/src/rtl/hbinet.c
* repeat accept operation if other thread concurently accpeted
new connection or some asynchronous network error appeared.
; TOFIX: basic hbrun functionality is broken and now it is not possible
to create scripts starting with line:
#!/usr/bin/hbrun
which do not have .hb or .prg file name extension
- doc/en/hb_api.txt
- doc/en/hb_apier.txt
- doc/en/hb_apifs.txt
- doc/en/hb_apigt.txt
- doc/en/hb_apiit.txt
- doc/en/hb_apiln.txt
- doc/en/hb_apird.txt
- doc/en/hb_compa.txt
- doc/en/hb_date.txt
- doc/en/hb_macro.txt
- doc/en/hb_vm.txt
* doc/en/hb_set.txt
- deleted 0.5MB worth of collection of very outdated 1:1 copies
of C declarations and their comments from .h headers, as they
were 12 years ago.
* include/hbapi.h
* include/hbvmpub.h
* src/vm/codebloc.c
* HB_CODEBLOCK_PTR type renamed to PHB_CODEBLOCK. Old type
remains for a while for compatibility.
; TODO: Remaining list of similar ones:
public:
HB_MACRO_PTR PHB_MACRO
HB_ERROR_HANDLER_PTR PHB_ERROR_HANDLER
HB_ERROR_INFO_PTR PHB_ERROR_INFO
HB_HASH_ITEM_PTR PHB_HASH_ITEM
HB_HASH_TABLE_PTR PHB_HASH_TABLE
internal:
HB_VOID_PTR PHB_VOID
HB_CBVAR_PTR PHB_CBVAR
HB_EXPR_PTR PHB_EXPR
HB_ENUMERATOR_PTR PHB_ENUMERATOR
HB_ELSEIF_PTR PHB_ELSEIF
HB_LOOPEXIT_PTR PHB_LOOPEXIT
HB_SWITCHCASE_PTR PHB_SWITCHCASE
HB_SWITCHCMD_PTR PHB_SWITCHCMD
HB_RTVAR_PTR PHB_RTVAR
HB_COMMON_PTR PHB_COMMON
HB_PCODE_INFO_PTR PHB_PCODE_INFO
HB_COMP_PTR PHB_COMP
* utils/hbmk2/hbmk2.prg
! hbshell_DirBase()/hbshell_ProgName() fixed to
return proper non-ASCII chars (= if hbrun/hbmk2 resides
in a directory with non-ASCII chars) even if the .hb
script or a shell command had changed the default codepage.
* include/hbdefs.h
- deleted redundant type: 'HB_FUNC_PTR'
INCOMPATIBLE. If you used this, swap it for 'PHB_FUNC'
* ws formatting
* ChangeLog.txt
! typos
* tests/testdyn.prg
! fixed -w3 warnings on non-win
! fixed possible type in text output
* config/postinst.hb
* utils/hbmk2/hbmk2.prg
+ use hb_StrFormat() in few more places
+ added minor exception after .hbx 'do no edit'
* website/index.html
! unclosed tag
* config/darwin/clang.mk
+ use 'clang++' in C++ mode
* include/hbcomp.h
* include/hbmacro.h
* include/hbsetup.h
% deleted redundant and/or unnecessary C RTL headers
+ config/win/clang.mk
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/hbmk2.*.po
* README.txt
+ added very experimental clang support to the build
systems. Very lightly tested.
! fixed entry function detection not being enabled with clang
! fixed .res files not being added on os2/gcc[omf] from .hbc/sources= directive
+ added recently added new filter 'allbcc' to help text
! synced compiler list per platform in help/readme to reality
* ChangeLog.txt
+ updated 2012-12-16 00:17 UTC+0100 with the first DONE item.
* src/3rd/pcre/*
- reverted to 8.31 until all the breakage in configurability
is fixed either in pcre or by redesigning our way of
configuring it. Command-line configuration -DHAVE_*=0
doesn't seem to work anymore.
+ config/win/bcc64.mk
* config/global.mk
* config/postinst.hb
* config/win/bcc.mk
* package/winuni/mpkg_win_uni.bat
* package/winuni/mpkg_win_uni.nsi
* README.txt
* utils/hbmk2/hbmk2.prg
+ added rough cut support for bcc64 to the two make systems.
Untested. Autodetection and some 32-bit specific tricks
not implemented.
bcc64 is based on clang and it's only a bcc "emulation"
layer on top of it. At least it will be a good compiler
now, but it's important to see that it's internally
a clang compiler, so its behavior and raw options are
gcc-like.
Changes are based on xhb patches and bcc64 online docs:
http://docwiki.embarcadero.com/RADStudio/XE3/en/Command_Line_Utilities_Index