Commit Graph

116 Commits

Author SHA1 Message Date
Przemysław Czerpak
9153285bdf 2017-03-28 23:02 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbcomp.h
  * include/hbcompdf.h
  * include/hberrors.h
  * include/hbexprb.c
  * src/common/expropt1.c
  * src/compiler/hbgenerr.c
  * src/compiler/hbmain.c
    + added new macros HB_ET_MACRO_NOLIST and HB_ET_MACRO_NOPARE
    % use new HB_ET_MACRO_* macros
    + added new compile time error:
         "Code block contains both macro and with object messages ':%s'"
      NOTE: -kd compiler switch allows to compile codeblocks with macros
            and declared symbols / with object messages
    * replaced hb_compErrorCodeblock() with hb_compErrorCodeblockDecl() and
      hb_compErrorCodeblockWith()
    + added new C function hb_compPushMacroVar()
    * code simplification
    ; added few comments

  * utils/hbtest/rt_math.prg
    * extended test code for macro messages and macro <op>=, pre/post ++/--
      operations

  * src/vm/hvm.c
    ! protection against executing hb_threadStateNew() during GC pass
      inside hb_vmRequestReenterExt()

  * src/vm/garbage.c
    ! add volatile attribute to s_bCollecting variable
    * small modification in hb_gcAll() parameter

  * src/rtl/errsys.prg
    ; minor comment cleanup

  * doc/xhb-diff.txt
    * extended a little bit section STRONG TYPED VARIABLES
2017-03-28 23:02:28 +02:00
Przemysław Czerpak
34418933fa 2017-03-15 14:39 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbdefs.h
    + added macros HB_CAST_*( double ) for conversions of double values
      to integer types - they are designed to hide some differences
      between C compilers and platforms in such conversions

  * src/common/expropt2.c
  * src/vm/extend.c
  * src/vm/itemapi.c
    * use new HB_CAST_*() macros
2017-03-15 14:39:47 +01:00
Przemysław Czerpak
a7e0e45857 2016-06-23 00:54 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapiitm.h
  * src/vm/itemapi.c
    + added new C function:
         PHB_ITEM hb_itemPutNil( PHB_ITEM pItem );

  * src/rdd/dbf1.c
    ! fixed yet another RDDI_SETHEADER clearing in internal DBF RDD code
    * clear few passed variables before internal SELF_INFO() and
      SELF_RDDINFO() read calls - they were safe in current code but
      potentially may badly interact with 3-rd party DBF RDD wrappers.
2016-06-23 00:54:16 +02:00
Przemysław Czerpak
6df7fc6132 2016-06-20 21:59 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* doc/cmpopt.txt
    * enumeration
    ! typos

  * src/codepage/uckam.c
    + added info about Kamenicky codepage number: CP895

  * include/hbapi.h
  * src/common/hbstr.c
    + added new C function:
         char * hb_dblToStr( char * szBuf, HB_SIZE nSize,
                             double dNumber, int iMaxDec );
      it converts numeric value to string trying to keep all significant
      digits in double numbers

  * include/harbour.hbx
  * src/rtl/hbntos.c
    + added new PRG function:
         hb_ntoc( <nValue> ) -> cValue
      it converts numeric value to string trying to keep all significant
      digits in double numbers

  * src/rtl/hbsocket.c
    + added support for error codes returned by
      getaddrinfo() / getnameinfo() and gethostbyname() / gethostbyaddr()

  * src/rtl/hbinet.c
    + set HB_SOCKET_ERR_WRONGADDR error code if hb_socketResolveAddr()
      returns NULL without setting error code

  * src/vm/arrays.c
  * src/vm/hashfunc.c
    ! fix hb_HScan(), AScan(), hb_AScan() and hb_RAScan() for very large
      integers with more then 53 significant bits. Such bits were lost
      after conversion to double value used in scan process

  * src/vm/itemapi.c
    * formatting

  * src/rtl/gtwvt/gtwvt.c
    ! do not convert characters received with ALTGR or ALT+CTRL flags to
      extended keycodes - some national keyboards may use such combination
      for national characters and even pure ASCII ones
2016-06-20 21:59:34 +02:00
Przemysław Czerpak
037ccea634 2016-04-05 16:27 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbnetio/netiosrv.c
    * minor optimization

  * src/rdd/dbcmd.c
  * src/rdd/wacore.c
  * src/rdd/wafunc.c
    ! added protection against exceeding the limit of workarea numbers.
      Current maximum is 65534, WA 65535 is reserved for internal RDD
      WA destructor.
    ! fixed possible memory leak in hb_rddInsertAreaNode()

  * src/vm/set.c
    ! fixed typo in device detection code
    + added NUL to list of known device names in DOS, OS2 and MS-Win builds
    + recognize \\<server>\<device>, \\.\PIPE\*, \\.\<device> as
      device names in DOS, OS2 and MS-Win builds.
2016-04-05 16:27:49 +02:00
Przemysław Czerpak
7af9c8c8ef 2016-03-30 16:10 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/gttone.c
    * applied patch from Andi Jahja for new BCC versions - many thanks

  * src/rtl/strrepl.c
    % added optimization code for strings longer then 1024 bytes
      For very long strings it can improve replace performance 20 or
      even more times.

  * src/rtl/sha2.c
  * src/rtl/val.c
  * src/vm/dynsym.c
  * src/vm/eval.c
  * src/vm/thread.c
    * formatting
