* utils/hbmk2/hbmk2.prg
+ use HB_DEFAULT()
% deleted common.ch
* contrib/hbrun/hbrun.prg
! fixed typo causing scripts being found in PATH to fail
to open.
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.es_PE.po
! synced help text with actual list of supported macros.
* utils/hbmk2/Makefile
* utils/hbmk2/hbmk2.hbp
+ utils/hbmk2/hbmk2c.c
* utils/hbmk2/hbmk2.prg
+ added automatic detection of _SET_OSCODEPAGE and hb_SetDispCP()
Experimental, not well tested and it may need extensions to handle
all possible CPs and cases on *nix systems.
MS-DOS and OS/2 support are missing.
Autodetection will now be used instead of generic assumptions
and defaults stored in translation files.
+ enabled UTF8EX HVM CP on remaining (non-*nix) platforms.
; Once matured, this code can be moved to the core, possible
after rewrite in C. This will make it unnecessary to roll
private C code for hbmk2.
; Several problems remain on non-*nix systems when working with
actual non-ASCII filenames.
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.es_PE.po
- deleted translation (language) dependent CP settings.
* config/postinst.hbs
* implemented same ASORT() fix as in prev commit by Przemek.
(it may be important once we modify hbrun/hbmk2 to run
scripts under UTF8 CP)
* contrib/hbnetio/utils/hbnetio/modules.hbp
- contrib/hbnetio/utils/hbnetio/rpcdemo.hbs
+ contrib/hbnetio/utils/hbnetio/rpcdemo.hb
- contrib/hbide/plugins/hbide_script_qtgui.hbs
+ contrib/hbide/plugins/hbide_script_qtgui.hb
- contrib/hbide/plugins/hbide_plugin_savebackup.hbs
+ contrib/hbide/plugins/hbide_plugin_savebackup.hb
- utils/hbmk2/examples/plug_tpl.hbs
+ utils/hbmk2/examples/plug_tpl.hb
- tests/stripdoc.hbs
+ tests/stripdoc.hb
* .hbs -> .hb for Harbour scripts.
* tests/stripdoc.hb
+ use directry.ch
* harbour/utils/hbmk2/hbmk2.prg
! sort functions in .hbx files using "EN" CP.
This modification fixed problem with resorted
functions in .hbx files for CPs using non ASCII
collation order for [A-Z], [0-9] and [_] characters
* harbour/src/common/expropt2.c
* small code simplification
* harbour/src/rtl/hbregex.c
% eliminated call to pcre_config() on each regex compilation
* harbour/utils/hbmk2/hbmk2.prg
! fixed -head=full for code using non UTF8 characters.
It was broken because in UNIX builds UTF8 is always enabled
as HVM CP in HBMK2 and this setting was inherited by PCRE
with PCRE_UTF8 flag. If this flag is used PCRE validates
all strings and refuse to make any operations if they are
not valid UTF8 string so it was not working at all for
source code using different encoding.
! fixed regex used in -head=full to respect shortcuts in #include
directive, i.e.:
#incl "file.ch"
! fixed regex used in -head=full to recognize #include directives
separated by ';', i.e.:
#include "file1.ch" ; #include "file2.ch" ; #include "file3.ch"
; TOFIX: UTF8 mode on output should not be enabled unconditionally in
all UNIX builds. There are many *nix installations where UTF8
is not system CP, i.e. older Linux distributions. In fact
it's user attribute so each user can use different encoding
local to his connection and/or terminal settings. Probably
it's good idea to use code like:
lUTF8 := "UTF-8" $ GetEnv( "LANG" ) .OR. ;
"UTF-8" $ GetEnv( "LC_CTYPE" )
* utils/hbmk2/hbmk2.prg
! fixed RTE when logging sign command
! fixed `` operator to strip CRs and convert LFs to space
in stdout output.
* src/rdd/dbcmd.c
! clarified DBCREATE() 4th parameter in comment
* utils/hbmk2/hbmk2.prg
* .hb? input make files are now considered with UTF8 encoding.
+ enabled full UTF8 CP on *nix systems. EXPERIMENTAL.
* debian/copyright
* package/winuni/mpkg_win_uni.nsi
* utils/hbmk2/hbmk2.prg
* contrib/hbpost.hbm
* contrib/hbnetio/utils/hbnetio/modules.hbp
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbqt/hbqt_common.hbm
* contrib/hbide/ideedit.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/idesaveload.prg
* contrib/hbrun/hbrun.prg
* contrib/hbrun/plugins.prg
* config/postinst.hbs
* COPYING
+ added support for .hb extension for Harbour scripts.
I plan to make a full switch to .hb from .hbs.
* utils/hbmk2/hbmk2.prg
+ added experimental code signing support for win and darwin
using '-sign=<ID> [-signpw=<pw>]' options.
on win, it requires MSVS in path.
* utils/hbmk2/hbmk2.prg
! fixed missed incremental updates in '-inc -head=dep'
mode on win/os2/dos systems when -workdir= was set to
an absolute path. The drive separator colon was confused
with the file/dependency separator colon. Nasty.
* src/rtl/cdpapihb.c
% HB_UTF8TOSTR()/HB_STRTOUTF8() optimized to "fall through"
if the HVM CP is UTF8. Check me.
* utils/hbmk2/hbmk2.prg
! TOFIX removed from two FOR EACH loops, they work on ASCII chars only
! one FOR EACH loop conditionally converted to FOR NEXT to work with all CPs
! one FOR EACH loop converted to FOR NEXT and to work on binary data
! Changed certain function calls to hb_ascii*() prefixed versions
! fixed .hbx generator to work with accented filenames
* utils/hbmk2/hbmk2.prg
+ hbmk2 code made compatible with UTF8 HVM CP
except where FOR EACH is used on strings, which are all
broken with UTF8 now. Marked these with TOFIX.
+ strip UTF8 BOM from .hbm/.hbp/.hbc input files
+ added PROC CLIPINIT (I can't make it work, so commented
for now)
; Switching to UTF8EX creates quite many strange problems
when accepting cmdline arguments, passing them to embedded
compiler, external tools, so it's not yet enabled. Also,
one some platforms _SET_OSCODEPAGE is required (DOS/OS2),
on some not, and detection of these cases and actual value
is not easy (if possible). Tests made only on Windows,
maybe on *nix I'll retry and moving to UTF8 will be done
platform by platform.
; NOTE: I plan to make UTF8 the standard encoding for .hbp/.hbm/.hbc files.
; TOFIX: FOR EACH for UTF8EX CP
; TOFIX: cmdline arguments via Main() parameters, hb_AParams()
and hb_cmdLine() on Windows.
; TODO: Add a way to detect maximum bit width of unicode chars,
for now I hard-coded 16-bit.
* utils/hbmk2/hbmk2.prg
+ added experimental framework for -ku:<cp> option. It is
processed by hbmk2 and HVM CP set appropriately before calling
the embedded Harbour compiler. As discussed here:
https://groups.google.com/d/msg/harbour-devel/a1_-DDXVVYM/CE3NspTzHV4J
I couldn't spot or test the effect of this yet.
Accepted <cp> values: "utf8", "cp1250", "cp852", etc...
+ added TODO to switch the internal codepage to UTF8EX.
it should help further in handling filenames with accents.
non-priority.
* src/rtl/menuto.prg
* formatting
* contrib/hbqt/gtqtc/gtqtc.cpp
- delete recently commented lines
* utils/hbmk2/hbmk2.prg
* do not consider ".C" (uppercase c) as C++ source file.
it might have caused confusion when bringing .c source
files from legacy filesystems like MS-DOS, it may also
be an advantage when doing multiplatform development
between MS-DOS and newer systems.
* utils/hbmk2/hbmk2.prg
* bin/hb3rdpat.hbs
! fixed minor formatting problems mainly using custom automatic script
* include/harbour.hbx
* contrib/hbsms/hbsms.hbx
+ applied std casing to function names. it enhances
readability, plus makes possible to use .hbx file for
automatic formatting purposes.
* utils/hbmk2/hbmk2.prg
* config/postinst.hbs
+ preserve casing of function names in .hbx files
! fixed non-fatal typo in regex expressions
* contrib/make.hbs
* contrib/hbpost.hbm
+ use HB_LIB3RD hbmk2 macro instead of rolling custom logic
to detect and enable unicows lib.
* utils/hbmk2/hbmk2.prg
+ added HB_LIB3RD internal variable (usable as filter and as macro)
it's filled when '<hbroot>/lib/3rd/<plat>/<comp>' directory is present
+ added EXPERIMENTAL pseudo-function for filters to detect presence
of file or directory: {hb_ispath='<file or directory>'}. if the
value is not an absolute path, it will be meant relative to source
hbmk2 file.
* package/harb_win.mft
* package/harb_win.rc
* package/mpkg_win.nsi
* package/mpkg_src_nightly.sh
* package/winuni/mpkg_win_uni.nsi
* "Harbour Project" -> "Harbour"
* "hbrun" shortcut -> "Harbour (Interactive shell)"
* src/common/hbverdsp.c
* do not show '(WINANSI)' in the list of version flags.
* utils/hbmk2/hbmk2.prg
+ add -inc to xbuild and xmate converted projects, this being
the default mode of operation (AFAI guess) of these tools.
* contrib/hbct/disk.c
* contrib/hbnf/kspeed.c
* contrib/hbnf/peek.c
* contrib/hbnf/proper.c
* contrib/hbnf/ftidle.c
* contrib/hbnf/mouse.c
* contrib/hbnf/stod.c
* contrib/hbnf/getvid.c
* contrib/hbnf/getver.c
* contrib/hbnf/getenvrn.c
* contrib/hbnf/mkdir.c
* contrib/hbnf/rmdir.c
! formatting
* utils/hbmk2/hbmk2.prg
+ will now add lib/3rd dir to the link commands, so
unicows lib will be found in uninstalled Harbour SVN
source tree.
* contrib/make.hbs
* contrib/hbpost.hbm
+ automatically enable unicows support for contribs, if available.
- deleted support for undocumented __HB_BUILD_WINUNI envvar
* config/global.mk
* config/rules.mk
- deleted support for undocumented __HB_BUILD_WINUNI envvar
* package/winuni/mpkg_win_uni.bat
* package/mpkg_win_nightly.bat
- deleted special support for unicows libs for nightly
and official releases, along with HB_DIR_UNICOWS envvar.
Now these libs are included in all builds.
* config/win/global.mk
+ automatically enable unicows support for core, if available.
* config/win/xcc.mk
* config/win/icc.mk
* config/win/mingw.mk
* config/win/pocc.mk
* config/win/bcc.mk
* config/win/msvc.mk
+ added support for SYSLIBPATHS. (used by unicows support)
! fixed bcc dynlib link command missing libpaths.
; NOTE: watcom unicows support is missing, as it needs
special tricks due to missing separate libpath option
in this compiler/linker.
* config/wce/mingwarm.mk
* config/wce/poccarm.mk
* config/wce/msvcarm.mk
* synced with config/win files
+ config/libbin.mk
+ added rule to install pre-built binary libs.
(for unicows libs)
* Makefile
+ lib/3rd
+ lib/3rd/win
+ lib/3rd/win/mingw
+ lib/3rd/win/mingw/Makefile
+ lib/3rd/win/mingw/libunicows.a
+ lib/3rd/win/mingw/libunicows_license.txt
+ lib/3rd/win/bcc
+ lib/3rd/win/bcc/unicows_license.txt
+ lib/3rd/win/bcc/unicows.lib
+ lib/3rd/win/bcc/Makefile
+ added locally hosted unicows runtime/implibs from:
http://libunicows.sourceforge.net/ by author Vaclav Slavik.
With these libs, it's possible to use UNICODE builds
with both MS unicows.dll and opencows .dll on legacy
Windows-system (Win9x).
These libs will be installed to Harbour core lib directory,
and also used from lib/3rd directory, if they are available.
I've uploaed mingw and bcc libs because these are used
nearly exclusively by users, but they are also available
for older msvc, watcom, dmc and lcc compilers. I don't
think it's worth the extra size to support Win9x using
these legacy compilers, anyhow they can be added easily
if needed (except watcom, which requires more work).
; These changes mean three things:
1. Harbour now has only one build mode on Windows: UNICODE
This will greatly simplify coding and testing and will
allow to focus much better on what's important. It also
allows to drop lots of dual code dealing with separate
UNICODE and non-UNICODE branches.
2. Harbour default builds will now run on Win9x (currently
when using mingw or bcc compilers), though UNICOWS.DLL
is now required. See INSTALL how to get this free .dll
from MS. This also means that Harbour can now theoretically
by built on Win9x systems (I didn't try).
3. Harbour users can create UNICODE builds compatible with
Win9x, by simply adding -lunicows to their .hbp projects.
No extra installation is required.
* utils/hbmk2/hbmk2.prg
! fixed foreign make file conversion to add comment
prefix for original filename included in .hbp file
+ .xbp conversion will add -hblib and -hbdyn if filename
contains .lib and .dll respectively. (not sure how
is this official rule or just convention or anything)
* harbour/package/harbour.spec
! added missing attribute for harbour.ld.conf file
! added optional hbhttpds library
* harbour/contrib/hbct/envparam.c
* harbour/contrib/hbct/dummy.c
* harbour/contrib/hbct/hbct.hbp
* harbour/contrib/hbct/hbct.hbx
+ added ENVPARM() - now it's implemented for all platforms but
it should be tested on different *nixes - some of them may not
support 'char * environ' public variable
* harbour/contrib/xhb/hbserv.c
* added missing dummy functions in DOS builds
* harbour/utils/hbmk2/hbmk2.prg
! do not set binding to hb_forceLinkMainWin() when -nohblib and -gui
switches are used together
* harbour/include/hbapicdp.h
* harbour/src/rtl/cdpapi.c
+ added new C functions hb_cdpnDupUpper(), hb_cdpnDupLower(),
hb_cdpnDup2Upper() and hb_cdpnDup2Lower().
They should be used instead of hb_strUpper() and hb_strLower()
functions because they can work well with CPs where upper and
lower characters uses different number of bytes, i.e. UTF8 has
such characters.
* harbour/src/rtl/strcase.c
* harbour/src/rtl/fstemp.c
* harbour/src/rtl/filesys.c
* harbour/src/rdd/dbfcdx/dbfcdx1.c
* harbour/src/rdd/hbsix/sxsem.c
* replaced obsolete hb_strUpper() and hb_strLower() functions with
new hb_cdpnDup*Upper()/hb_cdpnDup*Lower() ones.
* harbour/src/rdd/hbsix/sxutil.c
* replaced obsolete hb_charUpper() function with hb_cdpnDupUpper()
* harbour/contrib/sddpg/sddpg.c
* harbour/contrib/sddsqlt3/sddsqlt3.c
* harbour/contrib/sddmy/sddmy.c
* harbour/contrib/sddfb/sddfb.c
* harbour/contrib/sddodbc/sddodbc.c
* harbour/contrib/sddoci/sddoci.c
! fixed memory leaks
* replaced obsolete hb_strUpper() and hb_strLower() functions with
new hb_cdpnDup*Upper()/hb_cdpnDup*Lower() ones.
; TODO: these conversions are redundant - I'll remove them in next
commit.
* utils/hbmk2/hbmk2.prg
! in '.hbc not found' messages show .hbc reference without
rebased path (=as it appears in .hbp file or on cmdline),
after macro expension.
+ package/harbour.rb
+ experimental (and untested) Homebrew formula
* debian/dirs
* debian/rules
+ added contrib dir (untested)
* utils/hbmk2/hbmk2.prg
* autodetect contrib/addons dirs at
/usr/local/share/harbour/ and /usr/share/harbour/
* config/global.mk
* changed contrib location on *nix systems to <root>/share/harbour/contrib
unless the <root> is /opt/harbour.
* contrib/hbrun/headers.prg
* utils/hbmk2/hbmk2.prg
* changed #include filename references to _CASE-SENSITIVE_. This
is to ensure and enforce that .hbs scripts and hbmk2 plugins are
created in portable form so f.e. once developed on a win
system, they won't crash on a *nix system.
INCOMPATIBLE: Change all your #include references to exactly match
casing of the filename. For Harbour headers, this
means plain lowercase, so f.e. '#include "FileIO.ch"'
is wrong, '#include "fileio.ch"' is right.
* config/global.mk
* minor
* contrib/make.hbs
+ added installation support of contrib specific public files
(.hbc, .hbs, local headers, .def files, readmes and tests)
* config/global.mk
* set install destination for contrib specific public files to
<root>/contrib for non-*nix and /opt/harbour/contrib for *nix
systems.
* utils/hbmk2/hbmk2.prg
* changed HB_INSTALL_CONTRIB to HB_INSTALL_ADDONS
F.e.:
export HB_INSTALL_ADDONS=/usr/local/share/harbour/contrib:/usr/local/share/harbour/addons
* utils/hbmk2/hbmk2.prg
+ support for HB_INSTALL_CONTRIB envvar to specify dir(s)
of contribs/addons for .hbc autofind purposes. Accepts
multiple dirs. F.e.:
export HB_INSTALL_CONTRIB=/usr/local/share/harbour/contrib:/usr/local/share/harbour/addons
Experimental.
* utils/hbmk2/hbmk2.prg
* tuned Harbour root autodetection code to avoid corner
case where another Harbour installation is present one
or two dir levels upper in the tree.
Regressions are possible. Please test.
* utils/hbmk2/hbmk2.prg
+ show .hbp file reference when .hbc is not found
* config/postinst.hbs
* corrected double dirseps in one case.
* contrib/hbqt/qtgui/hbqtgui.hbx
* contrib/hbqt/qtgui/qth/filelist.hbm
! disabled QDeclarative* wrappers until reported link
problems are fixed.
This allows HB_BUILD_CONTRIB_DYN=yes to work again.
* contrib/hbqt/hbqt.hbc
* contrib/hbqt/hbqt_all.hbp
! disabled hbqtsql until link problems (missing functions
and wrappers) are fixed.
This allows HB_BUILD_CONTRIB_DYN=yes to work again.
* contrib/hbmysql/utils/hbmk.hbm
* contrib/hbnetio/utils/hbnetio/hbnetio.hbp
* contrib/hbnetio/utils/hbnetioq/hbnetioq.hbp
* contrib/hbformat/utils/hbformat.hbp
+ removed relative path from .hbc references
* utils/hbmk2/hbmk2.prg
+ show warning when referenced .hbc file could not be found
* utils/hbmk2/hbmk2.prg
* config/postinst.hbs
! use HB_WILDMATCH() with .T. option to make it behave as expected
* include/harbour.hbx
* include/hbcpage.hbx
* regenerated
* src/rtl/tget.prg
* src/rtl/getsyshb.prg
+ added support for hash GET variables
* utils/hbmk2/hbmk2.prg
+ added REQUESTs to blowfish, md5, sha1 and few sha2 functions
for 3rd party plugins
* contrib/hbhttpd/core.prg
* fmt
* utils/hbmk2/hbmk2.prg
+ warning will be shown and lib ignored if user explicitly
specifies Harbour core library.
! visual glitch in two trace msgs.
* contrib/hbblat/tests/hbmk.hbm
* contrib/hbhpdf/tests/hbmk.hbm
+ best practice: using .hbc files instead of -l options.
* utils/hbmk2/hbmk2.*.po
* utils/hbmk2/hbmk2.prg
+ added support for path lists separated by ';' character in -L and
-i/-I options. It's not very elegant (and thus it's not documented)
so please don't use it in Harbour SVN hbmk2 files. I decided to
implement it because -depincpath* options already had it.
* do not document ';' delimited path list for -depincpath* options
* minor change in one help line
* contrib/hbformat/hbfmtcls.prg
! fixed casing of some function names.
* utils/hbmk2/hbmk2.prg
; all changes below apply to .xhp (xMate) to .hbp conversion:
! properly convert input filenames with spaces in them
! remove lib prefix from .a input filenames
% do not add empty -L options
* do not add include paths with %HB_INSTALL%\ in them
+ split non-portable, Borland-specific include path lists
concatenated with ';' into distinct -I options
% do not add empty include paths
* tests/testop.prg
* tests/testntx.prg
* tests/vmasort.prg
* tests/testlbl.prg
* tests/testidle.prg
* tests/videotst.prg
* tests/testmem.prg
* tests/testinit.prg
* tests/testhtml.prg
* tests/tstcolor.prg
* tests/vidtest.prg
* tests/tstuse.prg
* tests/vec1.prg
* tests/while.prg
* tests/tstdspac.prg
* tests/version.prg
* tests/testpre.prg
* tests/tstprag.prg
* formatted. mostly with hbformat.