* 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)"
* harbour/include/hbapicdp.h
* harbour/src/rtl/cdpapi.c
+ added new C functions:
hb_cdpDupn(), hb_cdpStrDupU16(), hb_cdpnStrDupU16()
* harbour/include/hbwinuni.h
+ added new macros: HB_CHARDUP() and HB_CHARDUPN()
Warning: this macros uses HVM functions so cannot be used in
code which is executed without active HVM i.e. in
pure harbour compiler code (common library)
* harbour/src/rtl/filesys.c
* use hb_cdpStrDupU16()
* harbour/src/rtl/hbproces.c
! fixed double OS codepage conversion in hb_fsProcessRun()
* use HB_CHARDUP*() macros to respect _SET_CODEPAGE and _SET_OSCODEPAGE
in Windows builds
* 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
* config/win/mingw.mk
* removed undocumented way (committed in prev rev) to disable
separate compile pass for mingw Harbour-*.dll. if you're bothered,
use existing and documented: HB_BUILD_DYN=no
; NOTE: separate compile pass has another important benefit:
it will finally remove the implicit .dll exports, IOW now
only explicitly exported symbols will be public, in sync
harbour-*.dlls created with all the other C compilers.
* config/win/mingw.mk
+ solved mingw harbour dll and unicows problem, so now
-shared Harbour executables built using mingw will be able
to run on Win9x, "out of the box".
(has a downside that now separate compile pass is needed
to build objects with -DHB_DYNLIB (like with all the other
C compilers), but I left it enabled anyways to give uniform
support for unicows by default, including the nightly and
official builds. Look into the diff for an undocumented
way to disable this)
* config/win/watcom.mk
* config/win/xcc.mk
* config/win/icc.mk
* config/win/pocc.mk
* config/win/bcc.mk
* config/win/msvc.mk
* restored to link 3rd libs (currently unicows, if available)
to harbour-*.dll with above compilers. These are currently
noops (except for bcc, where it just doesn't work),
they are fundemantally correct, but may require further
C compiler specific mods.
; TODO: problem with bcc harbour-*.dll remains. unicows is present,
specified, but ignored when linking, even though it's not ignored
when contrib dlls are built using similar method. I leave
resolving this problem to bcc users.
* config/win/watcom.mk
* config/win/xcc.mk
* config/win/icc.mk
* config/win/mingw.mk
* config/win/pocc.mk
* config/win/bcc.mk
* config/win/msvc.mk
! do not link unicows to harbour dll. it seems a noop
for some compilers, and breaks some others (mingw).
* 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)
* 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)
* contrib/hbct/ctnet.c
+ switched from HB_TCHAR_* macros to Str API
* contrib/xhb/filestat.c
+ preparation for HB_TCHAR_* macro elimination by removing static worker function
! fixed wrong OS_UNIX_COMPATIBLE macro which effectively
disabled *nix specific code. Now new code is enabled, so
beware of platform fallout especially on more exotic *nixes.
flavors. (untested on *nix)
* contrib/hbqt/gtqtc/gtqtc.cpp
- deleted inactive code using HB_TCHAR_* macro
* src/rtl/fslink.c
* contrib/hbmzip/mzip.c
! fixed missing Windows macro for legacy C compilers (bcc, lcc, dmc)
regression from 2012-03-28 20:09 UTC+0200 and 2012-03-19 12:55 UTC+0100
reported by Grigory Filatov
* src/rtl/fstemp.c
* hb_fsCreateTempEx(): changed to have only one return point
! hb_fsCreateTempEx(): do not call hb_fsNameConv() before
calling hb_fsCreateEx(). Latter does this since a few
commits, causing a regression here.
! low level hb_fsTempName() fixed to use HB_FSNAMECONV()
instead of HB_TCHAR_*() macros. This is slightly inappropriate
for 'prefix' parameter, but will do for now.
! low level hb_fsTempName() fixed to convert back result
to _SET_OSCODEPAGE. This fixes caller hb_fsCreateTemp()
which passes the value to hb_fsCreateEx().
! hb_fsTempDir(): fixed to convert result to _SET_OSCODEPAGE.
; NOTE: These are supposed to fix some recent and not so recent
oddities with HB_FCREATETEMP[EX]() and HB_DIRTEMP()
functions when used with non-ASCII chars, especially
on Windows. Tests done only on Windows, please review
and test, also on other platforms, non-UNICODE mode.
Regressions are possible.
Oddly, HB_FCREATETEMP() won't work well without properly
set _SET_OSCODEPAGE, probably something requiring further
fixes (and/or internal unicode support?).
; NOTE: As a loose rule of thumb, each Harbour high-level (.prg)
and low-level (.c) public APIs should expect and return
strings in _SET_CODEPAGE, while applying FSCONV transformations
on input filenames, and converting to/from _SET_OSCODEPAGE
when interfacing with OS-level FS APIs (_SET_OSCODEPAGE
should be ignored if OS-level FS APIs are capable of
handling unicode, f.e. in Windows default build mode).
Currently, low-level code uses a mixture of different
methods to achieve this, HB_TCHAR_* macros and equivalent
APIs, HB_FSNAMECONV(), hb_osDecodeCP()/hb_osEncodeCP(),
hb_fsNameConv(), Str API.
* contrib/hbmzip/mzip.c
+ Changed to use HB_FSNAMECONV() instead of HB_TCHAR_*() macros.
; review me!
* src/rtl/fslink.c
+ replaced HB_TCHAR_CONVTO() with HB_FSNAMECONV() on win
+ added hb_fsNameConv() support on *nix
!!! review me !!!
! HB_FLINKSYM()/hb_fsLinkSym() fixed to work with directories on win,
performance should be better also
! HB_FLINKREAD()/hb_fsLinkRead() fixed to return information for
directories on win.
+ HB_FLINKREAD()/hb_fsLinkRead() now returns value in core codepage.
TOFIX: It crashes now on *nix, after hours of trying I give up,
please review the hb_osDecodeCP() call and fix it.
; TODO: this leaves only one HB_TCHAR_COPYFROM() macro in this file.
* tests/flink.prg
! fixed typo in HB_FLINKSYM() directory test
* minor cleanup for directory link name
* contrib/hbhpdf/3rd/libhpdf/hpdfcfg.h
! stripped unused (as of 2.2.1) and potentially misleading libharu
version information from local configuration header
* src/rtl/tbrowse.prg
! ignore non-string column picture value like Clipper (instead of RTE)
(reported by Rossine)
; review/check me
* INSTALL
+ added TROUBLESHOOTING / 13. on testing compatibility components
against original implementation.
* harbour/include/hbcdpreg.h
+ added few macros for extended CP definition
* harbour/src/codepage/cp_big5.c
* harbour/src/codepage/cp_utf8.c
* harbour/src/codepage/cp_u16le.c
* updated macros for CP definition
* harbour/tests/big5_gen.prg
% added small improvement in code hashing character
translation tables so they are a little bit smaller
* harbour/src/codepage/big5.c
* regenerated
* harbour/src/rtl/cdpapi.c
* harbour/src/rtl/cdpapihb.c
* harbour/src/codepage/cp_utf8.c
* slightly modified algorithms for decoding UTF8 characters to work
better with broken UTF8 strings (i.e. to not eat characters after
broken and unclosed multibyte one)
* some minor improvements in HB_UTF8STUFF()
* formating
* harbour/include/hbwinuni.h
+ added HB_FSNAMECONV() macro - it's automatically redirected to
hb_fsNameConv() or hb_fsNameConvU16() functions depending on
UNICODE windows macro
* harbour/include/hbapifs.h
* harbour/src/rtl/filesys.c
+ added hb_fsNameConvU16() C function - it makes similar operatin to
hb_fsNameConv() but returns UTF16 string.
+ added hb_fsPipeUnblock() C function - currently it works only
in POSIX systems
* HB_FSNAMECONV() instead of HB_TCHAR_*() macros
* harbour/src/rtl/hbcom.c
* HB_FSNAMECONV() instead of HB_TCHAR_*() macros
% encapsulate port open and close operations inside
hb_vmUnlock()/hb_vmLock() - on some systems this can
be slow operations, i.e. close() is delayed until
byte in output buffer are not transmitted.
* harbour/src/rtl/hbproces.c
% prefer read then write in pipe operations
! in POSIX systems set unblocking mode for PIPE handles in
hb_fsProcessRun() function - it fixes potential deadlock
* harbour/src/common/strwild.c
* formatting
* harbour/src/rtl/dircmd.prg
% use space( n ) instead of repl( chr( 0 ), n ) for allocating
dirty buffer
* harbour/src/rtl/gttrm/gttrm.c
* harbour/src/rtl/gtsln/kbsln.c
* ignore broken UTF8 characters in input
* harbour/contrib/hbmzip/mzip.c
! fixed typo in DOS/Windows/OS2 READONLY attribute translation
! fixed EXECUTE attribute setting for *.sh files extracted
from non *nix ZIP archives
% eliminated repeated GetFileAttributes() calls in windows builds
! fixed attribute setting in *nix builds when filenames are
translated due to some of filename releated _SET_* settings.
! enable (unintentionally disabled by typo) automatic attribute
translation for archives created in DOS/Windows/OS2 without
*nix attributes (i.e. by some local ZIP implementations)
* harbour/contrib/hbmzip/tests/myunzip.prg
! translate datetime to date before is shown on the screen - it fixes
output formatting
* contrib/hbide/ideuisrcmanager.prg
+ Implemented: the refreshed .ui in "UI Src Manager" positions
its current object and action exactly in same state it
was before editing in "cls_*ui.prg" was intiated and saved.
Now, it is true two-way editing of class source; changes
in one is reflected instantly in the other; a great
productivity boost.
* contrib/hbide/idemain.prg
* contrib/hbide/idesources.prg
* contrib/hbide/ideuisrcmanager.prg
+ Implemented: click on a .ui note in <Projects Tree> will open
the <UI Src Manager> dock containing .ui widget.
+ Implemented: modifying a "cls_*ui.prg" in the editor will
refresh the related .ui in the "UI Src Manager> if it is already
opened there. This facilitates the 2-way editing of event methods.
* contrib/hbide/ideuisrcmanager.prg
* Completed: minimum required components to materialize some
project based on this protocol.
+ contrib/hbqt/tests/cls_dbstruct.prg
+ contrib/hbqt/tests/dbstruct.prg
+ contrib/hbqt/tests/dbstruct.ui
+ contrib/hbqt/tests/ideui.hbp
+ Added: a small project where cls_dbstruct.prg is created by
hbIDE's UI Src Manager.
; Note: event is define for only first button. Try with other
buttons yourselves and come-out with suggessions.