2016-03-30 16:10:34 +02:00
Przemysław Czerpak
c209c27120 2016-02-09 18:11 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbnetio/hbnetio.hbx
  * contrib/hbnetio/netiocli.c
  * contrib/hbnetio/readme.txt
    + added new client side function:
         netio_SetPath( <pConnection> [, <cPath>] ) -> [<cPrevPath>]
      It set/get path prefix for automatic file redirection to HBNETIO.
      If automatic redirection is activated then <cPath> is removed
      from file name passed to HBNETIO server, i.e.:

         netio_SetPath( netio_GetConnection(), "//myserver/myshare" )
         [...]
         /* open "/data/table" on HBNETIO server */
         use "//myserver/myshare/data/table"
    * allow to pass filename to netio_Decode() with "net:" prefix
    * allow to pass to use "net:" prefix in function names passed
      to netio_{Proc|Func}*() when <pConnection> parameter is not used
    ! fixed possible GPF trap when connection cannot be set

  * src/vm/memvars.c
    % do not create reference chain when memvars are passed by reference
      and called function uses PARAMETERS statement
    ! do not return references from __mvDbgInfo() but destination values

  * doc/xhb-diff.txt
    ! typo

  * src/vm/itemapi.c
    ! typo in debug trace message
2016-02-09 18:11:42 +01:00
Przemysław Czerpak
08c4bf45fc 2016-01-28 15:00 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbexprb.c
  * src/common/expropt1.c
    ! fixed typo in macro alias push/pop operation
    * disable multivalue macro expansion for macro expressions enclosed in
      parenthesis, i.e.:
            s := "1,2,3"
            QOut( &s )        // 1, 2, 3
            QOut( &(s) )      // 1, 2, 3
            QOut( (&s) )      // 3

  * include/hbexprop.h
  * src/common/expropt1.c
  * src/common/expropt2.c
  * src/vm/hvm.c
    * return last array item when hb_ArrayToParams() is used in
      parenthesis, i.e.:
         QOut( hb_ArrayToParams( { 1, 2, 3 } ) )      // 1, 2, 3
         QOut( ( hb_ArrayToParams( { 1, 2, 3 } ) ) )  // 3
2016-01-28 15:00:20 +01:00
Przemysław Czerpak
c6316a4578 2016-01-26 15:44 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapierr.h
  * include/hbdefs.h
  * src/debug/dbgentry.c
  * src/rtl/filesys.c
  * src/rtl/gtcgi/gtcgi.c
  * src/rtl/gtcrs/gtcrs.c
  * src/rtl/gtos2/gtos2.c
  * src/rtl/gtpca/gtpca.c
  * src/rtl/gtsln/gtsln.c
  * src/rtl/gtstd/gtstd.c
  * src/rtl/gttrm/gttrm.c
  * src/rtl/gtwin/gtwin.c
  * src/rtl/gtwvt/gtwvt.c
  * src/rtl/gtxwc/gtxwc.c
  * src/rtl/hbhex.c
  * src/rtl/hbproces.c
  * src/rtl/hbsocket.c
  * src/vm/classes.c
  * src/vm/extrap.c
  * src/vm/itemapi.c
  * src/vm/runner.c
  * src/vm/task.c
  * contrib/gtalleg/gtallegd.c
  * contrib/gtqtc/gtqtc1.cpp
  * contrib/gtwvg/gtwgud.c
  * contrib/gtwvg/gtwvgd.c
  * contrib/gtwvg/wvgcore.c
  * contrib/gtwvg/wvgcuig.c
  * contrib/gtwvg/wvgutils.c
  * contrib/gtwvg/wvgwin.c
  * contrib/gtwvg/wvgwing.c
  * contrib/hbfbird/firebird.c
  * contrib/hbwin/axcore.c
  * contrib/hbwin/wapi_commctrl.c
  * contrib/hbwin/wapi_shellapi.c
  * contrib/hbwin/wapi_winbase.c
  * contrib/hbwin/wapi_wingdi.c
  * contrib/hbwin/win_misc.c
  * contrib/hbxdiff/core.c
  * contrib/rddads/ads1.c
  * contrib/rddads/adsx.c
  * contrib/xhb/cstructc.c
  * contrib/xhb/freadlin.c
  * extras/gtwvw/gtwvwd.c
  * extras/gtwvw/wvwfuncs.c
    * use HB_PTRUINT instead of HB_PTRDIFF in castings between pointers
      and numbers - it makes some C compilers happy and in few cases it
      also fixed bugs
