Commit Graph

323 Commits

Author SHA1 Message Date
Przemyslaw Czerpak
a44e171cc2 2012-05-16 19:23 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* harbour/src/vm/classes.c
    % small optimization in __CLSGetProperties() function

  * harbour/src/rtl/tpersist.prg
    ! force linkin ARRAY() function when HBPersistent class is used
    ! use hb_ValToExp() instead of local ValToText() function which
      didn't work correctly for memos and some other types
    ! fixed infinite loop in HBPersistent:LoadFromText() used with
      empty text. The problem was also exploited by :LoadFromFile()
      method if file does not exists or it's empty()
    ! fixed deserialization of strings containing "=" char inside
    ! fixed deserialization of strings containing "::"
    ! added support for decoding nested objects - the code was not
      finished and this part was not implemented at all
    + added support for serialized text using ":=" assign operator
      instead of "="
    * use ":=" instead of "=" as assign operator in new serialized
      text
    + ignore lines starting with "//" and added support for files
      which do not start with OBJECT directive
    * ignore pointer and codeblock items stored in instance variables
      during serialization
    ; now HBPersistent class in Harbour should read serialized files
      created in xHarbour with few exceptions:
         - Harbour does not allow to serialize codeblocks
           See "CODEBLOCK SERIALIZATION / DESERIALIZATION" in
           doc/xhb-diff.txt for the reasons.
           If Harbour application restores xHarbour HBPersistent files
           with serialized codeblocks then RTE
               Undefined function: HB_RESTOREBLOCK
           is generated.
         - xHarbour serialize pointer items as numeric items
           saved in hexadecimal notation. Then restore them as numbers.
         - HBPersistent does not support hash arrays - they are
           serialized by default serialization code used by both
           compilers to generate expressions.
           In Harbour it's done by hb_valToExp() function and
           in xHarbour it's ValToPrg() is used.
           ValToPrg() does not create valid macrocompiler expressions
           for arrays and objects so HBPersistent files created
           by xHarbour are broken and cannot be correctly deserialized.
           It happens if objects has hash arrays in instance variables
           and these hash arrays contain normal arrays or object
           If Harbour application restores such xHarbour HBPersistent
           file then RTE "Syntax error: &" is generated.
    ; xHarbour encapsulates deserialization code inside TRY/CATCH/END
      statement saving errors to trace.log file. Harbour generates RTE.
      If programmer needs similar behavior then he should
      call :LoadFromText() and :LoadFromFile() methods inside
      BEGIN SEQUENCE [ / RECOVER ... ] / END SEQUENCE
      statement.
    ; xHarbour reinitialize all or properties instance variables to
      default state inside :LoadFromText() and :LoadFromFile() methods.
      The 3-rd parameter in above method <lPropertiesOnly> allows to
      chose which install variables should be reinitialized:
      all (default) or properties only.
      Harbour does not have such functionality.
      If programmer needs it then he should reinitialize them himself.
      It can be easy done be simple function.
      Alternatively we can implement this functionality but in such
      case I'd suggest to define three actions for such switch:
         none (default), all, properties only.
    ; Harbour does not support 2-nd parameter <lIgnoreBadIVars> which
      exist in xHarbour versions of HBPersistent:LoadFromText() and
      HBPersistent:LoadFromFile():
      If necessary we can implement it though it's usable only if we
      want to ignore some wrong lines and process others.
    ; Warning: Neither Harbour nor xHarbour supports arrays and objects
               with cyclic references in HBPersistent code - infinite
               loop appears in such case.
    ; I've never used HBPersistent and the state of the previous
      HBPersistent code in Harbour suggests that no one used it for
      some serious jobs so I'm open for any opinions and suggestions
      about it from xHarbour users.

  * harbour/src/compiler/harbour.y
    * generate line numbers before extended codeblocks - it gives
      more debugger friendly code.

  * harbour/src/compiler/harbour.yyh
  * harbour/src/compiler/harbour.yyc
    * regenerated (with bison 2.4.1)
2012-05-16 17:23:20 +00:00
Viktor Szakats
11eecc403b 2012-05-16 18:28 UTC+0200 Viktor Szakats (harbour syenar.net)
* src/vm/set.c
    ! added missing '#include "hbvm.h"' for hb_vmIsReady()
2012-05-16 16:28:42 +00:00
Przemyslaw Czerpak
5d2675146a 2012-04-24 16:20 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* harbour/include/hbapilng.h
  * harbour/src/vm/hvm.c
  * harbour/src/rtl/langapi.c
  * harbour/include/harbour.hbx
    + added new PRG function:
         HB_LANGNEW( <cNewLangId>, <cNewLangCpId>,
                     <cLangId>, <cLangCpId> ) -> <lOK>
      this function dynamically creates new lang module translating
      existing one then registers it, i.e.:
         request HB_CODEPAGE_DE850
         request HB_CODEPAGE_DEISO
         request HB_LANG_DE
         HB_LANGNEW( "DEISO", "DEISO", "DE", "DE850" )
         SET( _SET_LANGUAGE, "DEISO" )

  * harbour/src/rtl/cdpapi.c
    * changed dynamic buffer for "EN" CP translations and flags
      to static one - it allows to use this CP after hb_cdpReleaseAll()
2012-04-24 14:20:40 +00:00
Przemyslaw Czerpak
290ae1b594 2012-04-24 10:25 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* harbour/src/vm/cmdarg.c
    ! respect HB_ARGSHIFT( .T. ) in windows version of hb_cmdargProgName()

  * harbour/ChangeLog
    ! fixed some typos in my unicode ChangeLog entry
2012-04-24 08:25:20 +00:00
Przemyslaw Czerpak
8d23393d83 2012-04-24 07:18 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* harbour/include/hbgtcore.h
    ! fixed typo in HB_GTSELF_KEYTRANS() macro.
      It should also fix problem with function keys in some GTs,
      i.e. ENTER in GTOS2 ALERT() reported by David.

  * harbour/src/rtl/filesys.c
    * use TEXT() macro
    * minor modification in fs_win_get_drive()

  * harbour/src/vm/hvm.c
    * added protection against potential memory leak if
      programmer change type of enumerated item
