* src/rtl/sha1hmac.h
* src/rtl/sha1hmac.c
* src/rtl/hbsha1.c
* src/rtl/hbsha1hm.c
* src/rtl/sha1.c
* src/rtl/sha1.h
* Reverted previous two fix attempts (for the most part) and replaced
it with patch posted by Przemek. This fixes low level SHA1 code,
and it's the efficient solution.
* src/rtl/sha1hmac.h
* src/rtl/sha1hmac.c
* src/rtl/hbsha1.c
* src/rtl/hbsha1hm.c
! Futher fixes to 'const controversy' (which in my terms meant
'wrong usage of const'). Didn't make extensive tests (pls do)
and this change makes SHA1 functions very inefficient for large
input buffers. Either we should remove this, or find a proper
implementation which doesn't tamper with the input buffer
internally.
Pls note that after these changes SHA1 functions will RTE if
any input parameter is not string.
+ contrib/hbgd/tests/tpoly.hbp
+ contrib/hbgd/tests/tpoly.prg
+ contrib/hbgd/tests/tpolyc.c
+ Added GD sample submitted to the list by Tamas.
(I converted tabs to spaces, rename a file, cleaned the hbp file,
and changed to std SVN header format)
* harbour/ChangeLog
* marked may last TODO note as DONE - thanks to Viktor and Mindaugas
* harbour/include/hbmacro.h
! added missing const in hb_macroGenPCodeN() declaration
* harbour/include/hbapi.h
* added const to HB_CODEBLOCK.pCode
* harbour/include/hbcompdf.h
! added missing const to HB_MACRO.string
* harbour/src/pp/ppcore.c
* harbour/src/common/hbstr.c
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/hbfix.c
* harbour/src/compiler/complex.c
* harbour/src/compiler/hbdead.c
* harbour/src/compiler/genc.c
* harbour/src/compiler/hbident.c
* harbour/src/compiler/gencc.c
* harbour/src/compiler/hblbl.c
* harbour/src/compiler/harbour.yyc
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyh
* harbour/src/vm/macro.c
* harbour/src/vm/codebloc.c
* harbour/src/vm/itemapi.c
* harbour/src/vm/hvm.c
* harbour/src/rtl/hbjson.c
* harbour/src/rtl/sha1.c
* harbour/src/rtl/sha2hmac.c
* harbour/src/rtl/hbsocket.c
* harbour/src/rtl/hbbffnc.c
* harbour/src/rtl/itemseri.c
* harbour/src/rtl/filebuf.c
* harbour/src/rtl/hbbfish.c
* harbour/src/rtl/gttrm/gttrm.c
* harbour/src/rdd/workarea.c
* harbour/src/macro/macrolex.c
* harbour/src/rdd/usrrdd/usrrdd.c
* cleaned const pointer casting
* harbour/src/rdd/usrrdd/usrrdd.c
! fixed very serious bug located during const pointer cleanup
which should cause GPF on user code creating indexes
* harbour/src/rtl/sha2.c
* minor formatting
; TOFIX: Seems that there is sth wrong with src/rtl/sha1.c.
Function SHA1_Transform() wrongly declares 2-nd parameter
buffer[64] as const when in fact it changes it what can be
seen if
BYTE64QUAD16 *block;
is changed to:
const BYTE64QUAD16 *block;
This casting which removes const hides potentially very serious
bug - modifying readonly memory area. SHA1_Transform() changes
the buffer so the 2-nd parameter must be declared without const.
After such modification C compiler should warn when const buffers
are passed to this function and such places should be fixed.
In fact it seems to be only line 136:
SHA1_Transform(context->state, &data[i]);
Viktor can you look at it and fix the code?
* harbour/contrib/hbct/bitnum.c
! fixed && operator wrongly used instead of & in function NumMirr()
* harbour/contrib/rddads/ads1.c
* removed variable declaration which was hiding other one
with the same name
* harbour/src/rtl/hbdyn.c
* harbour/src/rtl/gtsln/mousesln.c
* harbour/src/rtl/gtsln/kbsln.c
* harbour/tests/bldtest/bldtest.c
! aded mising ( void ) to declarations of functions
without parameters ()
* harbour/include/hbpp.h
! removed repeated declaration of hb_pp_eof()
* harbour/include/hbapicdp.h
* harbour/include/hbapilng.h
* harbour/include/hbgtcore.h
* added extern declaration to HB_*_REQUEST() macros to pacify
undeclared global functions warnings
* harbour/include/hbstack.h
! added missing hb_stackDec() declaration
* harbour/include/hbdefs.h
! added missing const in some endian macros
* removed some unnecessary casting which may hide bugs
in the code
* harbour/include/hbapi.h
! removed repeated declaration of hb_strVal()
* harbour/include/hbznet.h
! removed repeated declaration of hb_znetError()
* harbour/include/hbcompdf.h
* minor comment
* harbour/src/vm/hvm.c
! added missing static to hb_vmTSVarClean() declaration
* added extern hb_vmForceLink() declaration to pacify
undeclared global functions warnings
* harbour/src/vm/thread.c
* make hb_threadInit() and hb_threadExit() internal HVM
functions available only in MT mode
* harbour/src/rtl/dates.c
! added missing static to hb_dateUnformatRaw() declaration
* harbour/src/macro/macrolex.c
* added extern hb_macro_yylex() declaration to pacify
undeclared global functions warnings
* harbour/src/rdd/workarea.c
* added extern _hb_rddWorkAreaForceLink() declaration to pacify
undeclared global functions warnings
* harbour/src/compiler/complex.c
* added extern hb_comp_yylex() declaration to pacify
undeclared global functions warnings
* harbour/contrib/hbnetio/netiocli.c
! added missing static to s_fileFlush() declaration
* harbour/contrib/hbct/tempfile.prg
! respect in TmepFile() function default file attributes set by
SetFCreate()
* harbour/contrib/hbct/ctstrfil.h
! added missing declarations for ct_getfcreate() and ct_setfcreate()
* harbour/contrib/hbwin/legacy.prg
* removed dummy RETURN statement
* harbour/contrib/xhb/fparse.c
! added missing static to hb_ParseLine() declaration
* harbour/contrib/xhb/freadlin.c
! added missing static to hb_fsReadLine() declaration
* harbour/contrib/xhb/txtline.c
! added missing static to hb_readLine() and hb_tabexpand() declarations
! fixed uninitialized variable warning exploited by above modification
(static function was automatically inlined increasing optimizations)
* harbour/contrib/xhb/hbserv.c
! removed repeated declaration of hb_isService() and hb_serviceExit()
* harbour/contrib/xhb/cstructc.c
* disabled public C functions hb_retclenAdoptRaw() and hb_retclenStatic()
* harbour/contrib/xhb/xhbat.c
* declare C function hb_AtSkipStrings() as static
Warning: this functions is part of public xHarbour C API.
; TODO: The following functions are declared as public but without
any prototypes in header files so they should be made static
or we should add them to some header files:
hbver.c:143: hb_verHostCPU()
hbjson.c:640: hb_jsonEncode()
hbjson.c:665: hb_jsonDecode()
sha2.c:228: sha256_transf()
sha2.c:445: sha512_transf()
I would like to ask authors to look at them and chose
best solution.
* harbour/src/rtl/gtclip.c
! fixed bug in calculation of maximum unicode clipboard buffer size
* harbour/src/compiler/complex.c
! recognize BREAK( [<exp>] ) as BREAK [<exp>] statement
not function call - it enables some addiitonal compiler
logic like warning for unreachable code, i.e.:
proc main()
break()
? "Hello World!!!"
return
* harbour/contrib/xhb/xhb.hbp
* harbour/contrib/xhb/xhb.hbx
+ harbour/contrib/xhb/xhbmvinf.c
+ added __MVSYMBOLINFO() xHarbour compatible function
* harbour/src/rdd/dbfntx/dbfntx1.c
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* harbour/src/rdd/dbfcdx/dbfcdx1.c
! fixed INDEX ON ... command with USECURRENT clause to
ignore active filter on internal GOTOP operation.
Many thanks to Oleg for bug report and self contain
code example illustrating the problem.
* src/common/hbver.c
+ Added support for hb_iswin*() and HB_OSISWIN*() functions
on MS-DOS platforms.
Please test them.
; TODO: Detection of 2K and Vista isn't currently implemented,
but can be added if someone knows how to detect them.
* harbour/src/rdd/sdf1.c
! fixed bug in SDF import procedure - many thanks
to Enrico Maria Giordano for reporting the problem
and to Vicente Guerra for locating the reason
BTW fix committed to xHarbour may work but it's not correct,
I suggest to update it.
* harbour/src/rtl/hbdyn.c
* harbour/src/rtl/hbsocket.c
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* harbour/src/rdd/dbfcdx/dbfcdx1.c
* harbour/src/rdd/dbffpt/dbffpt1.c
* harbour/contrib/hbct/bitnum.c
* harbour/contrib/hbwin/olecore.c
* pacified some of MSVC6 warnings reported by Andi
* harbour/utils/Makefile
* added internal/developers build switch
* harbour/include/hbcompdf.h
* harbour/include/hbexprb.c
* harbour/src/common/expropt1.c
+ added protection against pushing series of parameters on HVM
stack by hb_arrayToParams() function used in wrong contects,
i.e.:
var := hb_arrayToParams( { 1, 2, 3 } )
Possible TODO: add compile time warning in such case.
* harbour/contrib/hbexpat/3rd/expat/_hbconf.h
* harbour/contrib/hbexpat/3rd/expat/expat.hbp
* harbour/contrib/hbexpat/3rd/expat/xmltok.c
* harbour/contrib/hbexpat/3rd/expat/xmlrole.c
* harbour/contrib/hbexpat/3rd/expat/xmlparse.c
* updated to define endian setting using information from hbdefs.h
* harbour/contrib/hbexpat/3rd/expat/xmltok.c
! added missing members in structure initializations
- external/zlib
- external/png
- external/jpeg
- external/hbpmcom
- external/pcre
- external/Makefile
+ src/3rd
+ src/3rd/zlib
* src/3rd/zlib/Makefile
+ src/3rd/png
* src/3rd/png/Makefile
+ src/3rd/hbpmcom
* src/3rd/hbpmcom/Makefile
+ src/3rd/jpeg
* src/3rd/jpeg/Makefile
+ src/3rd/pcre
* src/3rd/pcre/Makefile
+ src/3rd/Makefile
* Moved /external to /src/3rd
; This way all core components reside in core.
; NOTE: png, jpeg are not referenced by core components,
so they may be moved to contrib area in the future.
* config/detect.mk
* Makefile
* src/Makefile
* src/rtl/hbcom.c
* contrib/hbmzip/hbmzip.hbp
* contrib/hbmzip/3rd/minizip/minizip.hbp
* contrib/hbhpdf/hbhpdf.hbp
* contrib/hbhpdf/3rd/libhpdf/libhpdf.hbp
* contrib/hbhpdf/3rd/libhpdf/hpdf.h
* contrib/hbwin/hbwin.hbp
* Updated to reflect above change.
; NOTE: Now -j builds can be optimized to better overlap with
3rd component builds. Please do it in src/Makefile.
* contrib/hbplist
* Updated.
* src/rtl/version.c
+ HB_VERSION( HB_VERSION_PLATFORM ) changed to use hb_verPlatformMacro().
This means it will now supported recently added platforms.
; NOTE: For consistency, __PLATFORM__WINDOWS should pbly be changed to __PLATFORM__WIN,
and __PLATFORM__WINCE to __PLATFORM__WCE.
* utils/hbmk2/hbmk2.prg
+ Added HB_HOST_PLAT macro, returning: hb_Version( HB_VERSION_PLATFORM )
+ Added HB_HOST_PLAT_UNIX macro.
! Fixed cygwin to be detected as cross target platform.
! Few cygwin related TOFIX-es cleared.
* external/Makefile
- external/sqlite3
+ contrib/3rd
+ contrib/3rd/sqlite3
* contrib/3rd/sqlite3/sqlite3.hbc
+ contrib/3rd/sqlite3/sqlite3.hbp
- contrib/3rd/sqlite3/Makefile
* Moved sqlite3 foreign code to contrib/3rd dir from
global 3rd party code dir.
+ Migrated remaining platform tweaks from Makefile to sqlite3.hbp
Bumps are expected, pls test.
* contrib/hbsqlit3/hbsqlit3.hbp
* contrib/sddsqlt3/sddsqlt3.hbp
* Changed sqlite3 position.
+ Added sqlite3 reference.
; Please note that after above changes sqlite3 will only be built
if required.
* src/common/hbver.c
* Formatting.
* include/hbvm.h
* src/vm/hvm.c
+ Added hb_vmPushPointerGC().
* contrib/hbqt/qtcore/hbqt_init.cpp
+ Added experimental (not activated) code example to pass GC collected
pointer back from callbacks. This is just intermediate step, as it
should return .prg level class, but at least some room for leaks
can be avoided this way, plus the pointer type is identifiable.
Based on code posted to list by Pritpal.
* src/rtl/hbjson.c
* src/rtl/hblpp.c
! Silenced msvc64 warnings.
* utils/hbrun/hbrun.prg
* Moved creation of header hash to separate function.
+ Added HBRUN_NOHEAD envver to disable embedded headers.
Any non-empty value will have this effect.
* utils/hbrun/Makefile
+ Enabled embedded headers.
* contrib/make.hbs
* config/postinst.hbs
* bin/hbxpatch.hbs
! Resolved TOFIX notes: now the headers can be used
just like in any .prg, and no need to locally #define
core constants.
Also hbqt_hbmk2_plugin.hbs should work now in stdalone
mode, with all the OOP code.
* utils/hbmk2/hbmk2.prg
* MS-DOS LFN vs. SFN next guess: deleted hack when loading
plugin.
* include/hbwmain.c
* src/vm/cmdarg.c
* config/bin.mk
* Cygwin main entry patch from Tamas.
* INSTALL
+ Added note that all settings are case sensitive.
Not that those would read it who would need to.
* harbour/include/hbpp.h
* harbour/include/hbcomp.h
* harbour/src/pp/ppcore.c
* harbour/src/main/harbour.c
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/ppcomp.c
* harbour/src/compiler/hbcmplib.c
* added support for setting hash array as container for included
files in HB_COMPILE*() functions.
* harbour/utils/hbrun/hbrun.prg
+ added optional support for embedding all core header files
into final HBRUN executable file. It can be enabled by
compilation with HBRUN_WITH_HEADERS macro.
* harbour/contrib/hbsqlit3/hbsqlit3.c
! removed non standard C construction
% push function parameters directly on HVM stack
* harbour/src/rtl/cdpapi.c
+ added internal macro for developers making tests with C compilers
which can make some character translations in compiler strings.
This macro (__HB_IGNORE_CP_ERRORS) disables 9994 internal error.
("Harbour CP (%s) initialization failure").
It should not be used in production builds.
* include/harbour.hbx
* src/rtl/dateshb.c
+ Added HB_DATE( [<nYear>, <nMonth>, <nDay>] ) -> <dDate>
If called without options, it returns current date, just like DATE().
* Changed HB_DATETIME() to work like above except for timestamps.
* contrib/hbqt/hbqt_all.hbp
- Deleted wrong MS-DOS fix.
* contrib/hbqt/utils/hbqtgen.prg
% Optimized to not read each input file twice.
* contrib/hbqt/hbqt_hbmk2_plugin.hbs
+ Added #include "hbclass.ch". After 2010-11-03 23:28 UTC+0100
it works as expect. Thanks a lot Przemek!
Header dir is setup correctly now by hbmk2, so hbmk2 plugins
can safely use Harbour headers. (in hbmk2 context the headers
should be present anyway, so this is square)
* harbour/src/compiler/hbmain.c
+ allow to use -p* switches in HB_COMPILEFROMBUF()
* harbour/src/compiler/harbour.y
+ accept
#line <num>
directive without file name. It can be usable in some cases
and it also resolves the problem reported by Viktor when
we compile file without any name, i.e. using HB_COMPILEFROMBUF()
function.
* harbour/src/compiler/harbour.yyc
* regenerated
* utils/hbmk2/hbmk2.prg
* Using _APPMAIN() instead of MAIN() as entry function, to be
friendly with plugins using MAIN().
* Commented test code added for hbrun integration.
+ Added popular package handler's lib and include directory
to bsd builds' default setup.
* Added comments describint which such directory belongs to which package
system (darwin, bsd)
+ Plugins will now be called with Harbour header directory properly setup,
so it's possible to use headers in them.
* include/hbclass.ch
- Deleted some lines which were active when __HARBOUR__ is not defined.
As I understand this is Harbour-only header, so __HARBOUR__ is always
to be defined. Please speak up if you know what it was for.
It was added here: 2006-10-04 02:30 UTC+0200
* src/pp/hbpp.c
+ Support for -e option which lets override the name of the
public entry function in generated PP rules .c file.
* contrib/hbqt/hbqt_hbmk2_plugin.hbs
+ Some provisions to handle .qth files.
* INSTALL
* https links changed to http for win nightly pkgs.
* src/rtl/gete.c
% Deleted very old code to satisfy Borland C++ getenv()
requirement, and which turned out to be a mere Borland
documentation error (confirmed by Borland).
Thanks to Tamas Tevesz for getting to end of this and
the patch.
* utils/hbmk2/hbmk2.prg
* Formatting.
* ChangeLog
! Fixed bloody daylight saving timezone in recent commits.
* src/pp/ppcore.c
! Fixed regression in 2010-11-01 16:42 UTC+0200.
Forgot to set value for __PLATFORM__* macros.
INCOMPATIBLE: So far the value returned by __PLATFORM__*
macros were the version part from the string
also returned by OS(), but only in non-cross
platform situations. Now they are defined
without any value, which means now the returned
value is consistent regardless of build-situation
and OS version. If you relied on this feature,
change your code to extract OS version from value
return by OS() function.
* src/vm/mainwin.c
% Do not include windows header.
* src/vm/cmdarg.c
- Undone some (innocent) part of patch in 2010-11-01 13:53 UTC+0200.
* INSTALL
* Moved around cygwin inside example section.
* include/hbapi.h
* src/common/hbver.c
+ Added hb_verPlatformMacro(), which returns string as it appears
in __PLATFORM__* macro.
This function will have to be extended for each new platform
Harbour is getting ported to.
* src/pp/ppcore.c
! Changed to use hb_verPlatformMacro() value to form __PLATFORM__*
macro, instead of using hb_verPlatform(), which offers no
guarantee for the value on *nix systems and it's was hack
on other platforms too (f.e. it got messed up when Windows
version string was changed to show "wine" at the beginning
of the human readable platform string).
% Made forming of __PLATFORM__* macros simpler, using hb_snprintf().
! Now WINCE builds of pp will also defined __PLATFORM__WINDOWS.
; Please review/test.
* src/vm/Makefile
* src/vm/mainwin.c
* src/vm/hvm.c
* src/vm/cmdarg.c
* src/vm/vmmt/Makefile
* utils/hbmk2/hbmk2.prg
* config/global.mk
* config/cygwin/global.mk
+ Cygwin related patch from Tamas Tevesz.
- Fixing cygwin dynamic lib name
- Dynamic lib linking
- defining __PLATFORM__CYGWIN in cross-platform builds
* src/rtl/dateshb.c
+ tests/dttest.prg
+ HB_DATETIME() got new, optional nYear, nMonth, nDay, nHour, nMinute, nSecond, nFragment
parameters. If passed, it will return date or timestamp based on passed parameters
instead of current timestamp.
Based on initiative and code by Carlos Bacco. Thank you!
* contrib/hbsqlit3/hbsqlit3.c
- Reverted UTF8 patch in 2010-11-01 00:05 UTC+0200.
+ Replaced above solution with transparent one, using
Str API usage and extended it for all places where UTF8
strings are expected or returned by sqlite3 API.
Please test. This clears an old TOFIX.
+ Added TOFIX for raw pointer usage.
* contrib/hbqt/qtgui/g/QApplication.cpp
* contrib/hbqt/qtgui/qth/QApplication.qth
! Fixed to wrap one declaration in HB_EXTERN_BEGIN/END.
* include/hb_io.h
* include/hbthread.h
* include/hbsetup.h
* src/vm/thread.c
* src/vm/dynlibhb.c
* src/common/hbgete.c
* src/common/hbprintf.c
* src/rtl/gttrm/Makefile
* src/rtl/hbsocket.c
* src/rtl/filesys.c
* src/rtl/hbcom.c
* config/global.mk
- config/win/cygwin.mk
+ config/cygwin
+ config/cygwin/libs.mk
+ config/cygwin/gcc.mk
+ config/cygwin/global.mk
+ Applied cygwin patch from Tamas Tevesz.
The goal is to migrate win/cygwin to cygwin/gcc, IOW to make cygwin
a distinct platform (which is primarily unixy with option to access
winapi) as it should be.
Changes made by me compared to original patch:
- Fixed to HB_HOST_PLAT stay 'win'. Cygwin is not a host platform.
- Fixed to set HB_COMPILER to gcc and HB_PLATFORM to cygwin when cygwin
is detected on win platform.
- Consequently some changes in global.mk could be dropped.
- Deleted hbcom patches not related to cygwin.
- Removed hbmk2 patch until we solve the 'plat $ 'cygwin' problem.
* contrib/hbqt/qtcore/hbqt_misc.prg
+ Changed to not RTE when disconnecting not-connected
event. It will instead return .F. now.
To be consistent with slots in this regard.
* Undone previous optimization after realizing that
events and slots low-functiona return different error codes.
It didn't cause any harm with current system though.
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
% Optimized hb_snprintf() calls.
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
* Formatting.
* src/common/hbver.c
* Name of SPARC adjusted. Thanks to Tamas Tevesz.
* src/rtl/gete.c
% Optimization to GETENV()/HB_GETENV(). Patch by Tamas Tevesz.
+ Added more details to comment on why it's needed to strip '='
part from envvar name.
* contrib/hbqt/tests/demoqt.prg
* contrib/hbqt/tests/dialogqt.prg
* contrib/hbqt/tests/testqaim.prg
! Fixed external files' references to use executable's
directory as a base, instead of current dir.
* contrib/hbhpdf/harupdf.c
! HPDF_Page_CreateStampAnnot(): Fixed wrongly passed 3rd parameter.
* contrib/hbssl/evpmd.c
! EVP_SIGNFINAL(): Fixed wrong returned buffer size.
* config/postinst.hbs
* Implemented GetEnv() caching, based on patch sent by
Tamas Tevesz and further optimized.
* harbour/rtl/hbjson.c
+ added human readable JSON encoding support
char * hb_jsonEncode( PHB_ITEM pValue, HB_SIZE * pnLen, HB_BOOL fHuman );
hb_jsonEncode( xValue [, lHuman = .F. ] ) --> cJSON
! removed UTF8 encoding from JSON functions. These function should
return/accept data in VM codepage, just like any other string
function. If JSON string is to be stored as some binary stream
(ex., file), HB_StrToUTF8() should be applied on the hb_jsonEncode()
result. This conversion removal fixes code when returned JSON string is used
not as a binary stream. Ex.:
oIE:document:getElementById("data_div"):innerHtml := hb_jsonEncode(xValue)