2016-01-26 15:45:00 +01:00
Przemysław Czerpak
ae90545eb1 2016-01-21 20:42 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/gtalleg/gtallegd.c
  * contrib/hbamf/amfdec.c
  * contrib/hbamf/amfenc.c
  * contrib/hbbz2/core.c
  * contrib/hbbz2io/bz2io.c
  * contrib/hbct/atrepl.c
  * contrib/hbct/charrepl.c
  * contrib/hbct/envparam.c
  * contrib/hbct/pack.c
  * contrib/hbct/token2.c
  * contrib/hbfimage/fi_wrp.c
  * contrib/hbgd/gdwrp.c
  * contrib/hbgs/core.c
  * contrib/hbgzio/gzio.c
  * contrib/hbhpdf/core.c
  * contrib/hbhpdf/image.c
  * contrib/hbmlzo/core.c
  * contrib/hbmxml/core.c
  * contrib/hbodbc/odbc.c
  * contrib/hbsqlit3/core.c
  * contrib/hbssl/bio.c
  * contrib/hbssl/ssl.c
  * contrib/rddads/ads1.c
  * contrib/rddads/adsfunc.c
  * contrib/rddads/adsmgmnt.c
  * contrib/rddads/adsx.c
  * contrib/rddads/rddads.h
  * contrib/sddodbc/core.c
  * contrib/xhb/cstructc.c
  * include/hbapi.h
  * include/hbdefs.h
  * src/common/expropt1.c
  * src/common/expropt2.c
  * src/common/hbmem.c
  * src/compiler/complex.c
  * src/compiler/harbour.y
  * src/compiler/harbour.yyc
  * src/compiler/harbour.yyh
  * src/compiler/hbident.c
  * src/macro/macrolex.c
  * src/nortl/nortl.c
  * src/pp/ppcore.c
  * src/rdd/hbsix/sxcompr.c
  * src/rdd/hbsix/sxfname.c
  * src/rdd/usrrdd/usrrdd.c
  * src/rtl/cdpapi.c
  * src/rtl/filebuf.c
  * src/rtl/filesys.c
  * src/rtl/fslink.c
  * src/rtl/gtcrs/gtcrs.c
  * src/rtl/gtsln/gtsln.c
  * src/rtl/gtsln/mousesln.c
  * src/rtl/gtxwc/gtxwc.c
  * src/rtl/hbbfsock.c
  * src/rtl/hbgtcore.c
  * src/rtl/hbsocket.c
  * src/rtl/hbzlib.c
  * src/rtl/hbznet.c
  * src/rtl/hbzsock.c
  * src/rtl/iousr.c
  * src/rtl/langapi.c
  * src/vm/cmdarg.c
  * src/vm/codebloc.c
  * src/vm/hvm.c
  * src/vm/itemapi.c
  * src/vm/macro.c
  * src/vm/set.c
  * src/vm/strapi.c
    * cleaned const qualifier dropping
    ! fixed few bugs I found analyzing related code
    ; I left untouched two places in HBSSL which IMO should be fixed yet
2016-01-21 20:42:30 +01:00
Przemysław Czerpak
682d8e32e3 2016-01-15 16:02 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapifs.h
  * src/common/hbfsapi.c
    + added automatic file handle table resizing to hb_fsOS2DosOpenL()
    + added new C function: hb_fsOS2DosOpen() which is wrapper to DosOpen()
      with automatic file handle table resizing.
      Please remember that unlike hb_fsOS2DosOpenL() this function is
      pure wrapper to DosOpen() so it does not make file name conversions
      and does not set hb_fsError().

  * src/rtl/filesys.c
  * src/rtl/hbcom.c
  * src/rtl/hbproces.c
    * use hb_fsOS2DosOpen() instead of DosOpen()

  * src/vm/cmdarg.c
    * set the initial size of file handle table to 256 in OS2 OpenWatcom
      builds if user does not set it explicitly by //F:<n> switch

  * config/global.mk
    - removed set HARBOUR=F:100 - it's not necessary with automatic FHT
      resizing

  ; Please test it in real OS2 environment
2016-01-15 16:02:45 +01:00
Przemysław Czerpak
bd92a307f5 2016-01-15 11:15 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/gtqtc/gtqtc.h
  * contrib/gtqtc/gtqtc1.cpp
    * renamed few variables to avoid -Wshadow warnings

  * contrib/hbfimage/fi_wrp.c
    * removed unnecessary ;

  * contrib/hbodbc/odbc.c
    ! replaced '\0' with NULL in pointer initialization

  * src/3rd/jpeg/Makefile
    % added missing HAVE_UNSIGNED_CHAR build macro. Without it LIBJPEG
      uses SHORT to hold unsigned 8 bit integers what increases memory
      usage and reduces the speed.

  * src/pp/hbpp.c
    * minor modification to keep string constant C90 comnpatible

  * src/rtl/filesys.c
    * simplified DOS to POSIX file attribute translation
    + respect hidden and system file attribute in DOS builds of hb_fsOpenEx()

  * src/vm/fm.c
    ! added yet another missing HB_STACK_TLS_PRELOAD
2016-01-15 11:15:55 +01:00
Viktor Szakats
58faf91453 2016-01-14 19:17 UTC+0100 Viktor Szakats (vszakats users.noreply.github.com)
* *
    % remove brandings and homepage [1] from copyright header. Pass 1 - using script.
      [1] nobody has access to it anymore AFAIK - and it's also just
          a redirect since long
    ! update url in copyright header
    ; this should make the diff between 3.4 and 3.2 easier to manage
2016-01-14 19:18:17 +01:00
Przemysław Czerpak
00c1fbbbe4 2016-01-14 14:50 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/fm.c
    ! declaration order
2016-01-14 14:50:26 +01:00
Przemysław Czerpak
bf5f15b1cb 2016-01-14 14:36 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/fm.c
    ! added missing HB_STACK_TLS_PRELOAD
2016-01-14 14:36:38 +01:00
Przemysław Czerpak
1b39f97e3a 2016-01-14 14:04 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* ChangeLog.txt
  * include/hbmemory.ch
  * src/vm/fm.c
    * renamed HB_MEM_ISLIMIT to HB_MEM_CANLIMIT
    ! fixed typo