2012-04-24 05:18:24 +00:00
Przemyslaw Czerpak
93d3a46d84 2012-04-20 17:52 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* harbour/include/hbdefs.h
    * moved HB_WCHAR definition from hbapicdp.h to hbdefs.h

  * harbour/include/hbapicdp.h
  * harbour/include/hbcdpreg.h
  * harbour/src/rtl/cdpapi.c
  * harbour/src/rtl/cdpapihb.c
    + added support for custom sorting redirected from HVM
    + added support for custom character indexes in strings
    + added support for custom character flags (upper, lower, alpha, digit)
    + added support for custom upper/lower conversions
    + added support for CPs using unicode character values instead of
      ASCII ones
    + added new CP functions which respects custom CP settings:
        hb_cdpUpperWC(), hb_cdpTextLen(), hb_cdpTextPos(),
        hb_cdpTextPosEx(), hb_cdpTextGetU16(), hb_cdpTextPutU16(),
        hb_cdpCharEq(), hb_cdpCharCaseEq()
    + added new conversion functions:
        hb_cdpGetUC(), hb_cdpGetWC(), hb_cdpGetU16Ctrl()
    + added macros to detect codepage parameters:
         HB_CDP_ISBINSORT() - codepage uses simple binary sorting
         HB_CDP_ISCUSTOM()  - codepage uses custom string decoding
         HB_CDP_ISCHARIDX() - codepage use character indexes instead
                              of bytes ones
         HB_CDP_ISCHARUNI() - CHR(), ASC() and similar functions operates
                              on Unicode values instead of bytes
         HB_CDP_ISUTF8()    - codepage uses UTF-8 encoding

  * harbour/include/inkey.ch
    - removed HB_INKEY_EXTENDED - it was not used in Harbour
    + added new flag HB_INKEY_EXT - it allows to used different
      event encoding system with automatic translation to
      standard Clipper values. It will be used in the future
      as base for low level GTs code. Now it's possible to
      selectively switch to the new system. New codes are
      unique and do not interacts with Clipper.
    + added HB_INKEY_ALL macro - it's similar to INKEY_ALL but
      enables also GTEVENT keys.

  * harbour/include/hbgtcore.h
  * harbour/src/rtl/hbgtcore.c
    * changed character values in internal screen buffer to unicode.
      Warning: this modification interacts with SAVESCREE()/RESTSCREEN()
               data. Now all GTs uses extended definition. If somene
               has code which needs VGA like screen buffers returned
               by SAVESCREE() then it can be forced by
                  hb_gtInfo( HB_GTI_COMPATBUFFER, .t. )
               Anyhow it will for to use only one CP in output.
    + added new GT methods which operated on HB_WCHAR values
    * modified existing methods using HB_WCHAR/HB_USHORT parameters
      to operate on HB_WCHAR values
    + added codepage conversion code directly to core code so it can
      be eliminated from low level GT drivers which do not need some
      special operations on it.
    + added support for extended inkey codes, they allow to encoded
      unicode values, mouse events with flags, keyboard events with
      modifier flags (shift,alt,ctrl,...), etc.
      Now in low level GT code only unicode key values are used but
      I plan to updated all GTs and switch to new code - it should
      resolve many small problems inheriting with Clipper inkey codes.

  * harbour/include/hbapifs.h
    * moved hb_fsNameConvU16() definition from hbapicdp.h to hbapifs.h

  * harbour/include/hbxvm.h
    - removed comment copied by mistake from GT header file

  * harbour/include/hbwinuni.h
    * changed HB_CHARDUP() and HB_CHARDUPN() macros - now they
      operate on functions which can be used without active HVM.
      In such case ANSI CP is used as source encoding.
    + added new macros: HB_OSSTRDUP() and HB_OSSTRDUP2().
      They make conversions from OS encoding to HVM one.
      They can be used without active HVM and in such case ANSI CP
      is used as destination encoding.

  * harbour/include/hbapi.h
  * harbour/src/vm/cmdarg.c
    + added new function hb_cmdargProgName()
      It returns application name with path or NULL if not set,
      caller must free returned value with hb_xfree() if not NULL.
      The string is in HVM encoding so it does not need any additional
      encodings.
    * modified hb_cmdargString() to return strings in HVM encoding.
    % some small code optimizations
    ; NOTE: parameters passed to MS-WINDOWS GUI programs which use
            WinMain() instead of main() as startup entry are translated
            to ANSICP before they can be accessed by application.
            This can be eliminated though not for console programs
            using where C compiler makes such translation to main()
            parameters.
            in all systems parameters are passed to application
            startup and init functions before programmer can set OS CP.
            This can be resolved by adding:
               INIT PROC CLIPINIT()
                  SET( _SET_CODEPAGE, <userCP> )
                  SET( _SET_OSCODEPAGE, <systemCP> )
               RETURN
            to linked code. INIT procedures called CLIPINIT() are
            executed before any other ones.

  * harbour/include/hbapi.h
  * harbour/src/vm/set.c
    + added new functions for CP converisons which can be used with
      and without active HVM:
         hb_osStrEncode(), hb_osStrEncodeN(),
         hb_osStrDecode(), hb_osStrDecode2(),
         hb_osStrU16Encode(), hb_osStrU16EncodeN(),
         hb_osStrU16Decode(), hb_osStrU16Decode2(),

  * harbour/include/hbvm.h
  * harbour/src/vm/hvm.c
    + added new function hb_vmIsReady() - it's similar to hb_vmActive()
      but it also checks if current thread has active HVM stack.
    * moved hb_cdpReleaseAll() to the end of HVM cleanup code so
      CP conversions are longer active.

  * harbour/include/hbcomp.h
  * harbour/src/compiler/cmdcheck.c
  * harbour/src/compiler/hbusage.c
  * harbour/src/common/expropt2.c
    + added new compiler switch:
         -ku  - strings in user encoding
      Now it informs compiler that strings use custom encoding so some
      optimizations which are byte oriented cannot be used.
      It's possible that in the future we will change above definition
      to sth like: "strings in UTF8 encoding" but now I would like to
      keep more general.

  * harbour/src/vm/macro.c
    * inform macrocompiler about custom CPs using own character indexes
      to disable byte oriented optimizations.

  * harbour/include/hbapigt.h
  * harbour/src/rtl/gtapi.c
  * harbour/src/rtl/inkeyapi.c
    + added HB_B_*_W macros with unicode box character definitions
    + added HB_MBUTTON_* macros
    + added new GT functions: hb_gtHostCP() and hb_gtBoxCP() which
      allows to extract CPs used in translations by GTs.
    + added new function hb_inkeyKeyString() - it converts inkey value
      to corresponding string
    + added new function hb_inkeyKeyStd() - it converts new extended
      key value to standard Clipper one.

  * harbour/include/hbapifs.h
  * harbour/src/common/hbffind.c
    * moved OS codepage translations fully to hb_fsFind*() functions.
      It fixes few problems which existed before, i.e. double CP
      conversions in MS-Windows builds and simplifies upper level code.

  * harbour/src/pp/hbpp.c
  * harbour/src/rtl/direct.c
  * harbour/src/rtl/fssize.c
  * harbour/src/rtl/file.c
  * harbour/contrib/hbct/files.c
    * eliminated not longer necessary CP conversions in code calling
      hb_fsFind*() functions.

  * harbour/src/common/hbgete.c
    * moved OS codepage translations to hb_getenv(), hb_getenv_buffer()
      and hb_setenv() functions. It fixes few problems which existed
      before, i.e. double CP conversions in MS-Windows builds and
      simplifies upper level code.

  * harbour/src/rtl/net.c
  * harbour/src/rtl/gete.c
    * eliminated not longer necessary CP conversions in code calling
      hb_getenv()/hb_setenv() functions.
    ; NOTE: additional parameters in HB_GETENV() and HB_SETENV() which
            disabled CP conversions are not longer supported.
            They were strictly platform dependent and ignored in chosen
            cases (i.e. in MS-Windows UNICODE builds we always have to
            convert strings transferred between HVM and OS. If someone
            needs old functionality for other platform then he should
            temporary disable _SET_OSCODEPAGE.

  * harbour/src/common/hbver.c
  * harbour/src/common/hbfsapi.c
  * harbour/src/rtl/fstemp.c
  * harbour/src/rtl/fslink.c
    * eliminated HB_TCHAR_*() macros

  * harbour/src/common/strwild.c
    + added supprot for custom CPs using own character indexes in:
         hb_strMatchWild(),
         hb_strMatchWildExact(),
         hb_strMatchCaseWildExact()

  * harbour/src/nortl/nortl.c
    + added new dummy function replacement for binaries which are not
      linked with HVM.

  * harbour/src/rtl/filesys.c
    ! fixed double CP conversions in MS-Windows builds of hb_fsCurDirBuff()
    * use hb_vmIsReady() instead of hb_stackId() in file name conversions.
    * use hb_cmdargProgName() in hb_fsBaseDirBuff()

  * harbour/src/rtl/philes.c
    * use hb_cmdargProgName() in HB_PROGNAME() function.

  * harbour/src/rtl/gtcgi/gtcgi.c
  * harbour/src/rtl/gtstd/gtstd.c
  * harbour/src/rtl/gtpca/gtpca.c
  * harbour/src/rtl/gtdos/gtdos.c
  * harbour/src/rtl/gtos2/gtos2.c
  * harbour/src/rtl/gtwin/gtwin.c
  * harbour/src/rtl/gtwvt/gtwvt.h
  * harbour/src/rtl/gtwvt/gtwvt.c
  * harbour/src/rtl/gttrm/gttrm.c
  * harbour/src/rtl/gtcrs/gtcrs.c
  * harbour/src/rtl/gtsln/gtsln.c
  * harbour/src/rtl/gtsln/kbsln.c
  * harbour/src/rtl/gtsln/gtsln.h
  * harbour/src/rtl/gtxwc/gtxwc.h
  * harbour/src/rtl/gtxwc/gtxwc.c
  * harbour/contrib/gtwvg/gtwvg.c
  * harbour/contrib/gtwvg/gtwvg.h
  * harbour/contrib/gtalleg/gtalleg.c
  * harbour/contrib/hbqt/gtqtc/gtqtc.cpp
  * harbour/contrib/hbqt/gtqtc/gtqtc.h
    * updated to work with new unicode GT API
      please make tests with different GTs - I'm not able to test
      all of them, i.e. I do not have any OS2 machine.

  * harbour/src/rtl/box.c
  * harbour/src/rtl/oldbox.c
  * harbour/src/rtl/scroll.c
  * harbour/src/rtl/console.c
    * updated to work with new unicode GT API and
      CPs using custom character indexes

  * harbour/src/rtl/at.c
  * harbour/src/rtl/ati.c
  * harbour/src/rtl/rat.c
  * harbour/src/rtl/len.c
  * harbour/src/rtl/transfrm.c
  * harbour/src/rtl/left.c
  * harbour/src/rtl/right.c
  * harbour/src/rtl/substr.c
  * harbour/src/rtl/stuff.c
  * harbour/src/rtl/padc.c
  * harbour/src/rtl/padl.c
  * harbour/src/rtl/padr.c
    * updated to work with CPs using custom character indexes

  * harbour/src/rtl/chrasc.c
    + added support for HB_CDP_ISCHARUNI() CPs.

  * harbour/src/rtl/mlcfunc.c
    * rewritten from scratch to work with CPs using custom character
      indexes

  * harbour/src/rtl/accept.c
    * updated to work with unicode inkey values and
      CPs using custom character indexes

  * harbour/src/rtl/strmatch.c
    % small optimization

  * harbour/src/rtl/Makefile
  + harbour/src/rtl/chruni.c
    + added new PRG functions which allows to make byte/binary and
      unicode/character operations on strings:
         HB_UCHAR( <nCode> ) -> <cText>
            return string with U+nCode character in HVM CP encoding
         HB_BCHAR( <nCode> ) -> <cText>
            return 1 byte string with <nCode> value
         HB_UCODE( <cText> ) -> <nCode>
            return unicode value of 1-st character (not byte) in given string
         HB_BCODE( <cText> ) -> <nCode>
            return value of 1-st byte in given string
         HB_ULEN( <cText> ) -> <nChars>
            return string length in characters
         HB_BLEN( <cText> ) -> <nBytes>
            return string length in bytes
         HB_UPEEK( <cText>, <n> ) -> <nCode>
            return unicode value of <n>-th character in given string
         HB_BPEEK( <cText>, <n> ) -> <nCode>
            return value of <n>-th byte in given string
         HB_UPOKE( [@]<cText>, <n>, <nVal> ) -> <cText>
            change <n>-th character in given string to unicode <nVal> one and
            return modified text
         HB_BPOKE( [@]<cText>, <n>, <nVal> ) -> <cText>
            change <n>-th byte in given string to <nVal> and return modified
            text

  * harbour/src/rtl/hbdoc.prg
  * harbour/src/rtl/memvarhb.prg
    * use HB_BCHAR() for binary string definitions

  * harbour/src/rtl/hbi18n2.prg
    * use hb_utf8CHR( 0xFEFF ) instead of hardcoded binary sting and
      HB_BLEN() instead of LEN()

  * harbour/src/rtl/inkey.c
    + added new functions:
         HB_KEYCHAR( <nKey> ) -> <cChar>
         HB_KEYSTD( <nExtKey> ) -> <nClipKey>
    ! use HB_INKEY_ALL instead of INKEY_ALL in LASTKEY()

  * harbour/src/rtl/achoice.prg
  * harbour/src/rtl/browse.prg
  * harbour/src/rtl/menuto.prg
  * harbour/src/rtl/tgetlist.prg
  * harbour/src/rtl/teditor.prg
  * harbour/src/rtl/tlabel.prg
  * harbour/src/rtl/tpopup.prg
  * harbour/src/rtl/radiobtn.prg
  * harbour/src/rtl/radiogrp.prg
  * harbour/src/rtl/wait.prg
    * updated to work with unicode inkey() values

  * harbour/src/rtl/listbox.prg
    * use box.ch macros instead of explicit CHR(...) definitions

  * harbour/src/rtl/ttopbar.prg
    * updated to work with different type of CPs

  * harbour/src/rtl/scrollbr.prg
    * formatting

  * harbour/src/rtl/mouse53.c
    * use HB_MBUTTON_* macros instead of local ones

  * harbour/src/codepage/cp_utf8.c
  + harbour/src/codepage/uc16def.c
  + harbour/src/codepage/utf8sort.c
    * replaced UTF8ASC with new CP: UTF8EX
      This CP uses character indexes instead of bytes one
      and operates on unicode characters flags.
      Tables for upper/lower conversions and upper/lower/alpha/digit
      flags were generated automatically from
         http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
      It also uses custom collation rules. It's very simple one
      level sorting based on UTF8 C collation.
      If someone needs some advanced sorting rules, then it's enough
      to create copy of this cp with user custom version of UTF8_cmp()
      and UTF8_cmpi() functions, i.e. they can be redirected to some
      external library like ICU (icu-project.org).

  * harbour/contrib/hbct/ctwin.c
  * harbour/contrib/hbct/ctwin.h
  * harbour/contrib/hbct/ctwfunc.c
    * added support for new unicode GT API

  * harbour/contrib/xhb/xhbfunc.c
    * redirected HB_CMDARGARGV() to HB_PROGNAME()

  * harbour/contrib/hbnf/origin.c
    * redirected FT_ORIGIN() to HB_PROGNAME()

  * harbour/contrib/hbnf/getenvrn.c
    ! windows version of FT_GETE() fully rewritten - it should
      fix well known problems reported to the devel list. Please test.
    % small optimization for other systems

  * harbour/contrib/hbfship/exec.c
    * use hb_cmdargProgName() in EXECNAME()

  + harbour/tests/uc16_gen.prg
    + added code which generates tables with unicode character flags
      from http://www.unicode.org/Public/UNIDATA/UnicodeData.txt.
      harbour/src/codepage/uc16def.c was generated by this code.

  * harbour/tests/inkeytst.prg
  * harbour/tests/wvtext.prg
  * harbour/tests/gtkeys.prg
    * use HB_INKEY_ALL

  * harbour/include/harbour.hbx
  * harbour/include/hbcpage.hbx
  * harbour/include/hblang.hbx
    * regenerated

   ; It was quite big peace of modifications and for sure not everything
     is well tested so please make test and report problems you will find.
   ; This is basic version which introduce to HVM CPs with custom encodings.
     Some contrib code has to be updated to work correctly with it.
     I hope that developers interesting in will make necessary updates.
     I haven't touched GTWVW code at all - sorry but it needs very serious
     work to make it production ready and fix all existing problems.
   ; Special thanks to OTC - this firm sponsored adding basic UTF8 support
     to HVM.
2012-04-20 15:55:44 +00:00
Przemyslaw Czerpak
e4b3fb8a71 2012-03-29 00:06 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* harbour/src/vm/itemapi.c
    % removed redundant trailing 0 setting

  * harbour/src/rtl/fslink.c
    ! fixed hb_osDecodeCP() usage

  * harbour/ChangeLog
    * marked last TOFIX as [DONE]
2012-03-28 22:07:12 +00:00
Przemyslaw Czerpak
232c295360 2012-03-21 14:04 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* harbour/src/vm/thread.c
    ! added missin HB_STACK_TLS_PRELOAD - thanks to Rossine for info.
2012-03-21 13:04:49 +00:00
Przemyslaw Czerpak
f2e59c30de 2012-03-21 12:14 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* harbour/src/vm/thread.c
    + added support for optional parameters to hb_mutexEval() function:
         hb_mutexEval( <pMtx>, <bCode> | <@sFunc()> [, <params,...> ] )
            -> <xCodeResult>
2012-03-21 11:15:08 +00:00
Viktor Szakats
20f5ea7f26 2012-02-07 20:48 UTC+0100 Viktor Szakats (harbour syenar.net)
* src/vm/set.c
    ! SET( _SET_DEVICE ) to accept anything starting with "PRIN"
      as "PRINTER" for Cl*pper compatibility.

  * src/rtl/filesys.c
    ! use utimes() instead of utime() on non-watcom linux platform
      to avoid warning (and to follow the other similar utimes() call).

  ; lightly tested, review me
2012-02-07 19:54:22 +00:00
Mindaugas Kavaliauskas
401423620e 2012-01-27 18:25 UTC+0200 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt)
* src/vm/hashes.c
  * src/vm/hashfunc.c
    + implemented posibility to use hashes a sorted arays with binary search.

      Implemented HB_BOOL hb_hashScanSoft( pHash, pKey, &nPos ). Function 
      if similar to, but returns nPos even if pKey is not found in pHash.

      Extended HB_HHASKEY( aHash, xKey [, @nPos ] ) --> lFound
      Function optionaly returns position of the item with a largest key 
      smaller or equal to xKey. If xKey is less than all keys in hash, 
      zero position is returned. I.e., 
        aHash := {10=>, 20=>}
        ? HB_HHASKEY( aHash,  5, @nPos ), nPos  //  .F.          0
        ? HB_HHASKEY( aHash, 10, @nPos ), nPos  //  .T.          1
        ? HB_HHASKEY( aHash, 15, @nPos ), nPos  //  .F.          1
        ? HB_HHASKEY( aHash, 20, @nPos ), nPos  //  .T.          2
        ? HB_HHASKEY( aHash, 25, @nPos ), nPos  //  .F.          2
