+ contrib/hbwin/tests/testax.prg
+ Added self-contained AX example created by Alex Strickland.
(plus some formatting and warning fix)
* contrib/hbwin/axfunc.prg
+ Added <cID> parameter to WIN_AxGetControl().
Please review it.
* harbour/src/rtl/hbini.prg
! fixed stripping last character when the last line in ini file
does not contain valid EOL - thanks to Mario H. Sabado for information
about the problem
* contrib/rddads/adsfunc.c
* contrib/rddads/rddads.h
* contrib/rddads/ads1.c
! Fixed fatal errors for 64-bit builds. I don't if there exist
a 64-bit version of ACE, but anyway.
* harbour/config/win/xcc.mk
+ added small hack enabled for sh only to resolve two problems with
harbour.dll in XCC builds: the import library was created in bin
directory and it was using .LIB extension instead of .lib so it
was not working with case sensitive FS
* utils/hbmk2/hbmk2.prg
+ Added option to control C compiler warning level:
-warn=yes mode will set the warning level exactly
the same way as it's set for Harbour builds. This
is also the default setting.
This setting is usually the highest useful setting,
which sometimes equals to C compiler default, sometimes
not.
-warn=no mode will try to turn off warnings. This works
exactly the same way as disabling warnings in Harbour
builds. Notice this isn't supported with all C compilers,
and with some compilers this equals to default C compiler
mode. This mode isn't recommended for any sort of serious
work.
-warn=def mode will leave everything as is, IOW to
C compiler defaults. There is no equivalent setting in
Harbour builds.
* config/wce/poccarm.mk
! Synced warning option with win/pocc.
* config/wce/msvcarm.mk
! Synced warning option with win/msvc.
! Synced HB_BUILD_MODE with win/msvc.
(this means C++ is now the default)
* config/win/xcc.mk
! Synced warning option with pocc.
* examples/hbmsql/tests/dbf2msql.prg
* examples/hbmsql/tests/test.prg
* examples/hbmsql/tests/hbmk.hbm
* examples/hbsqlit2/tests/hbsqlite.prg
* examples/hbsqlit2/tests/hbmk.hbm
* examples/hbapollo/tests/hbmk.hbm
* examples/hbapollo/tests/apollo.prg
* examples/hbvpdf/tests/pdf_demo.prg
* examples/hbvpdf/tests/hbmk.hbm
* examples/hbvpdf/tests/tstpdf.prg
! Fixed warnings and errors in example test apps.
+ Added -es2 option to test default options in examples.
* harbour/src/rtl/dateshb.c
! fixed HB_TTOD() and HB_DTOT() results - they were reverted by mistake
+ added support for optional second parameter in HB_DTOT() function with
time as numeric value in second() like representation or as character
string with HH:MM[:S[S][.f[f[f[f]]]]] [PM|AM] representation, i.e.:
? HB_DATETIME()
? HB_DTOT( date(), seconds() )
? HB_DTOT( date(), time() )
+ added support for optional second parameter passed by reference in
HB_TTOD() function. If given then this functions stores in it number
of seconds in given day specified by timestamp value, i.e.:
dDate := HB_TTOD( HB_DATETIME(), @nSec )
gives similar functionality to:
dDate := date()
nSec := seconds()
+ added support for optional 3-rd parameter in HB_TTOD() functions
with timestamp format. If given then this function stores time
part in second parameter as formatted string value. For empty
string _SET_TIMEFORMAT is used, i.e.:
dDate := HB_TTOD( HB_DATETIME(), @cTime, "hh:mm:ss" )
* harbour/src/common/hbwince.c
+ added GetEnvironmentVariableW() - it fixes WinCE builds after recent
ANSI to UNICODE function conversions. In WINCE such functions do not
exist.
* harbour/src/rtl/gtclip.c
* pacified MinGWCE warnings
* harbour/src/rtl/dateshb.c
+ added HB_TTOD() and HB_DTOT() functions
* harbour/include/hbexprb.c
! always optimized ASC() and LEN() functions (was disabled by -kc switch).
These optimizations are not Harbour extensions - Clipper also optimize
above functions
* harbour/doc/cmpopt.txt
* updated optimization description
* harbour/doc/pp.txt
+ added information about new lexer
* harbour/src/rtl/cdpapi.c
* harbour/include/hbapicdp.h
+ added new functions: hb_cdpStrnToU16LE() and hb_cdpStringInU16Length()
* harbour/contrib/rddads/rddads.h
! define (if not defined) x64 macro in all 64bit builds not only for
MinGW64
* define (if not defined) unix macro in all HB_OS_UNIX builds not only
for Linux. TOCHECK: CygWIN builds.
* harbour/src/rtl/Makefile
+ harbour/src/rtl/hbbfish.c
* harbour/include/Makefile
+ harbour/include/hbbfish.h
+ added support for BlowFish encryption at C level:
hb_blowfishInit(), hb_blowfishEncrypt(), hb_blowfishDecrypt()
This code implements BlowFish algorithm designed by Bruce Schneier.
The description of BlowFish algorithm can be found at:
http://www.schneier.com/paper-blowfish-fse.html
This code uses for initial s-boxes and p-array values PI hex digits
taken from tables public at:
http://www.schneier.com/blowfish.html
which can be downloaded from:
http://www.schneier.com/code/constants.txt
This should be quite fast implementation (probably much faster
then reference one) but please remember that in BlowFish algorithm
startup initialization of encryption tables is intentionally
designed to be expensive to strongly reduce the efficiency of
brute force attacks so call hb_blowfishInit() once for each
new password and then reuse initialized encryption tables in
hb_blowfishEncrypt() and hb_blowfishDecrypt().
I'll add .prg functions later.
TODO: add some asymmetric key encryption.
* contrib/hbtip/sendmail.prg
* contrib/hbtip/mail.prg
! Fixed encoding of subject, from, to, cc, bcc address lists, in some
places it was missing (cc, bcc, from), in some other places multiple
address support was missing (to, cc, bcc) from recent addition of
encoding support.
+ Added/Fixed support for human readable name component in e-mail addresses.
+ Using TIPMAIL:SETHEADER() in HB_SENDMAIL() to set above header components.
! Several minor cleanups in TIPMAIL:SETHEADER():
- handling of empty values
- using space instead of tab when passing multiple addresses in headers.
Haven't checked the standard, but I used to see space there.
- Minor formatting, optimizations.
! Minor tweaks to space and _ char in Q encoding. Now
they are both simply encoded.
; Overall probably a rewrite would be the best in case of hbtip mailing,
and maybe not just for mailing. Code is full of strange tweaks,
redundancy and the class layout/communication is rather strange, f.e.
SMTP protocol data is passed via TURL:cFile variable from HB_SENDMAIL
to SMTP client class. Also charset support is just an aftertought so
user code needs close syncronisation with HB_SENDMAIL() and replicating
the same parameter parsing logic on multiple layers of code.
And I've probably just scratched the surface, f.e. I didn't test
attachments of HTML mails and probably several other options as well.
; Anyway please test.
* harbour/src/compiler/genc.c
* harbour/src/compiler/compi18n.c
* use "w' instead of "wb" in hb_fopen flags. It causes that in some
systems like DOS or Windows if CRTL supports it then all \n in
generated files will be automatically translated to native EOLs
(\r\n).
This modification should make .pot and .c files generated by
Harbour compiler more readable for DOS and Windows users.
* harbour/src/compiler/gencobj.c
! fixed wrong hb_fopen() flags 't' is not documented fopen() flag
so some systems may refuse to open files when it's used.
* src/common/hbver.c
* src/rtl/fstemp.c
* contrib/hbwin/win_prn2.c
+ Changed to use native instead of fixed ANSI version of win API calls.
; Please review me, all these are critical low level functions,
so any mistakes can be deadly.
; TODO: Remaining dynamic versions, although maybe for dynamically
loaded win API functions it's better to stay with ANSI
version for compatibility.
* harbour/src/rdd/dbfcdx/dbfcdx1.c
* removed old unused macros
* harbour/include/hbcompdf.h
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/cmdcheck.c
* harbour/src/compiler/complex.c
* harbour/src/compiler/hbcomp.c
* harbour/src/compiler/gencobj.c
* harbour/src/compiler/hbusage.c
+ added support for -gd[.<destExt>] switch.
When used Harbour compiler generates also .d file with dependencies
list in the form like for make systems:
<destFile>: <sourceFiles,...>
optional .<destExt> parameter value can be used to replace default
extension in <destFile>.
Now users can generate .d files without additional overhead in the
same pass as normal compilation by simple adding -gd[.<destExt>]
switch to compilation command instead of executing harbour compiler
second time with -sm switch.
* harbour/doc/man/harbour.1
* updated man page
* harbour/utils/hbmk2/hbmk2.prg
* removed -kj switch - it's not longer necessary to improve -sm
* minor formatting
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ Added support for .d dependency files as source files in both
command line and .hbc sources= line.
* Changed to use hash operators instead of functions in FindNewerHeaders().
[ Probably hashes could be used much more in hbmk2 code to optimize
some parts. ]
* Synced the way hb_FGetDateTime() call success is handled.
+ Added more provision for inctrypath handling in conjunction
with new dependency checking techniques. Still doesn't work
though.
; TOFIX: inctrypath with new dependency checking techniques.
; Please test .d support.
; NOTE: As for different fallback techniques when .d files are used,
well, maybe this should be somehow signaled on a .d file basis,
inside the .d file, like continue to check, stop checking, etc.
; NOTE: There is a slight chance for regressions.
* src/rtl/filesys.c
! hb_fsIsDrv() changed on win platform to use GetLogicalDrives() API
instead of GetDriveTypeA(). This should fix existing TOFIX.
Thanks for Saulius Zrelskis for the suggestion.
I'd like to ask users to make side-by-side comparisons with
CA-Cl*pper to see if we're compatible.
! Fixed hb_fsIsDrv() on non-win platforms to always set
internal error to zero. CA-Cl*pper does the same.
* utils/hbmk2/hbmk2.prg
+ Added .d file parsing routines contributed by Przemek.
with few minor adaptations for hbmk2 and formatting.
; NOTE: Not yet used.
* contrib/hbwin/tests/testole.prg
+ Added PocketSOAP example. Contributed by Toninho.
* contrib/hbwin/win_misc.c
* contrib/hbwin/wapi_shellapi.c
+ Added _SET_OSCODEPAGE support for WAPI_SHELLEXECUTE() and
WIN_RUNDETACHED(). This may make these functions incompatible
in some situations. This clears to TODOs in source.
* INSTALL
* Minor.
* ChangeLog
+ Item marked DONE.
* utils/hbmk2/hbmk2.prg
+ Added 'gcc -MM' based C header dependency detection in -head=native mode.
Please note that it's slower than regular methods, so for projects
with many .c source files this setting may not be ideal.
! Added gccomf to a few more places where checking for gcc family.
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
* Renamed header parsing mode 'real' to 'native'.
Looks to be the final.
! Fixed minor error in prev: one debug message was always on.
! Turn off native .prg header parsing in -xhb and -hb10 operating
modes.
; TODO: for .prg header parsing use one compiler call instead of
one for each .prg.
; TODO: with gcc family compilers use 'gcc -MM' mode for header
parsing. Probably needs separate control, as (at first)
it seems to be much slower than current simple method.
* src/codepage/cpes850c.c
! Updated to be compatible with CA-Cl*pper.
Submitted by Maurizio Faccio.
* src/codepage/cpesisoc.c
* src/codepage/cpeswinc.c
* Synced with cpes850c.
* contrib/hbwin/tests/testole.prg
* Minor cleanups.
* harbour/src/compiler/cmdcheck.c
* minor formatting
* harbour/src/compiler/complex.c
% disabled lexer when -sm is used with -m switch.
In Harbour compiler lexer is only simple translator between PP and
grammar parser tokens so the overhead is rather small anyhow it
eliminates executing some unnecessary code.
If -sm switch is used then we need lexer to detect files included by
statements like:
DO <file> [WITH ... ]
_procReq_( <file> )
_procReq_( <file> + <ext> )
-m switch disable including such files so we can fully eliminate
lexer and preprocess PP tokens directly in a loop.
Now the cost of -sm switch is reduced to the PP cost plus some
minor static overhead.
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ Added support for new dependency checking method which uses
Harbour compiler to find out dependent files in incremental
mode. This of course only works for .prg sources, .c/rc source
dependency checking will continue to use simple method
which looks for '#include "' string.
Enable new mode with: -head=real cmdline or "head=real" .hbc
option. When this mode is active .c/.rc dependency checking
will be set to default 'partial' level.
NOTE: The activation method is tentative and will be finalized
after doing some functional and performance testing
with this new feature.
; TODO: Multimodule support in incremental mode isn't complete
and should be added. Currently all modules are considered
as equal dependencies of parent source. I'd appreciate if
this code would be peer-reviewed as I didn't make any
multimodule tests.
* harbour/include/hbpp.h
* harbour/include/hbcompdf.h
* harbour/src/pp/ppcore.c
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/cmdcheck.c
* harbour/src/compiler/ppcomp.c
* harbour/src/compiler/hbusage.c
* harbour/doc/man/harbour.1
+ added support for new compiler switch -sm which can be used to
generate dependencies list.
* modified HB_COMPILEBUF() function to return dependencies list
instead of .HRB file body when -sm switch is used. Files in
single module are separated by spaces and modules are separated
by TABs (chr(9))
To reduce overhead I suggest to use in programs like hbmk2
together with -sm also -kj switch - it disables some time
consuming optimizations in compiler code.