2016-01-14 14:04:10 +01:00
Przemysław Czerpak
04283dd94f 2016-01-14 11:02 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* config/global.mk
    * set HARBOUR=F:100 during build process in OS2 builds - it increases
      maximum number of open handles per process from 20 to 100 so it should
      be possible to use -j<n> switch during Harbour compilation - please
      test, i.e.:
         os2-make -j3

  * contrib/xhb/hbcompat.ch
    ! fixed pp rules for Str(,,, <lStrip> ) translation

  * include/hbapifs.h
  * src/rtl/filesys.c
    + added new C function:
         HB_FHANDLE hb_fsOpenEx( const char * pszFileName, HB_FATTR nAttr,
                                 HB_USHORT uiFlags );
    * minor cleanup

  * include/hbmemory.ch
  * src/vm/fm.c
    + added two new actions for Memory() function:
         HB_MEM_STATISTICS - return non 0 value if FM statistic is enabled
         HB_MEM_ISLIMIT    - return non 0 value if used memory limit is
                             supported
    + added new PRG function:
         __fm_allocLimit( [ <nNewLimit> ] ) -> <nPrevLimit>
      It allows to set limit for maximum used memory in some memory
      managers, -1 means no limit.
      Now it works with DLMALLOC and in ST mode it's limit for memory
      allocated from system for whole application. In MT mode when
      HB_FM_DLMT_ALLOC (default for DLMALLOC) is enabled it's limit for
      single MSPACE (Harbour allocates 16 MSPACES and balance them
      between threads to improve scalability) so it's rather per thread
      limit. If memory statistic module is enabled during Harbour build
      process then this limit works with any memory manager and defines
      limit for total memory allocated by Harbour application regardles
      of MT or ST mode.

  * src/vm/hvm.c
    * use HB_MEM_STATISTICS instead of HB_MEM_USEDMAX to check if memory
      statistic module is enabled
2016-01-14 11:02:51 +01:00
Przemysław Czerpak
29fc87a1ef 2016-01-10 20:42 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/hvm.c
    * allow to use == operator for codeblocks

  * utils/hbtest/rt_hvm.prg
    * updated for == operator which accepts codeblocks

  * utils/hbtest/rt_main.ch
    * do not define __CLIPPER__ macro when ITK Clip compiler is used

  * contrib/hbbz2/errint.c
    * added HB_EXPORT to bz_internal_error() declaration
2016-01-10 20:42:57 +01:00
Przemysław Czerpak
7abf3b836d 2016-01-09 03:16 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/hvm.c
    + allow to compare symbol items with == operator, i.e.:
         ? @QOut() == &( "@QOut()" )

  * include/hbapiitm.h
  * src/vm/itemapi.c
    + added new C function:
         hb_itemCompare( PHB_ITEM pItem1, PHB_ITEM pItem2,
                         HB_BOOL bForceExact, int * piResult );
      For compatible types it compares pItem1 with pItem2 setting piResult
      to -1, 0 or 1 if pItem1 is <, == or > then pItem2 and returns true
      otherwise it returns false and does not touch piResult.
    + allow to compare symbol items in hb_itemEqual()
2016-01-09 03:16:20 +01:00
Przemysław Czerpak
06bb6134a1 2015-12-24 14:53 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/hvm.c
    ! casting for C++ compilation
2015-12-24 14:53:42 +01:00
Przemysław Czerpak
d89d2ea0d5 2015-12-23 18:57 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/hvm.c
    ! added missing HB_STACK_TLS_PRELOAD - thanks to Viktor for the info
2015-12-23 18:57:58 +01:00
Przemysław Czerpak
b058c205e6 2015-12-23 17:53 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/harbour.hbx
  * src/vm/hvm.c
    + added new PRG function:
         __RecoverErrorBlock() -> <bError> | NIL
      It extracts previous error block pushed on HVM stack
      by BEGIN SEQUENCE WITH ...

  * src/rdd/dbf1.c
    ! fixed detecting VFP tables broken in my previous
      modification - thanks to Mario H. Sabado for information
      about the problem.
2015-12-23 17:53:42 +01:00
Przemysław Czerpak
d074db1033 2015-12-15 23:48 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* config/dos/watcom.mk
  * config/win/watcom.mk
  * config/linux/watcom.mk
    ! enabled -bd OpenWatcom switch for code compiled as part of dynamic
      libraries
    * use CauseWay as default DOS extender for dynamic DOS builds

  * config/dyn.mk
  * config/lib.mk
  * src/Makefile
    ! fixed list of libraries used to create Harbour DLL in DOS builds

  * config/bin.mk
  * src/vm/Makefile
    * create hbmainstd library for OpenWatcom DOS shared builds

  * src/vm/maindllh.c
    + added DLL entry function for CauseWay DLLs in OpenWatcom builds

  * src/vm/main.c
    * include maindllh.c in OpenWatcom DOS shared builds

  * utils/hbmk2/hbmk2.prg
    + added support for dynamic binaries in DOS OpenWatcom builds.
      Support for CauseWay DLLs is still broken in current OpenWatcom
      builds so it will have to wait for the fix to be usable.

  * src/vm/dynlibhb.c
    + added support for dynamic libraries to OpenWatcom DOS builds.
      Now it's enabled only in harbour.dll due to problems with
      CW and current OW.

  * src/3rd/zlib/zconf.h
  * src/3rd/zlib/zlib.dif
    * use OS2 patch for exporting ZLIB symbols also in DOS builds

  * src/rdd/dbf1.c
    * pacified warning