2012-01-27 16:25:55 +00:00
Przemyslaw Czerpak
d8aa9b52c3 2012-01-10 14:38 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* harbour/include/hbhrb.ch
  * harbour/src/vm/runner.c
    * disabled access to INIT and EXIT functions in
      HB_HRBGETFUNSYM() and HB_HRBGETFUNLIST()
    + added 2-nd parameter <nType> to HB_HRBGETFUNLIST()
         HB_HRBGETFUNLIST( <pHRB> [, <nType>] ) -> <aFuncList>
      <nType> is defined in hbhrb.ch:
         HB_HRB_FUNC_PUBLIC - locally defined public functions
         HB_HRB_FUNC_STATIC - locally defined static functions
         HB_HRB_FUNC_LOCAL  - locally defined functions
         HB_HRB_FUNC_EXTERN - external functions used in HRB module
2012-01-10 13:38:50 +00:00
Viktor Szakats
1b4008723b 2012-01-06 16:13 UTC+0100 Viktor Szakats (harbour syenar.net)
* ChangeLog
  * (whole tree)
    * changed e-mail address
2012-01-06 15:28:23 +00:00
Przemyslaw Czerpak
35fbd4f189 2012-01-02 21:38 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* harbour/include/hbapistr.h
  * harbour/src/vm/strapi.c
    + added new C functions:
         const char * hb_parastr( int iParam, HB_SIZE nIndex,
                                  void * cdp,
                                  void ** phString, HB_SIZE * pnLen );
         const char * hb_parastr_utf8( int iParam, HB_SIZE nIndex,
                                       void ** phString, HB_SIZE * pnLen );
         const HB_WCHAR * hb_parastr_u16( int iParam, HB_SIZE nIndex,
                                          int iEndian,
                                          void ** phString, HB_SIZE * pnLen );

  * harbour/include/hbwinuni.h
    + added new C macros for windows builds:
         HB_PARASTR( nItem, nIndex, phStr, pnLen )
         HB_PARASTRDEF( nItem, nIndex, phStr, pnLen )

  * harbour/src/vm/hashes.c
    + added optional code for deleting items from hash arrays with
      strict order. This code can be enabled by Harbour compile time
      macro: HB_FAST_HASH_DEL.
      I added it for testing only.
