* src/vm/runner.c
! Minor to prev.
* include/hbapi.h
* src/vm/extend.c
+ Added hb_parnsize(), hb_retnsize(), hb_stornsize() functions.
; NOTE: These should be used in place of hb_parnl(), hb_retnl(),
hb_stornl() when passing HB_SIZE types.
; TODO: Use them all accross Harbour if they are correct and
after being finalized.
* src/vm/itemapi.c
+ Added hb_itemGetNSize(), hb_itemPutNSize() functions.
* DATETIME stuff in hb_itemGetNL() marked as HB_LEGACY_LEVEL3.
; QUESTION: It's marked as to be deleted in the TODO, so maybe we should
rather delete it.
* include/hbapiitm.h
* src/rtl/filesys.c
+ hb_fsReadAt(), hb_fsWriteAt(): Added support for Win64 HB_SIZE.
; QUESTION: I assume these functions have the purpose of being
atomic seek + read without moving the file pointer,
which means current modification isn't safe. How
can this be solved given Windows doesn't seem to have
64-bit read/write API calls?
! Fixed old copy-paste typos in Windows OVERLAPPED initialization,
where the lines were ended with command instead of semicolon,
they didn't cause any harm though in their former location.
% Reverted a minor change from prev commit to make it
possibly a little bit faster, like it was before.
* src/rtl/hbzlib.c
+ Added casts (at external interface calls) and other fixes to
make it build for Win64 without warnings.
* src/rdd/dbfntx/dbfntx1.c
* src/rdd/dbfnsx/dbfnsx1.c
* src/rdd/dbfcdx/dbfcdx1.c
* src/rdd/dbffpt/dbffpt1.c
* contrib/rddbmcdx/bmdbfcdx.c
* HB_ULONG -> HB_SIZE where appropriate to avoid Win64 errors
and some warnings. I'm still not comfortable to touch this
code, but it could certainly need a type cleanup.
* include/hbdefs.h
+ Added HB_PFS macro which holds the printf() format string
for HB_SIZE value.
; TODO: Use it all accross Harbour.
* contrib/hbmysql/mysql.c
* contrib/sddmy/sddmy.c
* contrib/hbmzip/hbmzip.c
* contrib/hbcurl/hbcurl.c
* contrib/hbhpdf/harupdf.c
* contrib/hbpgsql/postgres.c
* contrib/rddads/adsfunc.c
* contrib/rddads/ads1.c
* contrib/hbfimage/fi_wrp.c
* contrib/sddodbc/sddodbc.c
* contrib/hbgd/gdwrp.c
* contrib/hbwin/wapi_wingdi.c
* contrib/hbwin/wapi_winbase.c
* contrib/hbwin/wapi_winuser.c
* contrib/hbwin/win_bmp.c
* contrib/hbwin/win_prn1.c
* contrib/hbwin/win_regc.c
* contrib/hbssl/evpciph.c
* contrib/hbssl/ssl.c
* contrib/hbssl/bio.c
* contrib/hbssl/sslctx.c
* contrib/hbssl/evpenc.c
* contrib/hbssl/pem.c
* contrib/hbssl/rand.c
* contrib/hbssl/evp.c
+ Added necessary casts at external component boundaries to
make Win64 builds warning-free.
* contrib/hbct/ctstrfil.c
+ HB_ISIZ -> HB_FOFFSET, hb_fsSeek() usage, other type cleanup
to handle file offsets correctly.
* contrib/xhb/hbnxs.h
* contrib/xhb/hbcrypt.c
! Fixed warnings for Win64.
* contrib/hbwin/win_prn3.c
* contrib/xhb/dbf2txt.c
* contrib/xhb/fparse.c
* int -> HB_ISIZ for Win64.
* contrib/xhb/freadlin.c
* hb_fsSeek() -> hb_fsSeekLarge().
* contrib/sddfb/sddfb.c
* Minor type cleanup to make Win64 warning-free.
* contrib/hbsqlit3/hbsqlit3.c
+ Added necessary casts at external interface calls.
% Deleted one dummy operation from SQLITE3_FILE_TO_BUFF().
* contrib/rddsql/sqlmix.c
* contrib/rddads/adsx.c
* HB_ULONG -> HB_SIZE.
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/wvggui.c
* contrib/gtwvg/wvgcuig.c
* contrib/gtwvg/wvgwin.c
* contrib/gtwvg/wvgutils.c
* contrib/gtwvg/wvgcore.c
! int -> HB_ISIZ/HB_SIZE
+ Added necessary casts at external component boundaries to
make Win64 warning-free.
* contrib/rddads/ads1.c
* HB_ULONG -> HB_SIZE
* contrib/hbtip/utils.c
* int -> HB_ISIZ
! Fixed to use HB_FOFFSET type to save/restore file position.
* ChangeLog
+ Added missing item to previous log entry:
! Fixed hb_fsCurDirBuff() for Win64.
; It's quite large commit, nevertheless I'd highly appreciate
peer review, and certainly there will be places which need
better or different solution for Win64.
* contrib/hbtip/hbtipssl/Makefile
* contrib/hbtip/Makefile
+ Always create hbtipssl. (not just when
openssl is detected)
* config/detect.mk
* contrib/hbssl/hbssls/Makefile
* contrib/hbssl/Makefile
* Moved openssl detection from central (core) location
to hbssl lib.
! Fixed hbssl GNU Make files after recent change in
static/dynamic selection.
+ contrib/gtalleg/gtalleg.hbi
+ contrib/hbblat/hbblat.hbi
+ contrib/hbcairo/hbcairo.hbi
+ contrib/hbcurl/hbcurl.hbi
+ contrib/hbfbird/hbfbird.hbi
+ contrib/hbfimage/hbfimage.hbi
+ contrib/hbgd/hbgd.hbi
+ contrib/hbhpdf/hbhpdf.hbi
+ contrib/hbmysql/hbmysql.hbi
+ contrib/hbpgsql/hbpgsql.hbi
+ contrib/hbssl/hbssl.hbi
+ contrib/rddads/rddads.hbi
+ contrib/sddfb/sddfb.hbi
+ contrib/sddmy/sddmy.hbi
+ contrib/sddoci/sddoci.hbi
+ contrib/sddpg/sddpg.hbi
+ Added local import library generation hbmk2 make files
to each contrib which requires it.
* config/postinst.prg
+ Changed to use contrib local implib creation hbmk2 scripts to
create import libraries.
- Deleted mingw exception for ocilib to use the static library.
Static lib is definitely better, but if someone would like to
use it, it should be done locally/manually, just like for any
other dependency.
+ Solved firebird implib creation hack/exception in contrib
local .hbi file.
; These fix the last "centralization" issues in Harbour make system.
Still remains documentation problem (everything is in INSTALL),
and *nix .deb/.rpm centralized solution for contrib dependencies
and contrib names in general.
* utils/hbmk2/hbmk2.prg
+ Combining multiple -o options (one with name, one with directory)
is now supported in -hbimplib mode. This makes it work like in
other existing modes.
! Fixes regarding -o option combining and dir inheritance.
(beware of regressions here)
* contrib/gtalleg/gtalleg.hbc
* Changed to use import library on Windows with an unmodified name
(containing version).
* src/rtl/hbcom.c
! Fixed one non-ANSI comment.
* ChangeLog
+ Added two changes missed from prev entry:
* utils/hbmk2/hbmk2.prg
+ In -hbimplib mode any options are automatically passed to
import library creation command (so -iflag option is not
absultely needed)
- Deleted -mkimplibms option now replaces by generic -iflag
solution.
! Stripped UTF-8 char from a recent entry.
* contrib/hbxbp/xbpgra.prg
! GraGetRGBIntensity() simplified, optimized and fix to work.
I'm not XPP user, but returning permanent zero was
probably not the goal. Pls test it.
* src/rtl/hbhex.c
* Minor formatting.
* contrib/hbssl/Makefile
* contrib/hbssl/hbssls/Makefile
- Disabled IDEA subsystem wrappers. IDEA is patented yet, so
usually it's better to build OpenSSL without it.
* contrib/hbssl/ssl.c
* contrib/hbssl/x509.c
* contrib/hbssl/sslctx.c
! Attempt to fix compilation error using 0.9.8m and 1.0.0betas.
* config/detect.mk
+ Enabled OpenSSL for bcc. I'm not exactly sure what is the factor here,
it used to work once, then it didn't, now it works again. Maybe related
to OpenSSL version. Now tested with 0.9.8m.
+ Enabled OpenSSL for watcom. Same as above, maybe 1.8 fixed it, maybe
new OpenSSL version. Maybe someone will invest time to find out.
! Disabled OpenSSL for wce platform. Again, the exact circumstances
are shady, but even 0.9.8m needs errno.h, which is not present
in C compilers targeting WinCE.
* contrib/hbssl/evpmd.c
! Disabled md2 support for >= 1.0.0 OpenSSL versions.
Seems they dropped it.
* contrib/hbssl/ssl.c
* contrib/hbssl/x509.c
* contrib/hbssl/sslctx.c
! Disabled some code parts which didn't compile with
>= 1.0.0 OpenSSL versions. This is not the right fix,
but I just can't figure what went wrong (or what
has been changed) in OpenSSL which cases it. There
is something wrong around 'X509_NAME' symbol.
* utils/hbmk2/hbmk2.prg
* config/beos/gcc.mk
* config/bsd/gcc.mk
* config/wce/mingwarm.mk
* config/darwin/gcc.mk
* config/hpux/gcc.mk
* config/win/mingw.mk
* config/win/cygwin.mk
* config/linux/gcc.mk
* config/linux/icc.mk
* config/os2/gcc.mk
* config/sunos/gcc.mk
- Deleted '-pipe' option. Efficient, but buggy. It didn't take
too long to bump into the problem: On build error, the
.o file is generated with some dummy content, so a second
build attempt will silently make build errors ignored.
* contrib/rddsql/sddfb/sddfb.c
* Minor formatting.
* include/hbdefs.h
* Removed reliance on old type when defining some new types.
* contrib/hbcurl/hbcurl.c
* contrib/hbssl/ssl.c
* contrib/hbssl/evpmd.c
* Changed ULONG to HB_SIZE.
(HB_SIZE currently is the same as ULONG)
* contrib/hbssl/evp.c
* Changed ULONG to size_t in one place.
* harbour/config/lib.mk
* harbour/config/bin.mk
* harbour/config/header.mk
* harbour/config/dyn.mk
* harbour/config/doc.mk
* harbour/config/instsh.mk
! rewritten install rules so now they work without any problem when
more then one target .mk file is included, i.e. lib.mk and header.mk
* harbour/source/pp/Makefile
* harbour/source/dynlib/mt/Makefile
* harbour/source/dynlib/Makefile
* harbour/contrib/hbmysql/Makefile
* harbour/contrib/hbct/Makefile
* harbour/contrib/xhb/Makefile
* harbour/contrib/hbodbc/Makefile
* harbour/contrib/hbtpathy/Makefile
* harbour/contrib/hbsqlit3/Makefile
* harbour/contrib/hbmzip/Makefile
* harbour/contrib/hbblat/Makefile
* harbour/contrib/hbqt/Makefile
* harbour/contrib/hbxbp/Makefile
* harbour/contrib/xpp/Makefile
* harbour/contrib/hbnf/Makefile
* harbour/contrib/hbcurl/Makefile
* harbour/contrib/gtqtc/Makefile
* harbour/contrib/rddsql/sddmy/Makefile
* harbour/contrib/rddsql/sddpg/Makefile
* harbour/contrib/rddsql/sddfb/Makefile
* harbour/contrib/rddsql/sddodbc/Makefile
* harbour/contrib/hbhpdf/Makefile
* harbour/contrib/rddado/Makefile
* harbour/contrib/gtwvg/Makefile
* harbour/contrib/hbpgsql/Makefile
* harbour/contrib/hbclipsm/Makefile
* harbour/contrib/rddads/Makefile
* harbour/contrib/hbfimage/Makefile
* harbour/contrib/hbgd/Makefile
* harbour/contrib/hbtip/Makefile
* harbour/contrib/hbwin/Makefile
* harbour/contrib/hbvpdf/Makefile
* harbour/contrib/hbbtree/Makefile
* harbour/contrib/hbssl/Makefile
* harbour/external/libhpdf/Makefile
* removed not longer necessary workaround for overwritten by different
targets INSTALL_RULE
Possible TODO: clean up some other rules in config .mk files to remove
hacks from pp and dynlib Makefile(s).
Above modifications should fully resolve the problems with repeated
install actions and also build problems with some more restrictive
POSIX SHELLs.
* contrib/hbssl/bio.c
- Disabled feature which doesn't seem to be exported via
implibs.
+ contrib/hbssl/hbssls.hbc
+ contrib/hbssl/hbssls
+ contrib/hbssl/hbssls/Makefile
* contrib/hbssl/hbssl.hbc
* contrib/hbssl/Makefile
* Default hbssl lib is now created to link dynamically (on Windows).
+ Added static build of hbssl by the name hbssls, with new .hbc
file linking to static OpenSSL libs.
* contrib/hbssl/Makefile
+ contrib/hbssl/hbssls.hbc
* contrib/hbssl/hbssl.hbc
* bin/hb-func.sh
- Commented creation of dynamic libs. Now it's done on GNU Make
level.
* config/os2/gcc.mk
- Disabled os2/gcc .dll creation. If someone comes up with a working
solution we can readd it, but in current form it just broke os2/gcc
target with no short-term hope for a solution.
* source/common/hbver.c
+ Added "Embarcadero" to Borland C compiler name.
Borrowed from xhb / Andi Jahja
+ Readded also "Borland" to both Embarcadero and CodeGear compiler
names. Probably for most ppl "Borland" tells a hell lot more than
these names which keep changing every second year.
* contrib/gtwvg/Makefile
* contrib/hbtip/Makefile
* contrib/hbtip/hbtipssl/Makefile
* Formatting.
+ config/detfun.mk
+ config/detect.mk
* config/global.mk
+ Added generic external component detection function.
+ Added central detection for optional external components
used by Harbour core. These are: openssl, gpm, slang, curses, x11
Easy to extend with new ones.
The detection code will run once per make session and
results can be used in all our make files by checking HB_HAS_*
variable. If it's empty we cannot use the component, if
it's not we can. In this case it contains dir where headers
were located. It's possible that it's a list of paths.
Users can control these components by using HB_INC_* variable
the following way: if it's left empty, Harbour make system
will automatically look into default locations, this usually
works on *nix systems. If set to a path (or a list of paths),
this list will be checked. Finally to explicitly disable a
component, user can set the variable to 'no'.
Following legacy control variables are yet understood, but
the will be removed in the near future:
HB_WITHOUT_GTCRS=yes is the same as HB_INC_CURSES=no
HB_WITHOUT_SLANG=yes is the same as HB_INC_SLANG=no
HB_WITHOUT_GTXWC=yes is the same as HB_INC_X11=no
Notice that these settings aren't meant to allow user control
of actual Harbour components (like gtxwc). If we need something
like this, we can do it, but it wasn't the subject of this change.
HB_GPM_MOUSE var is still set for compatibility with internals.
NOTE: I've left verbose output on to see what's happening, this will
tuned after testing.
; TODO: Remove reliance on legacy settings in our own codebase.
; TODO: Start using HB_HAS_* values for dynamic lib syslib list assembly
and in GT Makefiles.
* contrib/hbtip/hbtipssl/Makefile
* contrib/hbtip/Makefile
* contrib/hbssl/Makefile
* HB_HAS_OPENSSL works a little differently now, not empty
means 'yes', empty means 'no'.
* config/global.cf
* config/rules.cf
* config/dos/watcom.cf
* config/win/watcom.cf
* config/os2/watcom.cf
% Using HB_PRGFLAGS instead of HB_FLAGSEXTRA.
% Using HB_CFLAGS and HB_PRGFLAGS instead of HB_CDBG.
% Using HB_CFLAGS instead of HB_CUNICODE.
% Moved all flags from HB_RULE to HB_FLAGS (except HB_USER_PRGFLAGS).
This only affects dos/watcom, more cmdlines will be put in HARBOURCMD.
* external/sqlite3/Makefile
* external/libhpdf/Makefile
* external/libpng/Makefile
* source/vm/maindllh/Makefile
* source/vm/maindllp/Makefile
* source/vm/vmmt/Makefile
* source/rtl/gtxwc/Makefile
* source/rtl/gtcrs/Makefile
* source/rtl/gttrm/Makefile
* source/rtl/gtsln/Makefile
* contrib/gtalleg/Makefile
* contrib/hbmysql/Makefile
* contrib/hbodbc/Makefile
* contrib/hbsqlit3/Makefile
* contrib/hbqt/Makefile
* contrib/hbfbird/Makefile
* contrib/hbcurl/hbcurls/Makefile
* contrib/hbcurl/Makefile
* contrib/gtqtc/Makefile
* contrib/rddsql/sddmy/Makefile
* contrib/rddsql/sddpg/Makefile
* contrib/rddsql/sddfb/Makefile
* contrib/rddsql/sddodbc/Makefile
* contrib/hbhpdf/Makefile
* contrib/hbpgsql/Makefile
* contrib/rddads/Makefile
* contrib/hbfimage/Makefile
* contrib/hbgd/Makefile
* contrib/hbtip/hbtipssl/Makefile
* contrib/hbssl/Makefile
! Using HB_CFLAGS/HB_PRGFLAGS to specify Makefile local
compiler settings instead of modifying HB_USER_*FLAGS.
This way the double defines are gone.
+ Included global.cf to all Makefiles which needs to modify
HB_CFLAGS/HB_PRGFLAGS. Probably we should move global.cf
inclusion to the top of all Makefiles as a convention.
Not terribly elegant, but solves a few problems and
more efficient.
% Changed ', -I$(d))' to ',-I$(d))' along the way. This avoids
wasting an extra space in command line.
; NOTE: It'd still be beneficial to find a way to get rid of
'descend' rule. It could make cmdlines cleaner/shorter
and whole build process simpler/faster. I didn't manage
so far.
* source/vm/Makefile
* Deleted 'HB_USER_CFLAGS := $(subst -DHB_MT_VM,,$(HB_USER_CFLAGS))'
(since it's no longer supported practice to modify user supplied flags)
I'm not sure if it's important enough to have. AFAIK there is no
reason users use HB_MT_VM define, it's not a public setting, so we
shouldn't go too much far in trying to protect against its presence.
If it's needed, we should add 'HB_CFLAGS += -DHB_ST_VM' and handle
HB_ST_VM as the reverse of HB_MT_VM inside the source.
* source/rdd/dbffpt/dbffpt1.c
* source/rdd/dbffpt/Makefile
* Optimizations are now disabled using #pragma for __XCC__ instead of
deleting them from HB_USER_CFLAGS. Please test, and see above on
modifying HB_USER_CFLAGS in our make files.
* bin/postinst.cmd
! Deleted double quote from target dir in xcopy commands.
Blind change.
* utils/hbtest/rt_main.ch
* utils/hbtest/hbtest.hbp
* utils/hbtest/Makefile
+ Changed to use #pragma to turn on line numbers instead of
using HB_USER_PRGFLAGS (or HB_PRGFLAGS). This way there is
no need for Makefile hack/tweaks and it works with all make methods
automatically.
* config/instsh.cf
! Partially restored a few things which were lost without comments
in prev OS/2 commit:
- Formatting
- '@' prefixes
- '-' prefixes
* bin/postinst.bat
* Minor internal cleanup.
* bin/hb-mkdyn.bat
* config/lib.cf
! Fix for gcc family.
! Fixed to use /Y switch with move commands.
% Use automatically created .lib files instead of generating
them explicitly with pocc.
+ Move .exp file to lib dir with pocc.
! Three fixes for watcom .dll generation.
* config/global.cf
+ Plans added to cleanup lots of config vars with various names.
+ Added central OpenSSL detection by the name HB_HAS_OPENSSL.
This makes it possible to use OpenSSL in core or in any contrib
without much hassle.
* contrib/hbtip/Makefile
* contrib/hbssl/Makefile
+ Relying on central OpenSSL detection logic.
; TOFIX: For hbmk2 hbssl.hbc should be added explicitly to the
cmdline yet.
* config/instsh.cf
* Suppressing install copy command for cleaner output.
* ChangeLog
+ Marked items [DONE]
* INSTALL
* OS/2 prerequisites added. (currently not relevant, but anyway)
* bin/postinst.bat
* bin/hb-mkdyn.bat
* make_gnu.bat
+ Reworked the way .dll generation is done in Harbour build process.
New method solves the problem in one pass, instead of invoking
make twice and requiring starter script to control this.
The new trick is that CC_RULE will generate both dynamic and static
objects for libs included in the .dll for compilers where such trick
is necessary (currently all win/wce compilers except gcc based ones).
* Changed HB_BUILD_LOG forming. Since at this point ARCH/COMP values
aren't known (and just for this purpose it's not worth to maintain
parallel detection logic in start script), the automatically
generated log file will contain the date/time. Maybe even this will
be dropped in the future. Since this is the only remaining logic
in starter script (plus finding correct GNU Make, but that's even
smaller role)
; I didn't test watcom yet, plus mpkg_gnu.bat isn't working yet,
it needs to be moved to postinst phase.
; After these changes, there is basically no need for make starter
scripts. Maybe I'll even remove included make tools to make things
cleaner/leaner.
; TODO: Revise starter .sh scripts.
; TODO: mpkg_gnu.bat rework to run from postinst.
; TODO: Do some cleanup, remove redundancy in settings, etcetc.
; TOFIX: Fix watcom .dll generation.
* config/global.cf
! Deleted double MAKE info line.
+ Showing detected shell in verbose mode.
+ Added mkdir/rm detection for OS/2 shells. (commented)
% Optimized HB_BIN_COMPILE detection by using $(realpath) function.
Now it's only detected once per make run.
+ Added HB_*_INSTALL value defaulting similar to make_gnu.sh
for *nix platforms. (adding /harbour postfix to lib/inc dirs when
HB_INSTALL_PREFIX is system location (/usr or /opt). Please review.
* config/lib.cf
+ Added HB_DYN_COMPILE to control compiling for dynamic libs in
a sperate command.
+ Added HB_DYN_LIBS to hold list of libs which should be built
with separate command for dynamic libs.
* config/rules.cf
+ Added logic for duplicate CC_RULE.
TODO: Notice that it's not yet working when CC_RULE is overridden
on compiler level. Help would be appreciate here.
* config/wce/msvcarm.cf
* config/wce/poccarm.cf
* config/win/watcom.cf
* config/win/icc.cf
* config/win/msvc.cf
* config/win/xcc.cf
* config/win/pocc.cf
* config/win/bcc.cf
+ Enabled HB_DYN_COMPILE for these compilers.
* contrib/gtqtc/gtqtc.hbc
! Fixed lib order for mingw, supc++ moved to the end of list.
* external/sqlite3/Makefile
* external/libhpdf/Makefile
* external/libpng/Makefile
* external/Makefile
* source/rtl/gtxwc/Makefile
* source/rtl/gtcrs/Makefile
* source/rtl/gtsln/Makefile
* contrib/Makefile
* contrib/gtalleg/Makefile
* contrib/hbmysql/Makefile
* contrib/hbodbc/Makefile
* contrib/hbsqlit3/Makefile
* contrib/hbqt/Makefile
* contrib/hbfbird/Makefile
* contrib/hbcurl/Makefile
* contrib/gtqtc/Makefile
* contrib/rddsql/sddmy/Makefile
* contrib/rddsql/sddpg/Makefile
* contrib/rddsql/sddfb/Makefile
* contrib/rddsql/sddodbc/Makefile
* contrib/hbhpdf/Makefile
* contrib/hbpgsql/Makefile
* contrib/rddads/Makefile
* contrib/hbfimage/Makefile
* contrib/hbgd/Makefile
* contrib/hbssl/Makefile
+ Indentation.
% Using ':=' in '*_OK := $(foreach...' expressions, instead of
former unsafe '+='.
* config/win/mingw.cf
* config/wce/mingwarm.cf
* config/win/cygwin.cf
+ Using 'crs' instead of 'r' as AR command.
* config/install.cf
+ Don't define rule if INSTALL_RULE is empty.
Cannot currently happen.
* config/header.cf
% Minor optimization.
* contrib/hbtip/sessid.prg
* contrib/hbtip/cgi.prg
* contrib/hbtip/encoder.prg
* contrib/hbtip/mail.prg
* contrib/hbtip/sendmail.prg
* contrib/hbtip/httpcli.prg
* contrib/hbtip/smtpcli.prg
* contrib/hbtip/client.prg
* contrib/hbtip/ftpcli.prg
* contrib/hbtip/popcli.prg
+ Added TIP_SSL() function to return whether SSL functionality is available
or not.
% Deleted unnecessary tip.ch header inclusions.
+ Added TIPCLIENT():INETTIMEOUT() method to set / refresh timeout.
% Direct hb_inetTimeout() calls either optimized out (after ::super:open()),
or replaced by ::hb_inetTimeout() calls.
! Fixed to also accept pop3s where pops is accepted.
+ TIPCLIENTPOP() will set default port to 995 in pop3s mode.
+ TIPCLIENTSMTP() will set default port to 465 in smtps mode.
+ TIPCLIENTHTTP() will set default port to 443 in https mode.
+ Some steps towards SMTP STARTTLS authentication.
! Uncommented setting "Content-Length" in TIPMAIL:SETBODY().
gmail rejects attachment without it. It's also needed for internal
consistency as TIPMAIL:NEW() sets this data.
! HB_SENDMAIL() fixed to use HB_MEMOREAD() to read attachment.
! HB_SENDMAIL() fixed to load the attachment if it was passed
as a content/name pair array. Handling all combinations now.
* HB_SENDMAIL() changed to not exit on the first invalid attachment
specification, but simply ignore these. Feels more natural that way,
but the old behaviour can be restored if there was a reason for it
which overlooked.
* Formatting.
; TOFIX: hbtip currently has two different facilities to find out the
MIME type of a given extension: TIP_FILEMIMETYPE() and
HB_SETMIMETYPE(). First one also looks into the content while
the second one has a much more extensive extension based
detection. There is also a 3rd and separate function which
aims to detect whether a type is binary or text. This isn't
very efficient this way, unless there is some reasoning
behing current logic.
* contrib/hbtip/log.prg
! Fixed to reset internal file handle to empty value on close.
* contrib/hbssl/sslctx.c
! Added !OPENSSL_NO_STDIO guard for functions where it applies().
+ Added SSL_CTX_LOAD_VERIFY_LOCATIONS().
* config/global.cf
! Deleted two debug lines from prev commit.
* config/global.cf
! Fixed 'sh' HB_SHELL detection. Problem experienced with
Cygwin GNU Make, where SHLVL isn't defined on the first
level. Now also checking for SHELL=/bin/sh to detect sh
shell.
* tests/multifnc/Makefile
* external/sqlite3/Makefile
* external/libhpdf/Makefile
* external/libpng/Makefile
* contrib/gtalleg/Makefile
* contrib/hbodbc/Makefile
* contrib/hbtpathy/Makefile
* contrib/hbsqlit3/Makefile
* contrib/hbblat/Makefile
* contrib/hbqt/Makefile
* contrib/hbfbird/Makefile
* contrib/hbxbp/Makefile
* contrib/hbcurl/Makefile
* contrib/gtqtc/Makefile
* contrib/rddsql/sddfb/Makefile
* contrib/rddsql/sddodbc/Makefile
* contrib/rddado/Makefile
* contrib/gtwvg/Makefile
* contrib/rddads/Makefile
* contrib/hbfimage/Makefile
* contrib/hbtip/Makefile
* contrib/hbwin/Makefile
* contrib/hbssl/Makefile
* source/vm/Makefile
* source/vm/vmmt/Makefile
* source/rtl/gtdos/Makefile
* source/rtl/gtwin/Makefile
* source/rtl/gtxwc/Makefile
* source/rtl/gtcrs/Makefile
* source/rtl/gttrm/Makefile
* source/rtl/Makefile
* source/rtl/gtos2/Makefile
* source/rtl/gtsln/Makefile
* source/rtl/gtgui/Makefile
* source/rtl/gtwvt/Makefile
* source/rdd/Makefile
* source/rdd/dbffpt/Makefile
! Including 'global.cf' directly to make HB_ARCHITECTURE/HB_COMPILER/HB_COMMERCE
variables work in case we're relying on autodetection.
; TODO: May need to do this for a few other cases where detection is relying
on some additional variables. Like HB_XBUILD, which needs to be
cleaned further, maybe autodetection added.
; NOTE: Above changes mean that from now on for basic build usage it's
enough to have the compiler in PATH and to issue a simple 'make'
or 'mingw32-make' (or whatever GNU Make is called in that environment),
and make process should just work. IOW, no need to go through
"starter" scripts in root (make_gnu.*).
* contrib/hbtip/sendmail.prg
! Raised timeout to 1000 from 100.
This was the remaining error, now it should be okay.
; This means Harbour now support SMTP through SSL, which
practically means "gmail support", Google Apps for
Domain mailboxes also work.
Remember to build hbtip with HAVE_OPENSSL option and
link with hbssl lib + openssl libs. On *nixes this is
a no-brainer. On Windows, OpenSSL either needs to be
built from source, or pre-built binaries downloaded
(from this file: http://www.slproweb.com/download/Win32OpenSSL-0_9_8k.exe
from this link: http://www.slproweb.com/products/Win32OpenSSL.html)
and linked. Due to usual chaos regarding lib names
on Windows, default names in contrib\hbssl\hbssl.hbc may
need to be adjusted to local environment.
MinGW and MSVC are supported by OpenSSL on Windows for
static linking, the .dll version should work for all
compilers, I've only tested MinGW and MSVC though.
+ contrib/hbtip/tests/gmail.prg
+ Added simple test program to send mails through gmail.
* bin/hb-mkimp.bat
+ Added some more location to look for OpenSSL .dlls.
* contrib/hbssl/hbssl.hbc
+ Added support for rest of Windows compilers.
* contrib/hbtip/smtpcln.prg
! Fix to Auth() to not eat extra input in case of an error.
* include/hbsocket.h
* contrib/hbssl/hbssl.c
* source/rtl/hbsocket.c
* source/rtl/hbinet.c
* examples/uhttpd2/socket.c
* examples/httpsrv/socket.c
* HB_SOCKET_T -> HB_SOCKET
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/wvggui.c
* source/rtl/gtstd/gtstd.c
* source/rtl/filesys.c
* source/rtl/gtpca/gtpca.c
* source/rtl/gtwvt/gtwvt.c
! Added casts for msvc64.
Some C RTL functions in msvc64 expects file handles as 'int's.
The rest is some non-critical stuff.
Now only size_t to int/ULONG warnings remain in hbrtl.
; TOFIX: Plus these two:
../../../hbstrfmt.c(459) : warning C4244: 'argument' : conversion from '__int64' to 'ULONG', possible loss of data
../../../hbtoken.c(280) : warning C4244: '=' : conversion from '__int64' to 'ULONG', possible loss of data
* external/libhpdf/Makefile
+ Enabled for os2/watcom.
* include/hbdefs.h
* Minor addition to new type section.
'bool' is the new type for boolean, so maybe we should
use them instead of hbBool/TRUE/FALSE.
* source/rtl/hbsocket.c
! Added one 'static'.
* Added one pair of paranthesis (formatting).
* source/rtl/hbgtcore.c
* source/rtl/hbsha1.c
* contrib/hbwin/win_prt.c
* Minor formatting.
* contrib/xhb/xhbfunc.c
+ Added copyright holder for HB_F_EOF().
* contrib/hbssl/ssl.c
! Minor typo in comment.
* contrib/hbssl/hbssl.h
! Added HB_EXTERN_BEGIN/HB_EXTERN_END.
* config/global.cf
+ Added HB_UNIX_COMPATIBLE variable.
+ Setting default lib install dir to lib/<arch>/<comp>
on non-*nix systems.
* examples/httpsrv/socket.c
+ Copied from uhttpd2. Please verify.
* harbour/include/hbstack.h
+ added socket error codes to HB_IOERRORS
* harbour/include/Makefile
+ harbour/include/hbsocket.ch
+ harbour/include/hbsocket.h
* harbour/source/rtl/Makefile
+ harbour/source/rtl/hbsocket.c
+ added new BSD socket functions: hb_socket*(). They should be quite
close to low level C socket interface with few modifications which
help to hide some platform differences. Unfortunately we do not use
autoconf so I had to arbitrary set which features are available
on some platforms. In practice it means that it reduces portability
to older OS-es, i.e. it should work with current Linux versions
but it will not without some modifications in macros used to control
supported features with older Linuxes using kernel 2.2 or 2.0.
The same can happen with other *nix ports like Darwin, SunOS, HP-UX
or with different versions of some Windows compilers. I also do not
know which functionality is available in OS2 GCC ports and I would
like to ask OS2 users to make tests and disable not working features.
We also need tests with HP-UX, Darwin and SunOS.
IP6 support is enabled only in *nixes. If Windows users are interested
in IP6 then please add support for it. Most of Windows compilers do
not support standard POSIX functions so I do not want to make it
myself using unknown for me API without testing.
In *nix builds PF_UNIX/PF_LOCAL sockets are also supported.
Support for other socket types can be easy added if someone is
interested in them.
The constant values used in hbsocket.ch are equal to original BSD
socket definitions. If it's necessary then it's possible to enable
their translation inside hbsocket.c code though I do not think we
will find such OS.
The list of hb_socket*() functions was designed to cover all existing
functionality in hbinet.c and socket.c. Most of functions supports
timeout parameter what effectively allows to hide direct select()
usage.
Please make test with real applications and report any problems
with hb_inet*() functions you will find.
* harbour/source/vm/hvm.c
* minor cleanup
* harbour/source/rtl/hbi18n1.c
* cleaned variable name
* harbour/source/rtl/hbinet.c
* harbour/examples/uhttpd2/socket.c
* harbour/contrib/hbssl/hbssl.c
* updated to use hb_socket*() functions
* harbour/include/hbextern.ch
* enabled HB_INET*() functions in DOS builds - they will simply return
errors
- harbour/include/hbapinet.h
- removed old header file
* harbour/source/pp/ppcore.c
! modified ENDTEXT marker to work also with comments in the same line
It's more closer to Clipper though intentionally we are not fully
CA-Cl*pper compatible here.
+ source/rtl/hbfeof.c
* source/rtl/Makefile
* source/rtl/philes.c
! HB_FEOF() moved to separate file to ease name collision
situations.
* contrib/hbssl/evpciph.c
* contrib/hbssl/bio.c
* contrib/hbssl/evpmd.c
* contrib/hbssl/evpenc.c
! Fixed buffer sizes, after valgrind test.
(off by one bugs. hb_storclen_buffer()/hb_retclen_buffer() need
one byte extra above the size returned, in order to hold the
EOS char)
* contrib/xhb/freadlin.c
* contrib/hbqt/qth/QFtp.qth
* contrib/hbqt/qth/QHttp.qth
* contrib/hbqt/QFtp.cpp
* contrib/hbqt/QHttp.cpp
* contrib/hbcurl/hbcurl.c
* contrib/hbwin/win_prt.c
! Fixed similar to above allocation errors.
* config/global.cf
+ Added HB_???_INSTALL initialization. Just a step, needs more
work before making it a replacement for current method.
* contrib/hbmisc/dates2.c
* Renamed DAYSINMONTH() to HBMISC_DAYSINMONTH(),
to avoid collision with hbct function with the same
name, but different functionality.
- Deleted functions below from hbmisc library:
EOM(), BOM(), WOM(), DOY(), WOY(), EOY(), BOY()
They have superior alternatives with the same name
in hbct lib, please use those.
* contrib/hbssl/evpciph.c
* contrib/hbssl/ssl.c
* contrib/hbssl/bio.c
* contrib/hbssl/tests/pem.prg
+ contrib/hbssl/tests/pubkey.pem
* contrib/hbssl/tests/crypt.prg
* contrib/hbssl/err.c
+ Added EVP_SEALINIT() (under development)
+ Added EVP_SEALUPDATE(), EVP_SEALFINAL().
+ Added SSL_SET_MSG_CALLBACK() (it's a debug function really,
and the solution is slightly hackish, as I have to access
OpenSSL structure and Harbour item freeing needs to be done
manually. Anyhow it can be excluded from builds.
+ Added ERR_LOAD_CRYPTO_STRINGS().
+ Added ERR_PRINT_ERRORS(). (very useful)
+ Added ERR_FREE_STRINGS().
* include/hbapi.h
* source/vm/arrays.c
* source/vm/extend.c
* source/debug/dbgentry.c
* source/rtl/hbgtcore.c
! Renamed API function hb_arraySetCPtr() to hb_arraySetCLPtr().
Old function name still available for compatibility.
* INSTALL
* make_gnu.bat
* Tweak to previous fix, it didn't work. Falling back to
less elegant solution.
* external/libhpdf/Makefile
+ external/libhpdf/_hbhbpdf.c
+ Added ugly hack to make it build on mingwarm targets.
* contrib/hbssl/Makefile
* contrib/hbssl/ssl.c
* contrib/hbssl/bio.c
* contrib/hbssl/evpmd.c
* Changed to make it build on darwin.
It's be better to control feature automatically by
OPENSSL_VERSION_NUMBER, but documentation is very scarce.
* utils/hbmk2/hbmk2.prg
! Temp fix to not pass runflags to darwin GUI programs
(started via 'open'), until we find out how to make it.
Prevsiously 'open' considered extra options as its own,
and failed.
* make_gnu.bat
! Added SHLVL=0 to make commands to force native shell
even if sh shell is found in the PATH (f.e. when msys or
cygwin is present there, for mingwarm targets, cygwin is
even required.)
* external/libhpdf/Makefile
+ Made it compile with mingwarm.
* include/hbextern.ch
! Fixed typo in prev.
* contrib/hbssl/pem.c
+ Added two new functions. Under testing.
PEM_READ_BIO_RSAPRIVATEKEY()
PEM_READ_BIO_RSAPUBLICKEY()
* include/hbapi.h
* source/common/hbstr.c
* source/rtl/hbmd5.c
* Moved (and somewhat standardized and renamed) mem to hex C
function from hbm5/rtl to common lib.
* bin/hb-func.sh
! Fixed double '%' chars in hbmk.cfg generation.
* contrib/hbcrypt/Makefile
+ contrib/hbcrypt/hbsha1.c
+ contrib/hbcrypt/hbsha1hm.c
+ contrib/hbcrypt/tests/testsha1.prg
+ Added HB_SHA1() and HB_HMAC_SHA1() functions.
* source/rtl/hbmd5.c
* Changed meaning of second boolean parameter. From
now on a .T. has to be passed to get binary output.
(I won't list this as a incompatible, as the new
parameter has just been introduced)
; by now HB_MD5() and HB_SHA*() functions are synced
in functionality.
* contrib/hbcrypt/hbsha1.c
* contrib/hbcrypt/hbsha2.c
* contrib/hbcrypt/hbsha1hm.c
* contrib/hbcrypt/hbsha2hm.c
* contrib/hbcrypt/tests/testsha2.prg
* Changed all SHA2 functions to returned digest in hex
format by default. The binary format can be requested by
passing .T. as an extra parameter.
INCOMPATIBLE: Please update your sources if you used
these functions. Add .T. parameter to keep
current workings.
* contrib/hbcurl/hbcurl.c
% Cleaned types (no BYTE, no BOOL, deleted unnecessary casts).
Only a few ULONGs remained.
* contrib/hbssl/pem.c
+ Some advances.
* contrib/hbssl/evpciph.c
* contrib/hbssl/evpenc.c
! Potential fix to passing buffer size to some functions. The
docs are not fully clear, but anyhow this cannot hurt.