2015-12-15 23:48:52 +01:00
Przemysław Czerpak
380760672d 2015-12-03 12:26 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbstack.h
  * src/vm/estack.c
    + added new C function:
         HB_ISIZ hb_stackBaseSymbolOffset( PHB_SYMB pSymbol );
      it returns offset of pSymbol function frame on HVM stack or -1
      if function/procedure pointed by pSymbol is not called.

  * contrib/hbnetio/readme.txt
  * contrib/hbnetio/netiosrv.c
  * contrib/hbnetio/hbnetio.hbx
    + added new server side function:
         netio_ServedConnection() -> <pConnectionSocket>
      It returns connection served by netio_Server() in current thread and
      can be used inside executed RPC functions to access <pConnectionSocket>
2015-12-03 12:26:07 +01:00
Przemysław Czerpak
706a75cece 2015-11-25 15:06 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/harbour.hbx
  * src/rtl/dateshb.c
    + added two new PRG functions:
         hb_SecToT( <nSeconds> ) -> <tTime>
         hb_MSecToT( <nMilliseconds> ) -> <tTime>

  * include/hbset.h
  * src/vm/set.c
    + added new C function:
         int hb_setUpdateEpoch( int iYear );
      if necessary it converts year respecting _SET_EPOCH settings

  * src/rtl/dates.c
    * use hb_setUpdateEpoch() instead of local code

  * src/rdd/dbf1.c
    ! respect _SET_EPOCH decoding DBF update time from DBF HEADER
      (LUpdate() function).
      It's not Cl*pper compatible anyhow looks that most of tools
      stores only last two digits from the year (just like in the
      DBF documentation) and -1900 trick is not used so it helps
      to decode correct update date.
    * store 'year % 100' instead of 'year - 1900' in DBF header
      when DBF table with VFP signature is used (DB_DBF_VFP).
2015-11-25 15:06:44 +01:00
Przemysław Czerpak
80b10a3a72 2015-11-23 23:24 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
    + reserve space for DBC name in newly created DBF files with VFP DBF
      signature, Thanks to Nikos Christophi, Jeff Stone and other who
      reported this problem.
    + added RTE when size of DBF header is exceed by "_NullFlags" field

  * src/vm/thread.c
    ! typo in comment
2015-11-23 23:24:30 +01:00
Przemysław Czerpak
0ffb88b947 2015-11-16 15:32 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/thread.c
    ! fixed typo in hb_threadOnceInit() - thanks to Teo
2015-11-16 15:32:53 +01:00
Przemysław Czerpak
d32d766c98 2015-10-02 16:45 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapigt.h
  * src/rtl/inkeyapi.c
    + added new C function:
         int hb_inkeyKeyExt( int iKey );
      It extracts function/edit key code value HB_KX_* from Harbour extended
      key code. If passed keycode is not valid extended keycode which points
      to function/edit key then 0 is returned.

  * include/harbour.hbx
  * src/rtl/inkey.c
    + added new PRG function hb_keyExt() - it's wrapper to hb_inkeyKeyExt()

  * include/harbour.hbx
  * src/rtl/mlcfunc.c
    ! restored original Cl*pper behavior in memo line functions,
      test shows that inside MemoEdit() Cl*pper internally uses a little
      bit different rules to format text then in memo line functions,
      It's Cl*pper bug but hard to fix because any differences to Cl*pper
      in this area cause that someone reports them as bug. So I decided
      to leave original Cl*pper behavior for compatibility and add new
      function which can be used in MemoEdit() and related code.
    + added new memo line function:
         hb_MLEval( <cString>, <bCode>, [ <nLineLength>=79 ],
                    [ <nTabSize>=4 ], [ <lWrap>=.T. ],
                    [ <nPos> ], [ @<nRow> ], [ @<nCol> ] ) -> <nLines>
      it formats texts using rules like in Cl*pper MemoEdit() not Cl*pper
      memo lines functions. For each processed line <bCode> is executed
      with 2 parameters: <cLine> and <lSoftCR>. It recognizes and accepts
      any EOLs just like hb_ATokens( <cText>, .T. ) and strips or converts
      soft CRs depending on word wrap mode.

  * src/rtl/teditor.prg
    * Use hb_MLEval() to format text
    % minor optimization

  * src/rtl/memoedit.prg
    * enabled Harbour extended key codes
    * small optimization
    ! fixed ME_BOTTOMRIGHT processing
    ! fixed initial line size calculation

  * src/vm/thread.c
    * removed dymmy code
2015-10-02 16:45:17 +02:00
Przemysław Czerpak
a46d22c9d7 2015-09-30 11:18 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/hvm.c
    ! added missing support for non MT builds in last commit
2015-09-30 11:18:54 +02:00
Przemysław Czerpak
6458e3a963 2015-09-30 10:55 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/harbour.hbx
  * src/vm/hvm.c
    + added internal PRG function to test number of HVM threads and stacks
         __vmCountThreads( [ @<nStacks> ], [ @<nThreads> ] ) -> <nThreads>

  * src/rtl/filesys.c
  * contrib/gtqtc/gtqtc1.cpp
  * contrib/gtwvg/gtwvgd.c
  * contrib/gtwvg/wvgcore.c
  * contrib/hbamf/amfdec.c
  * contrib/xhb/fparse.c
  * contrib/xhb/hbserv.c
  * contrib/xhb/hbxml.c
    * cleaned ;; usage in C code
2015-09-30 10:55:41 +02:00
Przemysław Czerpak
5eca8eab92 2015-09-29 21:24 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/hvm.c
    ! delay locking of main HVM thread stack until HVM is initialized,
      it fixes issue #107
    ! protect access to HB_STACK_TLS_PRELOAD by s_fHVMActive in
      hb_vmLockForce()