2012-01-02 20:38:17 +00:00
Przemyslaw Czerpak
2cd688f7a6 2011-12-29 23:51 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* harbour/include/hbapistr.h
  * harbour/src/vm/strapi.c
    + added new C functions:
         hb_wstrncpy(), hb_wstrncat()

  * harbour/src/common/hbstr.c
    ; minor updated in comment

  * harbour/include/hbwinuni.h
    + added new macros:
         HB_STRLEN(), HB_STRNLEN(), HB_STRDUP(), HB_STRNDUP(),
         HB_STRNCPY(), HB_STRNCAT(), HB_STRCMP(), HB_STRNCMP()

  * harbour/src/rtl/disksphb.c
  * harbour/src/rtl/gtwvt/gtwvt.h
  * harbour/src/rtl/gtwvt/gtwvt.c
    * eliminated HB_TCHAR_*() macros
2011-12-29 22:51:29 +00:00
Viktor Szakats
7ad3481808 2011-12-24 03:32 UTC+0100 Viktor Szakats (harbour syenar.hu)
* ChangeLog
  * (whole tree)
    * removed obsolete antispam measure from my e-mail address
2011-12-24 02:47:24 +00:00
Przemyslaw Czerpak
8f7e9eda97 2011-12-06 11:42 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbrdddbf.h
    * modified DB_DBFLOCK_HB64 locking scheme
         - extended RLOCK/FLOCK area from 2^31-2 to 2^32-2
           it effectively changes maximum number of records in this
           locking scheme to 4'294'967'294
         - use COMIX like hyper locking mode
           it should increase performance
      Warning: INCOMPATIBLE!
               all applications using DB_DBFLOCK_HB64 locking mode should
               be updated - it is not safe to concurrently access the
               same files using programs compiled with older Harbour
               versions and current one.
    * renamed the following DB_DBFLOCK_* macros:
         DB_DBFLOCK_CLIP    to DB_DBFLOCK_CLIPPER
         DB_DBFLOCK_CL53    to DB_DBFLOCK_COMIX
         DB_DBFLOCK_CL53EXT to DB_DBFLOCK_HB32
    * added new locking scheme: DB_DBFLOCK_CLIPPER2
      This locking scheme is designed to replicate _real_ locking scheme
      used by Cl*pper applications linked with NTXLOCK2.OBJ
      It's different then the documented one.
    ; Now Harbour supports the following locking schemes:
         DB_DBFLOCK_CLIPPER  1 default Clipper locking scheme
         DB_DBFLOCK_COMIX    2 COMIX and CL53 DBFCDX hyper locking scheme
         DB_DBFLOCK_VFP      3 [V]FP, CL52 DBFCDX, SIx3 SIXCDX, CDXLOCK.OBJ
         DB_DBFLOCK_HB32     4 Harbour hyper locking scheme for 32bit file API
         DB_DBFLOCK_HB64     5 Harbour hyper locking scheme for 64bit file API
         DB_DBFLOCK_CLIPPER2 6 extended Clipper locking scheme NTXLOCK2.OBJ

  * harbour/include/hbrdddbf.h
  * harbour/include/hbrddntx.h
  * harbour/include/hbrddnsx.h
  * harbour/include/hbrddcdx.h
  * harbour/src/rdd/dbf1.c
  * harbour/src/rdd/dbfntx/dbfntx1.c
  * harbour/src/rdd/dbfnsx/dbfnsx1.c
  * harbour/src/rdd/dbfcdx/dbfcdx1.c
    + finished support for COMIX like hyper locking.
      This modification enables periodical switch to write locks
      by readers to eliminate starvation effect on some systems
      where many readers can completely block writer.
      By default readers use exclusive lock once per each 16 operations.
    + added optional support for delayed index write locks (flush locks)
      in hyper locking modes.
      If index RDD can use such locks then write lock can be divided into
      two parts:
         1) block writers and new readers (write lock)
         [prepare index modifications in memory]
         2) wait for old readers still active (flush lock)
         [write modifications to index file]
         [release locks]
      This mode reduces time when index is locked exclusively increasing
      reader performance and also increase writer performance because
      waiting for active readers it can prepare index modifications in
      memory.

  * harbour/src/rdd/dbfcdx/dbfcdx1.c
    + added support for delayed index write locks (flush locks) in DBFCDX

  * harbour/src/rtl/filebuf.c
    * automatically change write file locks to read locks when file is
      open in readonly mode in POSIX systems.

  * harbour/src/vm/classes.c
    * disabled inheriting of class variables values from ancestor classes
      when new class is dynamically created.
      Warning: INCOMPATIBLE!
               This modification is not backward compatible and can
               interact with some existing code which has to be updated
               for new behavior.
2011-12-06 10:42:41 +00:00
Przemyslaw Czerpak
f61adeaef4 2011-10-22 16:22 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/fm.c
    ! do not enable by default DLMALLOC in WinCE builds.
      It was the source of problems reported by Jarek with file read/write
      operation in WinCE builds. Now it should work correctly - please
      make some tests with real devices - I used emulator only.

  * harbour/contrib/hbwin/wapi_wingdi_font.c
    + added WAPI_ADDFONTRESOURCE() and WAPI_REMOVEFONTRESOURCE()
2011-10-22 14:22:37 +00:00
Przemyslaw Czerpak
69bfb809d4 2011-10-10 19:50 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/src/rtl/cdpapi.c
    + added new string C functions operating on current HVM CP:
         HB_BOOL hb_strIsDigit( const char * szChar );
         HB_BOOL hb_strIsAlpha( const char * szChar );
         HB_BOOL hb_strIsLower( const char * szChar );
         HB_BOOL hb_strIsUpper( const char * szChar );

  * harbour/src/rtl/is.c
    * use hb_strIs*() functions instead of hb_charIs*()

  * harbour/include/hbapi.h
  * harbour/src/vm/set.c
    + added new function to check if OS<->Harbour codepage conversion
      is enabled:
         HB_BOOL hb_osUseCP( void );

  * harbour/src/rtl/filesys.c
    * use hb_osUseCP() function

  * harbour/include/hbapicdp.h
    + added HB_CDP_ISBINSORT(cdp) and HB_CDP_ISBYTESORT(cdp) macros

  * harbour/src/vm/itemapi.c
  * harbour/src/rdd/dbfntx/dbfntx1.c
  * harbour/src/rdd/dbfnsx/dbfnsx1.c
  * harbour/src/rdd/dbfcdx/dbfcdx1.c
  * harbour/contrib/rddsql/sqlmix.c
  * harbour/contrib/rddads/adsx.c
    * use HB_CDP_IS*SORT() macros

  * harbour/src/rdd/dbfcdx/dbfcdx1.c
    % simplified hb_cdxFindBag()

  * harbour/src/rtl/hbascii.c
    ! fixed HB_ASCIIUPPER() and HB_ASCIILOWER() functions: hb_strUpper()
      was wrongly used inside both functions - probably C&P mistake
      [TOMERGE 3.0]

  * harbour/src/rdd/dbf1.c
    * updated comment
2011-10-10 17:50:44 +00:00
Przemyslaw Czerpak
a74ef66d49 2011-08-09 14:26 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/classes.c
    ! added missing initialization of onError and destructor flags.
      The problem could be exploited when class inherits from more
      then one parent classes and onError handler[s] or destructor[s]
      were neither defined in the class nor in the first ancestor.

  * harbour/contrib/hbwin/olecore.c
    + added helper PRG functions:
         __oleInvokeMethod(), __oleInvokePut(), __oleInvokeGet(),
         __oleGetNameId()
2011-08-09 12:26:42 +00:00
Przemyslaw Czerpak
e33d2bb9a2 2011-08-04 02:43 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/hvm.c
    * small code modification to pacify warning
2011-08-04 00:44:09 +00:00
Przemyslaw Czerpak
1eea547516 2011-08-04 01:51 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/runner.c
    * do not execute EXIT procedures inside HB_HRBDO() call.
      This modification allows to call HB_HRBDO() more then
      once for the same HRB module without activating INIT
      and EXIT procedures on each call. EXIT procedures will
      be activated when HRB modules is unloaded or on HVM QUIT.

  * harbour/contrib/hbwin/axcore.c
    ! cleaned casting