2015-09-29 21:24:15 +02:00
Przemysław Czerpak
ee07a735de 2015-09-17 12:23 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapicls.h
  * src/vm/classes.c
    * minor modification in variable name

  * src/rtl/filebuf.c
  * src/rtl/fscopy.c
  * src/rtl/fslink.c
  * src/rtl/vfile.c
    * cleaned FError() setting. It should not be changed by C file IO
      functions because they can be activated from RDD code so accessing
      work area field could change the FError() result, i.e. this code
      does not work when FError() is changed by C level IO operations:
         AnyFunc( FSeek( hFile, 0, FS_END ), field->MEMOVAL, FError() )
      Even simple field access may cause file IO operations in RDD code
      when relations are set because records in child area are repositioned
      only when necessary (when user tries to make some operations on this
      area). In the past RDD code was full of constructions like:
         uiSaveError = hb_fsFError();
         // make some IO operations
         hb_fsSetFerror( uiSaveError );
      to eliminate such overhead I separated PRG level FError() from
      C level IOError(). Please keep it.

  * ChangeLog.txt
    ! few typos
2015-09-17 12:23:29 +02:00
Przemysław Czerpak
010421f70e 2015-09-15 14:58 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbvmpub.h
  * src/vm/hvm.c
    + added support for hb_vmAtInit(), hb_vmAtExit() and hb_vmAtQuit()
      functions for dynamically loaded libraries
      This modification should also fix issue #33
2015-09-15 14:58:03 +02:00
Przemysław Czerpak
46fe44162b 2015-09-09 16:51 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/estack.c
    ! protect access to HB_STACK_TLS_PRELOAD by hb_stack_ready() macro,
      it's necessary for MT builds which do not use direct TLS access
      but need TLS key initialization, i.e. OS2

  * src/vm/hvm.c
    ! protect access to HB_STACK_TLS_PRELOAD by s_fHVMActive
2015-09-09 16:51:20 +02:00
Przemysław Czerpak
3fc5e437d9 2015-09-02 16:11 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbdefs.h
    * changed reference 32-bit reference counters in Win64 builds to 64-bit
      ones. It resolves problems with data alignment in memory allocated
      by hb_xgrab().

  * src/vm/asort.c
    * removed hack for MinGW64 build from new array sort code,
      after switching to 64bit reference counters it should not
      be longer necessary because allocated that has 64bit alignment
2015-09-02 16:11:24 +02:00
Przemysław Czerpak
38af08e97d 2015-09-02 15:54 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapifs.h
  * src/rtl/filebuf.c
    * added new C function hb_fileLoadData() - it can be used to load data
      from already opened regular files and streams

  * include/harbour.hbx
  * src/rtl/vfile.c
    + added new PRG function:
         hb_vfLoad( <cFileName>, [ <nMaxSize> ] ) -> <cFileBody> | NIL

  * src/vm/runner.c
    * use hb_fileLoadData()

  * contrib/hbwin/win_bmp.c
    * use hb_fileLoad()
2015-09-02 15:54:08 +02:00
Przemysław Czerpak
dc5937b990 2015-08-07 15:40 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbtcpio/tcpio.c
  * contrib/hbtcpio/hbtcpio.hbx
    + added new PRG function
         hb_vfFromSocket( <pSocket> ) -> <pFile>
      It converts socket created by socket open into TCPIP virtual file
      which works just like files created by hb_vfOpen( "tcp:...", ... )

  * include/hbapifs.h
  * src/rtl/filesys.c
    + added new C function
         HB_SIZE hb_fsPipeWrite( HB_FHANDLE hPipe, const void * buffer,
                                 HB_SIZE nSize, HB_MAXINT nTimeOut );
    + implemented hb_fsPipeUnblock() in OS2 builds
    + set IO error in hb_fsPipeCreate(), hb_fsIsPipeOrSock() and
      hb_fsPipeUnblock()
    * return ( HB_SIZE ) -1 from hb_fsPipeRead() if end of stream is
      reached or read error appears on non empty buffer. This modification
      also change the behavior of PRG hb_PRead() function so now result -1
      can be used to detect end of stream.

  * src/rtl/philes.c
  * include/harbour.hbx
    + added new PRG function:
         hb_PWrite( <nPipeHandle>, <cBuffer>, [<nBytes>], [<nTimeOut>] )
               -> <nBytesWritten>
    % removed unnecessary assignment

  * include/hbapiitm.h
    + added HVM internal macro hb_itemRawSwap()

  * src/vm/asort.c
    % use hb_itemRawSwap()
    * in old code use comparison which prefers < and > operators
      instead of <= and >=
2015-08-07 15:40:40 +02:00
Przemysław Czerpak
7a80a882ab 2015-08-01 13:14 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/asort.c
    * restored original loop and added different workaround which for
      the problem in 64 bit MinGW we exploited. It's dummy function call
      inside a loop so probably link time optimization (LTO is enabled
      by -O4 in the newest GCC versions) ignore it and the problem will
      reappear. Anyhow it only temporary solution which should give time
      to create self contain example and report the problem to MinGW
      authors - it's highly possible that also other code exploited this
      problem so be careful with MinGW64.
    % fixed index range checking to eliminate unnecessary index verification
2015-08-01 13:14:30 +02:00
Przemysław Czerpak
f9dd95c243 2015-08-01 01:28 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/asort.c
    * added workaround for bug in 64 bit MinGW builds