2011-08-03 23:51:25 +00:00
Przemyslaw Czerpak
915eea1017 2011-08-01 15:28 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbstack.h
  * harbour/src/vm/estack.c
    + added internal function hb_stackLockCount()

  * harbour/src/vm/hvm.c
    * modified hb_vmRequestReenter() to return HB_FALSE instead of GPF
      when called from non HVM thread.
    * extended hb_vmRequestReenter[Ext]()/hb_vmRequestRestore() to
      save and restore HVM stack lock state and lock HVM stack before
      successful return.
      This extensions is critical for MT applications which need
      to safely reenter HVM also from code encapsulated inside unknown
      number of hb_vnUnlock()/hb_vnLock() calls.
      [TOMERGE 3.0]

  * harbour/src/compiler/cmdcheck.c
    % removed redundant conditions
2011-08-01 13:29:07 +00:00
Przemyslaw Czerpak
5fd29fa2e6 2011-07-28 00:32 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/hvm.c
    ! fixed infinite error retry loop when variable is create inside
      error handler
2011-07-27 22:32:19 +00:00
Przemyslaw Czerpak
fd4699533c 2011-07-22 09:57 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/hvm.c
    ! added protection against self-recursive iterating in code like:
         FOR EACH var in @var
            [...]
         NEXT
      Now RTE is generated in such case instead of GPF
2011-07-22 07:57:30 +00:00
Viktor Szakats
44306c955c 2011-07-17 16:21 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* include/extend.api
  * include/harbour.hbx
  * include/hbdefs.h
  * include/hbapi.h
  * include/hbvm.h
  * include/hbapigt.h
  * include/clipdefs.h
  - src/pp/pplib3.c
  * src/pp/Makefile
  * src/vm/hvm.c
  * src/rtl/hbtoken.c
  * src/rtl/inkey.c
  * src/rdd/usrrdd/usrrdd.c
  * contrib/hbmysql/hbmysql.hbx
  - contrib/hbmysql/mysqlold.c
  * contrib/hbmysql/mysql.c
  * contrib/hbmysql/hbmysql.hbp
  * contrib/hbmysql/mysql.ch
  * contrib/hbpgsql/hbpgsql.hbx
  * contrib/hbpgsql/postgres.c
  * contrib/hbwin/hbwin.hbp
  * contrib/hbwin/hbwin.hbx
  - contrib/hbwin/legacy.prg
  - contrib/hbwin/legacycd.c
  - contrib/hbwin/legacyco.c
  - contrib/hbwin/legacycp.c
  * contrib/hbodbc/hbodbc.hbx
  - contrib/hbodbc/odbcold.c
  * contrib/hbodbc/odbc.c
  * contrib/hbodbc/hbodbc.hbp
  * contrib/hbtip/utils.c
  * contrib/hbtip/hbtip.hbx
    * deleted things marked with HB_LEGACY_LEVEL3, finishing cleanup
      job started many years ago.
    ; this also means that windows.h and os2.h will no longer be
      included by Harbour headers, HB_OS_WIN_USED is thus ineffective,
      so if someone needs these headers to access system APIs, they
      should be manually included in each source file. Some old
      hacks have also been removed which disabled some Clipper
      compatibility macros/types in compatibility headers (clipdefs.h, *.api),
      if someone uses these alongside windows.h/os2.h inclusion, it will
      be broken, here the strategy is to move to Harbour types and
      Harbour API headers, simply Clipper headers and newer OS headers
      are not compatible.
    ; HB_DONT_DEFINE_BASIC_TYPES is not effective anymore.
    ; INKEY_RAW is no more, use HB_INKEY_RAW instead.
    ; NEXTKEY() hidden parameter extension is disabled. Use HB_KEYNEXT()
      Harbour alternative which has it.
    ; Some legacy PP functions are no more.
    ; hb_vmPushState()/hb_vmPopState() APIs were now permanently deleted.
    ; __STR*() token handling legacy functions are no more, use native HB_TOKEN*()
      ones instead.
    ; WRITEBHEADER in USRRDD is no more, WRITEDBHEADER is the replacement.
    ; hbmysql, hbodbc compatibilty and deprecated functions were deleted
    ; hbwin compatibility functions were deleted. If there is demand, mainly to
      help migrating xhb users, they can be readded to xhb lib by interested
      developers, now deleted code should be changed to fall back to dummies
      on non-Windows builds.
    ; some deprecated hbpgsql functions were deleted
    ; hbtip HB_BASE64() is deleted. Use core HB_BASE64ENCODE() instead.

    ; Anyone affected by above changes has the option to stick with 3.0.x Harbour
      versions or to update their source code according to above instructions
      (or instructions included in past ChangeLog entries)

    ; Some fallouts in Harbour build is possible after these changes
2011-07-17 14:23:26 +00:00
Viktor Szakats
cc606c3e9a 2011-06-23 09:49 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* src/vm/classes.c
    ! error if HB_USE_PROFILER is defined. Patch from Teo Fonrouge.
2011-06-23 07:50:50 +00:00
Viktor Szakats
208a946eeb 2011-06-03 01:55 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* src/vm/thread.c
    * upped sleep timeout in *nix version of hb_threadReleaseCPU() to 20 ms
      it halves CPU consumption. pls revert/comment if you notice
      causing this any harm.
2011-06-02 23:55:58 +00:00
Przemyslaw Czerpak
c72ee124b3 2011-06-02 21:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/thread.c
    * set sleep timeout in *nix version of hb_threadReleaseCPU() to 10 ms

  * harbour/src/compiler/hbpcode.c
    ! fixed typo which could cause compile time crash when debugger code
      is generated (-b) and file name with extenssion has only one or
      two characters

  * harbour/include/hbcompdf.h
  * harbour/src/compiler/hbmain.c
  * harbour/src/compiler/hbstripl.c
  * harbour/src/compiler/harbour.y
  * harbour/src/compiler/harbour.yyc
    ! removed old code designed to optimize line numbers generated in PCODE.
      It cannot work correctly and in some cases it was generating HB_P_LINE
      pcodes in wrong places.
    % enabled new code for HB_P_LINE PCODEs optimization also in debugger (-b)
      compilation so it can be used to replaced the old one.
2011-06-02 19:05:56 +00:00
Viktor Szakats
a25f17dcfb 2011-05-22 13:56 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* src/vm/vmmt/Makefile
    ! added pbyref.c
2011-05-22 11:56:34 +00:00
Viktor Szakats
464af38648 2011-05-21 13:13 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* include/harbour.hbx
  + src/vm/pbyref.c
  * src/vm/Makefile
    + added HB_PISBYREF() (renamed because HB_PARAM* prefix would 
      be new, whereas HB_P*() is already utilized)
      [Przemek]

  * contrib/xhb/xhb.hbx
  * contrib/xhb/xhbfunc.c
    - commented HB_ISBYREF(). it's broken.
2011-05-21 11:14:46 +00:00
Viktor Szakats
66fdcc3bbb 2011-05-16 09:33 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* include/harbour.hbx
  * src/vm/runner.c
    + HB_HRBGETFUNLIST() -> <aArray>: New function posted to the
      list by Francesco Saverio Giudice
      (NOTE: I changed the name a little bit)

  * tests/gfx.prg
    ! fixed console output. Patch by Tamas Tevesz
    * changed rest of ? commands to outstd()