2015-08-01 01:28:33 +02:00
Przemysław Czerpak
748cf7e81f 2015-07-31 17:12 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/asort.c
    ! fixed missing nStart checking during array items reordering

  * utils/hbtest/rt_array.prg
    * updated Harbour specific results - I thought that someone
      invested time to exactly replicate CA-Cl*pper ASort() sorting
      but in fact Harbour specific resutls where hardcoded inside
      HBTEST so previous code was not Cl*pper compatible in the
      same way as current one.
2015-07-31 17:12:25 +02:00
Przemysław Czerpak
9e318add44 2015-07-31 16:01 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/asort.c
    % added new code for ASort()
      Warning: new sorting algorithm is stable (does not change the
               order of equal items). It means is not strictly Cl*pper
               compatible and it can be seen some dummy ASort() tests
               in HBTEST results.
2015-07-31 16:01:33 +02:00
Przemysław Czerpak
c67ac9166a 2015-06-24 00:33 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/classes.c
    ! fixed __objGetIVars() to correctly serialize objects without any own
      and inherited instance variables

  * contrib/hbhpdf/3rd/libhpdf/hpdfimac.c
    ! include string.h
  * contrib/hbhpdf/3rd/libhpdf/libhpdf.dif
    * rediffed
2015-06-24 00:33:01 +02:00
Viktor Szakats
e364f8634b 2015-06-17 12:39 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/filesys.c
    ! fixed FXO_TRUNCATE flag used without FXO_SHARELOCK in POSIX systems

  * src/rtl/net.c
    ! typo in variable name

  * src/vm/task.c
    ! variable scope

  * src/compiler/compi18n.c
    * minor variable type update

  * ChangeLog.txt
    ! formatting
2015-06-17 13:30:50 +02:00
Przemysław Czerpak
f7184a48fc 2015-03-24 13:42 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/harbour.hbx
  * src/vm/cmdarg.c
    + added new PRG function
         hb_ACmdLine() -> <array>
      borrowed from Viktor's branch (2015-03-12 03:02 UTC+0100 Viktor Szakats)
      It returns array with all command line parameters. Unlike
          hb_AParams( __dbgProcLevel() - 1 )
      hb_ACmdLine() returns all parameters also hidden ones just like
      hb_CmdLine() function and hb_argv()/hb_argc()
      Please also remember that hb_AParams() returns current value of
      parameters which could be changed bu user code so they can be different
      then original parameters passed to given function.

  * src/rtl/gtchrmap.c
    * casting

  * include/std.ch
    * synced casing with Viktor's branch
2015-03-24 13:42:51 +01:00
Przemysław Czerpak
74c4b51266 2015-03-05 20:46 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapi.h
  * src/vm/garbage.c
    + added hb_gcDummyClear() function

  * include/hbapirdd.h
  * include/hbusrrdd.ch
    + added DBTF_CPYCTR constant value - when set in dbTransInfo.uiFlags
      then after record transfer field counters should to be copied from
      source to destination area

  * include/hbapirdd.h
  * src/rdd/wafunc.c
    + added new C functions hb_dbTransInfoPut() and hb_dbTransInfoGet()
      which allow to store and retrieve pointer to DBTRANSINFO structure
      into/from HB_ITEM with strict type verification.

  * src/rdd/wafunc.c
    * pass pointer to DBTRANSINFO structure as argument of DBI_TRANSREC
      action. It allows RDD serving destination area to decide which
      fields and how should be transferred updating uiFlags, uiItemCount
      and lpTransItems members of DBTRANSINFO.
      If RDD removes all fields from DBTRANSINFO structure (uiItemCount==0)
      or does not return HB_SUCCESS for DBI_TRANSREC action (default WA
      implementation returns HB_SUCCESS so it's not necessary to overload
      it if RDD does not make any additional operations) then record
      transfer is interrupted.
    * copy field counters only when destination area asked about it setting
      DBTF_CPYCTR in dbTransInfo.uiFlags in DBI_TRANSREC action.

  * src/rdd/dbf1.c
    * do not copy automatically updated fields when destination area
      is not empty
    * set DBTF_CPYCTR to indicate that counters should be copied from
      source to destination area when original value of automatically
      updated fields are transferred
    ; Now DBF* RDDs in Harbour respects the following rules for record
      transfer operations (COPY TO / APPEND FROM) with automatically
      updated fields:
         - COPY TO transfers original values to destination table and
           finally copy counters from the source table to destination one
           so autoincrement fields in both tables after next append will be
           initialized with the same values regardless of number of copied
           records - even if only single record is copied then counters in
           destination table will inherit next values for new record from
           the source table. Also values of RowVer and ModTime fields are
           copied from source to destination table and not updated during
           transfer operation.
         - APPEND FROM works like COPY TO (original field values and then
           counters are copied to destination table) if the source table
           supports counters and destination table is empty and FLocked()
           or opened in exclusive mode.
           If source table does not support counters for given fields, i.e.
           it is processed by transfer RDD like DELIM or SDF (RDT_TRANSFER)
           or destination table is not empty or opened in shared mode and
           FLock is not set when APPEND FROM is executed then automatically
           updated fields (counters, RowVer, ModTime) are not copied and
           initialized with new values like for each new record added to
           destination table.

  * ChangeLog.txt
    ! typo in last ChangeLog entry
2015-03-05 20:46:23 +01:00
Przemysław Czerpak
418caaac51 2015-02-17 12:06 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbssl/tests/inetssl.prg
  * contrib/rddads/ads1.c
  * src/rtl/teditor.prg
    * formatting of my recent modifications taken from Viktor's branch

  * src/common/hbfsapi.c
  * src/compiler/complex.c
    * formatting

  * include/hbset.h
  * src/vm/set.c
  * src/nortl/nortl.c
    + add new C functions to change HVM set values:
         hb_setSetFileCase(), hb_setSetDirCase(), hb_setSetDirSeparator(),
         hb_setSetTrimFileName()

  * include/hbcomp.h
  * include/hbcompdf.h
  * src/compiler/cmdcheck.c
  * src/compiler/hbmain.c
  * src/compiler/ppcomp.c
  * src/compiler/genc.c
  * src/compiler/hbusage.c
  * src/nortl/nortl.c
    * rewritten code used to parse command line and environment parameters.
      New code is covered by GPL + Harbour exception license.
      All parameters are decoded by only one function and whole code is
      smaller so it's much easier to modify this code.
    ! fixed some small bugs and incompatibilities with Cl*pper in parameter
      parsing
    ! fixed -y undocumented (YYDEBUG) switch
    - removed -x[<prefix>] set symbol init function name prefix (for .c only)
      compiler command line switch
    * moved -fn[:[l|u]|-] -fd[:[l|u]|-] -fp[:<char>] and -fs[-] switches
      parsing to core compiler library. Now these switches are also works
      with compiler library linked with HBMK2.
    ; TOFIX: HBMK2 ignores -fn/-fd switches and allocates temporary names
             which are not compatible with names used later by harbour
             compiler when above switches are activated. HBMK2 should
             parse parameters and update SET FILECASE / SET DIRCASE before
             it creates temporary files.
2015-02-17 12:06:51 +01:00
Przemysław Czerpak
0c1c2ab698 2015-02-08 23:32 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/harbour.hbx
  * src/vm/hvm.c
    + added new PRG function:
         __BreakBlock() -> {|e| Break( e ) }

  * include/hbexprb.c
    % replace {|e| Break( e ) } with __BreakBlock() function call.
      __BreakBlock() returns exactly the same codeblock on each call
      so using it save memory and improve a little bit speed because
      it's not necessary to allocate new GC memory block and register
      it in GC block list. Additionally in MT mode it eliminates mutex
      lock necessary to register new GC block.
2015-02-08 23:32:45 +01:00
Przemysław Czerpak
a10bfbda40 2015-02-06 15:00 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/hbsocket.c
    * added support MAC addreses array returned by hb_socketGetIFaces()
      in BSD based systems like FreeBSD or Darwin (Mac OS X)

  * src/vm/hvm.c
    % small simplification i FOR EACH initial code

  * contrib/hbwin/win_bmp.c
  * contrib/hbwin/win_prn2.c
    * use Harbour FILE IO API instead of local file access

  * contrib/hbct/ctstrfil.c
    * formatting

  * contrib/gtqtc/gtqtc1.cpp
    ! fixed possible missing initialization for drawing character images
2015-02-06 15:00:31 +01:00
Przemysław Czerpak
20ec21c553 2014-12-12 13:30 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbcompdf.h
  * include/hbexprb.c
  * src/common/funcid.c
  * src/vm/hvm.c
    % optimize Array() function by replacing function call with HB_P_ARRAYDIM
      PCODE. Because this optimization changes RTE and interacts with broken
      code like
         aVal := Array( 10, 0, "A" )
      then it's not enabled by default. User can enable it by -ko switch.

  * utils/hbtest/rt_array.prg
    * use #pragma -ko- to for tests which interacts with above modification

  * src/rtl/hbproces.c
    % optimize memory allocation for redirected STDOUT and STDERR buffers in
      hb_processRun() function.
      The previous implementation was extremly inneficient when
      hb_processRun() was used to extract very long output from
      child process.

  * src/rtl/hbtoken.c
    + added support for dividing text into lines using EOLs used by different
      platform. To enable it it's enough to specify .T. as delimiter.

  * src/rtl/filesys.c
    * pacified MSVC warning - in fact this modification is significant only
      for bugy code which changes current directory in MT programs. It's bug
      on all platforms using current directory as process not thread
      attribute (common behavior).

  * include/inkey.ch
  * src/rtl/hbgtcore.c
    + added new extended keycodes:
         HB_K_TERMINATE
         HB_K_MENU

  * contrib/gtqtc/gtqtc1.cpp
    + center and rescale to console window dimension keeping aspect size ratio
      picture passed to HB_GTI_DISPIMAGE when second parameter is .T.
    + added support for HB_K_MENU key
    ! fixed dynamic font size modification in fullscreen, maximized and
      HB_GTI_RESIZEMODE_ROWS modes
2014-12-12 13:30:56 +01:00
Przemysław Czerpak
513f8824df 2014-12-05 01:33 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/common/hbffind.c
  * src/common/hbfsapi.c
  * src/rtl/filebuf.c
  * src/rtl/fssize.c
  * contrib/hbmzip/mzip.c
  * contrib/xhb/filestat.c
    ! typo in comment - thanks to Viktor

  * include/hbexprb.c
    * small code reorganization

  * include/hbvmpub.h
  * src/vm/hvm.c
    % use HB_VM_PUSHNIL() macro
    ! generate RTE for code like:
         LOCAL aVar[ 10, -1 ]
      (Cl*pper compatible)
2014-12-05 01:33:30 +01:00