2011-05-16 07:34:46 +00:00
Viktor Szakats
39f6b6bdc0 2011-05-15 12:12 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* src/vm/set.c
    * _SET_EOF default set to .T. on *nix to match other plaforms
      (and Clipper I might guess)
      CHECKME!
    * formatting
    ! missing 'break;'. it didn't cause error, anyhow pls check me
      maybe it was intentional (in 'case HB_SET_PRN_CON:' branch)
      CHECKME!

  * contrib/hbunix/hbunix.hbp
  * contrib/hbunix/hbunix.hbx
    + POSIX_SLEEP( <n> ) -> <n>

  * contrib/hbcurl/hbcurl.ch
  * contrib/hbcurl/core.c
    + added changes from latest libcurl version (untested with 
      latest version)

  * utils/hbmk2/hbmk2.prg
    ! fixed symbol names in hbx generation for watcom/{linux|dos|os2}
2011-05-15 10:13:27 +00:00
Przemyslaw Czerpak
0889e6b43e 2011-05-13 04:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbstack.h
  * harbour/src/vm/hvm.c
    ! fixed stack preloading in hb_vmRequestReenterExt() when new stack has to be allocated
2011-05-13 02:05:59 +00:00
Przemyslaw Czerpak
16037cfc6f 2011-05-11 16:01 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/src/vm/hashes.c
    + add new public C function: HB_BOOL hb_hashClear( PHB_ITEM pHash )
    * do not generate RTE when unexisting key is passed to HB_HDEL()
      now code which makes sth like:
         if xKey $ hValue
            hb_hDel( hValue, xKey )
         endif
      can be reduced to:
         hb_hDel( hValue, xKey )

  * harbour/src/vm/hashfunc.c
    + added new PRG function: HB_HCLEAR( <hValue> ) -> <hValue>
2011-05-11 14:02:04 +00:00
Przemyslaw Czerpak
861162111c 2011-05-10 21:43 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/hashes.c
    ! fixed HB_HMERGE() to work correctly when destination and source hash arrays
      are the same
    ! fixed HB_HASH_INTERSECT in HB_HMERGE()
    % two minor optimizations
2011-05-10 19:43:46 +00:00
Viktor Szakats
2040b02fea 2011-05-07 11:25 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* src/vm/maindllp/dllpcode.c
    * readded more win specific macros (msvc didn't like it)
2011-05-07 09:25:34 +00:00
Viktor Szakats
20dd966f91 2011-05-05 16:53 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* include/harbour.hbx
  * src/rtl/libnamec.c
    + added HB_LIBPOSTFIX(). not finalized. it returns 
      the dynamic lib postfix used by Harbour convention
      (f.e. '-21', or '-21-wce-arm') by harbour core dll 
      and contrib dlls

  * src/vm/maindllp/dllpcode.c
    * reduced win specific macros

  * contrib/xhb/xhb.hbx
  * contrib/xhb/xhberr.prg
    + added XHB_ERRORLOG( [<cFileName>], [<lAppend>] ) -> { cOldName, lOldAppend }
      to replace xhb _SET_ERRORLOG extension
      (build test only)
    ! fixed != operator on string
2011-05-05 14:53:44 +00:00
Przemyslaw Czerpak
e761af46e6 2011-04-19 15:11 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/procaddr.c
    ! removed dummy entry at the end of function table

  * harbour/src/common/hbstr.c
  * harbour/src/rdd/dbfcdx/dbfcdx1.c
  * harbour/src/rdd/hsx/hsx.c
  * harbour/contrib/xhb/fparse.c
    * pacified warnings

  * harbour/include/hbsetup.h
    * disabled flatten function attribute in ANDROID builds,
      it causes that Android_NDK-GCC GPFs compiling src/vm/procaddr.c

  * harbour/include/hbdate.h
    * enabled localtime_r() in Android builds

  * harbour/src/common/hbgete.c
    * enabled setenv() in Android builds

  * harbour/src/common/hbtrace.c
    ! fixed ANDROID_LOG_* flags
    ; QUESTION: why Android log is used instead of syslog?
                It causes that harbour has to be linked with
                log library (-llog).

  * harbour/src/common/hbprintf.c
    * disabled modfl() in Android builds

  * harbour/src/rtl/filesys.c
    * added hack for missing functions in android libc library

  * harbour/src/rtl/diskspac.c
  * harbour/src/rtl/disksphb.c
    * use statfs instead of statvfs in Android builds

  * harbour/contrib/hbct/dattime3.c
    * disabled stime() in Android builds

  * harbour/contrib/hbmzip/3rd/minizip/ioapi.h
    * do not use 64bit FILE functions in Android builds

  * harbour/contrib/xhb/hbsyslog.c
    * disabled using Android log in Android builds - use standard syslog
      instead. This code needs deeper modification to switch to Android log.

  ; I have just recompiled whole Harbour code for android-3, android-5
    and android-9 at ARM using standard Harbour Linux build files.
    Android does not have pthread and rt libraries (they are merged
    with android c library) so to avoid link errors I simply created
    soft links from libpthread.a and librt.a to libc.a.
    With this hack could use unmodified hbmk2 and linux .mk files.
    BTW exporting HB_CPU="arm" was not enough to switch to cross build
    in my x86@64 Linux machine so I had to export HB_HOST_BIN and set
    HB_BUILD_3RDEXT="no"
2011-04-19 13:11:43 +00:00
Przemyslaw Czerpak
aef9468700 2011-04-14 20:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/thread.c
    * renamed hb_criticalCode() to hb_mutexEval()

  * harbour/src/rtl/cdpapi.c
    * added HB_CODEPAGE_ANNOUNCE( UTF8 ) so user can use
         REQUEST HB_CODEPAGE_UTF8
      in PRG code.

  * harbour/tests/big5_gen.prg
    ; added note about characters mapped to U+FFFD REPLACEMENT CHARACTER
      in BIG5.TXT and iconv mapping for the same characters.
2011-04-14 18:20:18 +00:00
Przemyslaw Czerpak
6e54f3860e 2011-04-14 15:38 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/thread.c
    + added new function:
         hb_criticalCode( <pMtx>, <bCode> | <@sFunc()> ) -> <xCodeResult>
      it executes <bCode> or @sFunc() when <pMtx> is locked by this function.
    ! fixed hb_mutexQueueInfo() to not overwrite RTE subst value.
      This function may only return .T. or generate RTE so the logical
      return value is useless. I think that it should be removed and this
      function should simply return NIL.
    * updated syntax of PRG functions
2011-04-14 13:38:58 +00:00
Przemyslaw Czerpak
528fda3770 2011-04-10 12:43 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapicdp.h
  * harbour/src/rtl/cdpapi.c
    * removed fCtrl parameter from hb_cdp*() functions. It was used only
      in very specific case for GT output translations to show characters
      with ASCII codes in range < 0x00 : 0x1F > as corresponding CGA/EGA/VGA
      glyphs and was not necessary in normal conversions
    + added new function for character translation in GT output operations:
      hb_cdpTranslateDispChar(), hb_cdpGetU16Disp(),hb_cdpStrToUTF8Disp()
    * some small fixes, simplifications and improvements in CDP translation
      code

  * harbour/src/vm/strapi.c
  * harbour/src/rtl/cdpapihb.c
  * harbour/src/rtl/hbjson.c
  * harbour/contrib/hbexpat/internal.c
    * removed not longer necessary parameter from hb_cdp*() functions

  * harbour/src/rtl/gtdos/gtdos.c
  * harbour/src/rtl/gtwin/gtwin.c
  * harbour/src/rtl/gtxwc/gtxwc.c
  * harbour/src/rtl/gtcrs/gtcrs.c
  * harbour/src/rtl/gtstd/gtstd.c
  * harbour/src/rtl/gttrm/gttrm.c
  * harbour/src/rtl/gtsln/gtsln.c
  * harbour/src/rtl/gtsln/kbsln.c
  * harbour/src/rtl/gtpca/gtpca.c
  * harbour/src/rtl/gtwvt/gtwvt.c
  * harbour/contrib/gtwvg/gtwvg.c
  * harbour/contrib/gtwvg/wvggui.c
    * use hb_cdp*Disp() functions instead of old ones with fCtrl=HB_TRUE
      parameter
    * removed not longer necessary fCtrl parameter from other hb_cdp*()
      functions

  * harbour/src/codepage/uc646_yu.c
  * harbour/src/codepage/uc737.c
  * harbour/src/codepage/uc775.c
  * harbour/src/codepage/uc850.c
  * harbour/src/codepage/uc852.c
  * harbour/src/codepage/uc855.c
  * harbour/src/codepage/uc856.c
  * harbour/src/codepage/uc857.c
  * harbour/src/codepage/uc860.c
  * harbour/src/codepage/uc861.c
  * harbour/src/codepage/uc862.c
  * harbour/src/codepage/uc863.c
  * harbour/src/codepage/uc864.c
  * harbour/src/codepage/uc865.c
  * harbour/src/codepage/uc866.c
  * harbour/src/codepage/uc869.c
  * harbour/src/codepage/uc874.c
  * harbour/src/codepage/uc1006.c
  * harbour/src/codepage/uc1125.c
  * harbour/src/codepage/uc1250.c
  * harbour/src/codepage/uc1251.c
  * harbour/src/codepage/uc1252.c
  * harbour/src/codepage/uc1253.c
  * harbour/src/codepage/uc1254.c
  * harbour/src/codepage/uc1255.c
  * harbour/src/codepage/uc1256.c
  * harbour/src/codepage/uc1257.c
  * harbour/src/codepage/uc1258.c
  * harbour/src/codepage/uc8859_1.c
  * harbour/src/codepage/uc88591b.c
  * harbour/src/codepage/uc8859_2.c
  * harbour/src/codepage/uc8859_3.c
  * harbour/src/codepage/uc8859_4.c
  * harbour/src/codepage/uc8859_5.c
  * harbour/src/codepage/uc8859_6.c
  * harbour/src/codepage/uc8859_7.c
  * harbour/src/codepage/uc8859_8.c
  * harbour/src/codepage/uc8859_9.c
  * harbour/src/codepage/uc885910.c
  * harbour/src/codepage/uc885911.c
  * harbour/src/codepage/uc885913.c
  * harbour/src/codepage/uc885914.c
  * harbour/src/codepage/uc885915.c
  * harbour/src/codepage/uc885916.c
  * harbour/src/codepage/ucascii.c
  * harbour/src/codepage/ucatari.c
  * harbour/src/codepage/uckam.c
  * harbour/src/codepage/uckoi8.c
  * harbour/src/codepage/uckoi8u.c
  * harbour/src/codepage/ucmacce.c
  * harbour/src/codepage/ucmaccyr.c
  * harbour/src/codepage/ucmacgrk.c
  * harbour/src/codepage/ucmacice.c
  * harbour/src/codepage/ucmacrom.c
  * harbour/src/codepage/ucmactrk.c
  * harbour/src/codepage/ucmaz.c
  * harbour/src/codepage/ucmik.c
  * harbour/src/codepage/ucnext.c
    * removed not longer necessary unicode codes in range < 0x00 : 0x1F >
      Now it's possible to define additional characters in this range though
      I suggest to not use edit/flow control codes (BEL, BS, TAB, LF, CR,
      XON, XOFF)

  * harbour/src/codepage/uc037.c
  * harbour/src/codepage/uc424.c
  * harbour/src/codepage/uc500.c
  * harbour/src/codepage/uc875.c
  * harbour/src/codepage/uc1026.c
    * restored EBCDIC control codes
2011-04-10 10:44:45 +00:00
Przemyslaw Czerpak
3b0b908a07 2011-04-07 11:56 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/thread.c
    * cleaned comment

  * harbour/src/common/hbdate.c
    ! fixed typo in hb_dateMilliSeconds() on platforms using ftime()
      function.
2011-04-07 09:56:15 +00:00
Przemyslaw Czerpak
8f4b5fc7b9 2011-04-05 15:33 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/hvm.c
    ! fixed missing write unreferencing in my last modification
2011-04-05 13:33:12 +00:00
Przemyslaw Czerpak
01962a5f93 2011-04-05 08:41 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/hvm.c
    * extended item references created by hb_vmPushItemRef() so they
      can be used to create reference chain and detached in executed
      PRG code. Such reference chain is cleanly break when original
      reference item is removed from HVM stack.
2011-04-05 06:41:25 +00:00
Przemyslaw Czerpak
fe09f94163 2011-04-01 14:19 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/itemapi.c
    ! fixed compilation in MT mode with some C compilers using
      HB_STACK_TLS_PRELOAD
    * updated also hb_itemParamStore() function to set NIL to item passed
      by reference when is called with NULL pItem parameter.
2011-04-01 12:20:09 +00:00
Przemyslaw Czerpak
98ae698914 2011-04-01 13:56 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/itemapi.c
    * set NIL to item passed by reference when hb_itemParamStoreForward()
      or hb_itemParamStoreRelease() is called with NULL pItem parameter.

  * harbour/contrib/hbnetio/netiosrv.c
    ! fixed possible memory leak when
         NETIO_SRVSTATUS( ..., NETIO_SRVINFO_PEERADDRESS, ... )
      is called without 3-rd parameter passed by reference

  * harbour/examples/gtwvw/gtwvw.c
    * replaced repeated TONE code with hb_gt_winapi_tone()
    + added MOUSE_GETPOS() method

  * harbour/examples/gtwvw/wvwtbar.c
    ! fixed to compile with Harbour
2011-04-01 11:56:41 +00:00
Przemyslaw Czerpak
0be115f235 2011-03-29 09:55 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/thread.c
    * pacified warnings

  * harbour/src/rtl/hbrandom.c
    ! fixed typo in previous commit

  * harbour/src/rtl/hbproces.c
    * minor formatting
2011-03-29 07:55:45 +00:00
Przemyslaw Czerpak
a5fa7383a9 2011-03-27 12:45 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
  * harbour/src/rtl/hbrandom.c
    added new C functions which fills memory block with random values:
         void hb_random_block( void * data, HB_SIZE len )
    this function should be used with "good enough" random generator
    so in the future it may be changed to use internally sth different
    then rand().

  * harbour/src/vm/thread.c
    * pacified minor warning
2011-03-27 10:45:35 +00:00
Przemyslaw Czerpak
15160f3bb9 2011-03-15 17:51 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/vm/hvm.c
    ! fixed HB_STACK_TLS_PRELOAD after recent modification
2011-03-15 16:51:48 +00:00