Commit Graph

193 Commits

Author SHA1 Message Date
Viktor Szakats
bbc434f9a2 2009-07-22 17:51 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* make_gnu.bat
    ! Added SHLVL=0 to make commands to force native shell
      even if sh shell is found in the PATH (f.e. when msys or
      cygwin is present there, for mingwarm targets, cygwin is
      even required.)

  * external/libhpdf/Makefile
    + Made it compile with mingwarm.

  * include/hbextern.ch
    ! Fixed typo in prev.

  * contrib/hbssl/pem.c
    + Added two new functions. Under testing.
      PEM_READ_BIO_RSAPRIVATEKEY()
      PEM_READ_BIO_RSAPUBLICKEY()
2009-07-22 15:52:10 +00:00
Viktor Szakats
40a7012cb7 2009-07-22 15:48 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* bin/hb-func.sh
  * include/hbextern.ch
  * contrib/Makefile
  * source/rtl/Makefile
  + source/rtl/sha1.c
  + source/rtl/sha1.h
  + source/rtl/hbsha1hm.c
  + source/rtl/sha2.c
  + source/rtl/sha2.h
  + source/rtl/hbsha2hm.c
  + source/rtl/sha1hmac.c
  + source/rtl/sha1hmac.h
  + source/rtl/hbsha1.c
  + source/rtl/sha2hmac.c
  + source/rtl/sha2hmac.h
  + source/rtl/hbsha2.c
  + tests/testsha1.prg
  + tests/testsha2.prg
    * hbcrypt contrib library merged into the core.
2009-07-22 13:53:21 +00:00
Viktor Szakats
a647e930c6 2009-07-19 19:40 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* contrib/hbssl/Makefile
  + contrib/hbssl/sslerr.c
  + contrib/hbssl/sslx509.c
  * contrib/hbssl/ssl.c
  * contrib/hbssl/sslctx.c
  * contrib/hbssl/hbssl.ch
  * contrib/hbssl/tests/test.prg
    + Added ERR_*() API functions.
    + Prefixed .ch contant names with HB_ to avoid collision with
      ssl own headers.
    + Added SSL_CTX_SET_MODE(), SSL_CTX_GET_MODE() functions.
    + Added HB_SSL_READ_ALL(), HB_SSL_READ_LINE() functions meaning
      to mimic HB_INETRECVALL() and HB_INETRECVLINE(). (probably needs
      more work, it'd be great if someone who understands the guts of
      these inet functions could take a look)
    * SSL_PEEK() synced with SSL_READ() recent changes.
    + Added SSL_SET_MODE(), SSL_GET_MODE(), SSL_SET_MTU() functions.
    + Added SSL_GET_RBIO(), SSL_GET_WBIO() functions.
    + Added SSL_GET_PEER_CERTIFICATE() function.
    + Added X509_GET_SUBJECT_NAME(), X509_GET_ISSUER_NAME(), X509_NAME_ONELINE()
    + Added HB_SSL_MODE_* constants.

  * include/hbextern.ch
    * Changed to use new hbextlng.ch.

  - examples/hbextern/hbextern.lst
    ! It wasn't deleted in 2009-07-18 21:37 UTC+0600 for some reason.

  * source/rtl/console.c
    ! Fixed OUTSTD() and OUTERR() to output separator space
      to std/err instead of alt.

  * source/rtl/hbinet.c
    % Minor optimization.
2009-07-19 17:42:06 +00:00
Przemyslaw Czerpak
1688862f1e 2009-07-18 02:59 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbextern.ch
    + added HB_ZERROR
2009-07-18 00:59:23 +00:00
Viktor Szakats
43cd4d5102 2009-07-16 10:31 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* include/hbextern.ch
  * source/lang/Makefile
  + source/lang/msguados.c
    + Added Ukrainian language module for cp1125.
      (borrowed from xhb, work of Pavel Tsarenko.)
      I've made a few corrections compared to xhb:
      - Using the same internal name as filename for
        consistency with other language modules
        (UADOS instead of UA1125).
      - Fixed date format which must only contain YYYY, MM, DD
        regardless of the CP/language used, since it's a picture mask.
      - Formatting (semicolon, spaces, deleted embedded $Id$ not
        needed with SVN)
      - Added to hbextern.ch.

  * source/lang/msguakoi.c
  * source/lang/msgua866.c
    * Two corrections to internal name.
      (borrowed from xhb, work of Pavel Tsarenko.)
    ; QUESTION: I wonder why the texts are very much different in
                Harbour and xhb. Someone familiar with Ukrainian
                language and encodings should check this, only one
                of them can be right and all CPs should be synced 
                with each other the only thing being different is 
                the encoding.

  * source/codepage/msguakoi.c
    ! Fixed one letter.

  * source/codepage/cpuawin.c
  * source/codepage/cpua1125.c
  * source/codepage/cpua866.c
  * source/codepage/cpuakoi.c
    * Added "CYRILLIC LETTER GHE WITH UPTURN" letter.
      (borrowed from xhb, work of Pavel Tsarenko.)
2009-07-16 08:49:33 +00:00
Viktor Szakats
22eba88dc3 2009-07-15 20:00 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* include/Makefile
  + include/hbextcdp.ch
  * include/hbextern.ch
  * utils/hbmk2/hbmk2.prg
    + Separated EXTERNAL HB_CODEPAGE_* lines to hbextcdp.ch.
      These are commonly needed by apps.
    * Using hbextcdp.ch in hbmk2.
    ; TODO: hbextern app needs to be updated to filter out 
            CODEPAGE symbols.
2009-07-15 18:01:41 +00:00
Viktor Szakats
61962be0dd 2009-07-14 12:15 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* source/vm/extend.c
    ! Fixed hb_parvcx() to return "" instead of NULL when dealing
      with array parameters out of bound or non-string.
      (Borrowed from xhb by Ron Pinkas. Although the fix is
      implemented differently in Harbour)

  * source/rtl/gttrm/Makefile
    * CFLAGS -> HB_USER_CFLAGS

  * include/hbapicdp.h
  * include/hbextern.ch
  * source/lang/Makefile
  * source/codepage/Makefile
  + source/codepage/cpua1125.c
  + source/codepage/uc1125.c
    + Added DOS Ukrainian 1125 codepage
      (Borrowed from xhb. Work of Pavel Tsarenko)

  * utils/hbmk2/hbmk2.prg
    * OS/2 embedded compiler autodetection order fixed.
2009-07-14 10:16:48 +00:00
Viktor Szakats
5da96d8c2a 2009-07-10 21:21 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* include/hbextern.ch
    + Added HB_SETCLSHANDLE().

  * source/vm/evalhb.c
  * source/vm/eval.c
  * source/vm/dynlibhb.c
    ! Fixed old int <-> USHORT conversion MSVC warnings.
    ; TOFIX: ? There is a disagreement between different APIs
               and Harbour program parts on the size and type of
               number of parameters, it can be int, USHORT, ULONG,
               and in some places there is also BYTE limit.

  * source/common/hbver.c
    * Minor formatting.
2009-07-10 19:21:40 +00:00
Viktor Szakats
9ba5e3e952 2009-07-09 14:58 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* include/hbextern.ch
  * source/rtl/Makefile
  + source/rtl/base64c.c
  + source/rtl/base64.prg
    + Added HB_BASE64ENCODE(), HB_BASE64DECODE() to core.
      They were copied from hbtip and hbvpdf and currently
      the decoder is .prg code while encoding is .c code.
      Latter has one TOFIX for an error situation.

  * contrib/hbtip/encurl.prg
  * contrib/hbtip/thtml.prg
  * contrib/hbtip/sessid.prg
  * contrib/hbtip/popcln.prg
  * contrib/hbtip/sendmail.prg
  * contrib/hbtip/tip.ch
  * contrib/hbtip/cgi.prg
  * contrib/hbtip/url.prg
  * contrib/hbtip/encqp.prg
  * contrib/hbtip/base64x.c
  * contrib/hbtip/httpcln.prg
  * contrib/hbtip/client.prg
  * contrib/hbtip/encoder.prg
  * contrib/hbtip/smtpcln.prg
  * contrib/hbtip/encb64.prg
  * contrib/hbtip/mail.prg
  * contrib/hbtip/credent.prg
  * contrib/hbtip/ftpcln.prg
    + Added TOFIXes, QUESTIONs
    ! Fixed to use hb_MemoRead() instead of MemoRead() in one place.
    ! Fixed a wrong error checks after FCreate() calls.
    ! Fixed to use Len( hb_inetCRLF ) instead of hardwired length.
    ! Using hb_ntos() instead of Str() in POP3 commands.
    * Changed explicit values to manifest constants (F_ERROR)
    * Changed high ASCII chars in source to Chr() representation,
      now source can be edited with any editor.
    ! Added missing copyright header to tip.ch. Although this header
      seems to be unnecessary.
    ! TipMail:MakeBoundary() to not add any date punctuations in the ID.
    ! Fixed tIPClientFTP:fileSize() to not return permantent zero.
    % Heavier optimizations and cleanup in TIpClientSmtp().
    % Optimizations.
    * Formatting.
    ; Please test.
2009-07-09 13:03:59 +00:00
Viktor Szakats
b4317f84bf 2009-07-08 11:07 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* contrib/xhb/xhbat.c
  * contrib/hbtip/utils.c
    * Moved ATI() function to xhb lib.
      ATI() is different from HB_ATI() since it doesn't support
      national chars, but it supports negative start/end values in
      xhb style.

  * contrib/hbtip/thtml.prg
    * Changed to use core HB_ATI() instead of xhb specific ATI().
      To me it looks that negative positions aren't used by hbtip code,
      also respect for national chars is fine, so this replacement is okay.
      Please review me and correct it if needed.

  * contrib/xhb/xhbfunc.c
  * contrib/hbtip/legacy.prg
    * Moved HB_EXEC() to xhb lib. Restored the C version.

  * contrib/hbtip/Makefile
  - contrib/hbtip/legacy.prg
    - Deleted. No longer necessary.

  * include/hbextern.ch
  * source/rtl/Makefile
  + source/rtl/ati.c
    + Added HB_ATI() function. This is the same as HB_AT(), but
      case-insensitive. It supports national chars.
2009-07-08 09:07:51 +00:00
Viktor Szakats
eb6298aa30 2009-07-07 01:31 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* bin/postinst.bat
  * bin/hb-func.sh
    + Added libpath= lines to generated hbmk2.cfg files.
    - Deleted arch=/comp= lines from generated hbmk.cfg files.

  * include/hbextern.ch
    + Added HB_PROCESSRUN().

  * contrib/hbtip/client.prg
    % Minor optimizations.
    * Formatting.

  * utils/hbmk2/hbmk2.prg
    % Changed to use hb_processRun() natively.
    ! Fixed doubly added resource stub when -icon is used.

  * source/rtl/hbproces.c
    * Really minor formatting.

  * source/rtl/hbprocfn.c
    ! Fixed to free memory of hb_storlen_buffer() returns failure.
    % Minor optimization: hb_storclen( "", 0, ... ) -> hb_storc( NULL, ... )
2009-07-06 23:32:38 +00:00
Mindaugas Kavaliauskas
22fbdfa45e 2009-06-30 18:10 UTC+0300 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt)
* harbour/contrib/rddsql/sddmy/mysqldd.c
    + added support for MySQL TIMESTAMP, DATETIME and TIME types. These
      types are mapped to @,8 and T,4 field types, and native harbour 
      timestamp type.

  * harbour/include/hbextern.ch
    + added a dozen of Harbour functions
    ; NOTE: about 120 functions are still not included into this .ch:
      SX_*(), USRRDD_*(), __DBG*(), __CLS*(), HB_COMPILE*(), etc.
2009-06-30 15:16:46 +00:00
Viktor Szakats
a48321cf39 2009-06-18 00:52 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* include/hbextern.ch
  * source/rtl/mousehb.c
  * source/rdd/rddinfo.c
  * source/rdd/dbdrop.c
  * source/rdd/dbexists.c
  * source/rdd/fieldhb.c
    * Rest of similar to STOD() status functions also 
      protected with ! HB_C52_STRICT.
2009-06-17 22:52:52 +00:00
Viktor Szakats
41b7534251 2009-06-18 00:33 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* include/hbextern.ch
  * source/rtl/datesx.c
    * STOD() function not protected by HB_COMPAT_XPP anymore.
      Instead it's turned off only in HB_C52_STRICT mode.

  + contrib/xpp/xppextrn.ch
    + Added.

  * contrib/hbwin/win_misc.c
    + Added WIN_HIWORD() and WIN_LOWORD() functions (from GTWVG).
      But commented because of colliding names.
2009-06-17 22:34:21 +00:00
Viktor Szakats
a3805daf7e 2009-06-16 18:39 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* include/hbextern.ch
    + Added HB_WAEVAL().

  * contrib/hbwin/win_prn1.c
    - Direct procedural Windows printing interface will now only
      accept real pointers.
    * WIN_CREATEDC() will now return null pointer instead of NIL.
      The safest way to check for success is: 'IF ! Empty( win_CreateDC() )'
    ; With this, only some DLL related functions remain which
      still use numeric pointers
2009-06-16 16:39:43 +00:00
Viktor Szakats
4dbccf8ead 2009-06-16 08:50 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* include/hbextern.ch
  * source/vm/thread.c
  * examples/uhttpd2/umain.prg
    * Replaced HB_MUTEXWAITERSCOUNT() with 
      HB_MUTEXQUEUEINFO( hMutex, [ @nWaitersCount ], [ @nQueueLength ] )
    ; Please review.
2009-06-16 06:51:12 +00:00
Viktor Szakats
c73804dc7a 2009-06-15 20:44 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* include/hbextern.ch
  * source/vm/thread.c
    + Added HB_MUTEXWAITERSCOUNT() to core.
      (slightly rewritten using local functions)

  - examples/uhttpd2/umutex.c
    - No longer needed.
2009-06-15 18:45:17 +00:00
Viktor Szakats
8cff1ae469 2009-06-14 10:37 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* include/hbextern.ch
  * source/vm/hashfunc.c
    + Added HB_HGETDEF( <hHash>, <xKey>[, <xDefault> ] ) -> <value>
      This function will return <xDefault> when <xKey> isn't 
      found in the hash table. If <xDefault> isn't passed, it 
      will return NIL.
2009-06-14 08:38:37 +00:00
Viktor Szakats
2b5d2600aa 2009-06-06 16:07 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* INSTALL
    * Made clear that GNU Make installation isn't needed for mingw
      targets.

  * include/hbextern.ch
    + Added HB_EXECMSG().

  * contrib/xhb/tests/xhb.hbc
    + Added hbct, hbtip and hbwin (on Windows) to emulate xhb, which
      has these libs as part of the core.

  * utils/hbmk2/hbmk2.prg
    + Environment variables can not be used as filters.
      If an envvar with the name of the filter exists and it's
      value isn't "0" or "no", it's considered a match.
    - Deleted -EHsc-/-EHsc/-EHs-c- switch variant from msvc C flag list.
      This was copied from Harbour Make files, and most probably they
      aren't necessary even there, especially since they are set
      inconsistently (differently) for depending on msvc compiler
      version and win/wce target. These flags deal with exception
      handling, so I doubt any core code (with the exception of hbqt)
      would need it.
    + Added some level of internal support for build modes
      (release, debug, fulldebug) and unicode/ascii selection. Added
      to TODO anyway, will continue with them in the future.
2009-06-06 14:07:51 +00:00
Viktor Szakats
3cef50334b 2009-06-03 08:17 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
  * source/rtl/idlex.c
    * Renamed XPP compatible SLEEP() function to XPP_SLEEP() to
      avoid collision with FlagShip and CLIP implementations.

  * contrib/hbwin/wapi_winbase.c
    + Added WAPI_SLEEP() function as a wrapper to Windows Sleep()
      function.
2009-06-03 06:21:00 +00:00
Viktor Szakats
325e4bc4db 2009-06-02 21:03 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
  * source/rtl/Makefile
  + source/rtl/idlex.c
    + Added Xbase++ compatible SLEEP() function.
2009-06-02 19:04:05 +00:00
Viktor Szakats
622639c23c 2009-05-15 09:21 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* utils/hbmk2/hbmk2.prg
    + Using HB_USERLANG() to detect language, so it now also
      works on Windows.
    + Added support for -lang= switch to override language.
    + Added support for HB_LANG envvar to override language.
      (this is the recommended method)

  * include/hbextern.ch
  * source/rtl/Makefile
  + source/rtl/lang.c
    + Added HB_USERLANG() function to retrieve ietf code of
      language set by user. Works also on Windows.

  * contrib/hbwin/win_misc.c
  * contrib/hbwin/wapi_winbase.c
  * contrib/hbwin/wapi_winuser.c
    * WAPI_*() functions moved to wapi_* files.
    + WAPI_GETPROCADDRESS() added. This is a pure wrapper to
      this Windows API.

  * contrib/hbwin/win_prn1.c
  * contrib/hbwin/win_prt.c
    % hb_parnl() -> hb_parni() where it was cast to int anyway.
2009-05-15 07:40:39 +00:00
Viktor Szakats
8959f99f45 2009-05-14 02:28 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
  * source/rtl/Makefile
  + source/rtl/tgethb.prg
  * source/rtl/tget.prg
    + HB_EXTENSION functionality (:hideInput() and :style()) moved
      from GET to a new derived class called HB_GET(). It means
      this functionality is available in default builds.
      Further extensions can be added to this class.
2009-05-14 00:31:36 +00:00
Viktor Szakats
196768b461 2009-05-14 02:00 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
  * contrib/xhb/hbcompat.ch
  * source/rtl/setkey.c
    + Added HB_SETKEY() which is similar to SETKEY() but contains
      3rd parameter extension. Now this functionality is available
      for default Harbour builds under this new function name.
    + Added cross mappings for xhb SETKEY().

  * source/rtl/setfunc.prg
    + F11/F12 key handling now protected with HB_C52_STRICT instead
      of HB_EXTENSION so it will available in default builds.
    - Other HB_EXTENSION protected feature deleted (allowing to
      assign non-string key sequences to F keys. This effect can
      easily be achieved with direct SETKEY() calls, so it wasn't
      an essential extension here.

  * source/rtl/hbffind.c
    + Internal HB_EXTENSION protected part enabled.
    - Deleted HB_EXTENSION dealing with Windows-specific attribute
      chars. Those needing this functionality can access it using
      C level API.

  * source/rtl/tpopup.prg
  * source/rtl/ttopbar.prg
    - Deleted minor (non Clipper-compatible) behaviour change
      in handling disabled menu items when HB_EXTENSION
      is enabled.

  ; Only remains few class extensions covered by HB_EXTENSION.
    Overall there is no reason anymore to use this macro.
    TODO: Solve these using inheritance.
2009-05-14 00:15:22 +00:00
Viktor Szakats
339c86f1bc 2009-05-12 16:10 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* utils/hbmk2/hbmk2.prg
    + Added -hbrun option which will run the target without trying to
      build it. If target is missing, the command will fail.
    + -run/-hbrun options will now run GUI target executable using 'start'
      command on Windows platforms so that hbmk2 will return and leave
      the app running.

  * include/hbextern.ch
    + Added HB_GZPUTC().

  * include/hbsetup.ch
    - Removed HB_EXTENSION from documented list of build modified macros.

  * source/common/hbverdsp.c
    - Deleted HB_EXTENSION dependent part.

  * source/rtl/mlcfunc.c
    - Deleted HB_EXTENSION branch. Please modify your program to
      use Set( _SET_EOL ) instead of passing EOLs explicitly to
      memo functions. This works also in xhb.
      INCOMPATIBLE when for HB_EXTENSION builds.

  * source/rtl/alert.prg
    ! Minor in comment.

  * source/rtl/saverest.c
    - Removed SAVESCREEN()/RESTSCREEN() extra "lNoCheck" parameter
      when HB_EXTENSION is enabled. Please report on the list
      if you need this functionality.

  * source/compiler/hbfunchk.c
    ! Fix to prev: AT() declaration.

  ; TODO: Clean rest of HB_EXTENSION stuff.
2009-05-12 14:11:21 +00:00
Viktor Szakats
301c1c5f98 2009-05-12 10:37 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/xhb/hbcompat.ch
    + Added HB_GETENV() <-> GETENV() conversions.
    + Added MEMOWRIT() translation for xhb sources.

  * source/rtl/at.c
  * source/rtl/gete.c
  * source/rtl/memofile.c
    - Deleted HB_EXTENSION branches. Users of extended
      GETENV(), GETE(), AT() and MEMOWRIT() functionality
      will have to use hbcompat.ch to stay compatible with xhb
      (this isn't needed for MEMOWRIT()).
      INCOMPATIBLE change for those who enabled HB_EXTENSION
      in Harbour. Hopefully xhb will implement HB_AT() and
      HB_GETENV() in the future so hbcompat.ch will become
      unnecessary.

   * include/hbextern.ch
   + source/rtl/radiobhb.prg
   * source/rtl/radiobtn.prg
     * RADIOBUTTON() Harbour extension moved to a separate file
       to cause no harm for programs defining this function locally.
       At the same time, HB_EXTENSION protection got removed so
       it can be accessed in default builds as a RADIOBUTTO() 
       alternative.
2009-05-12 08:44:03 +00:00
Viktor Szakats
52e2e002e5 2009-05-12 09:25 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* doc/cmdline.txt
  * doc/howtosvn.txt
    + Added CC copyright.

  * source/rtl/alert.prg
  * include/hbextern.ch
    + HB_ALERT(). Now this function holds all extended features:
      nDelay support and any type for first parameter.
    * ALERT() now behaves completely along Clipper version, without
      extensions. HB_EXTENSION no longer modifies its behaviour, so
      if someone needs these extended features, there is no need to
      build with HB_EXTENSION, only ALERT() calls have to be
      converted to HB_ALERT(). INCOMPATIBLE (in some scenarios).

  * contrib/hbtip/utils.c
    % TIP_TIMESTAMP() code cleaned to remove redundancy of
      having two full distinct copies of this function. Now
      platform independent parts are kept common.
    ! TIP_TIMESTAMP() fixed hb_parl() to hb_parnl() for 'hours'
      parameter. I wonder how this bug wasn't noticed till now.
      Please someone test, maybe I'm missing the point of this
      parameter, but it's unlikely the intent was a logical value
      as it's later converted to timestamp.

  * contrib/hbtip/thtml.prg
  * contrib/hbtip/sendmail.prg
  * contrib/hbtip/httpcln.prg
  * contrib/hbtip/ftpcln.prg
    * END -> END*
    * Minor formatting.

  * contrib/hbtip/base64x.c
  * contrib/hbtip/smtpcln.prg
    * Formatted.
    * Minor optimizations (File() -> hb_FileExists(), ::AuthPlain()
      simplification).
    % BUILDUSERPASSSTRING() rewritten in Harbour. It's a very
      simple function.
2009-05-12 07:32:45 +00:00
Viktor Szakats
95673458f2 2009-04-13 10:49 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* tests/speedtst.prg
    ! Fixed missing hb_progname() for non-Harbour compilers.

  * include/hbextern.ch
    + Added time related new functions.

  * utils/hbmk2/hbmk2.prg
    + Added -runflag: option to pass flags to target executable.
    + Started -inc (incremental link) support. It's very early
      stage, don't expect it to work yet and please don't report
      any problems with this feature yet.

  * source/vm/asort.c
    ! Fixed to return Clipper compatible results when non-logical
      non-numeric value is returned from ASORT() codeblock.

  * utils/hbtest/rt_array.prg
    * Cleaned ASORT() tests when sorting block returns constant value.
      Now Clipper results aren't bent anymore, instead I've added
      different expected results for Harbour and Clipper. The
      difference is due to different sorting algorithms used,
      here the point is to get similar *pattern* for different
      invalid values.

  * source/rtl/philes.c
    % HB_FGETDATETIME(): Removed double call to hb_stortdt().

  * contrib/hbqt/tests/hbqt.hbp
    * Removed extra line at EOL.

  * contrib/gtqtc/tests/hbqt.hbp
    ! Removed environment dependent 'libspath=' line.
      Please don't add such path to Harbour SVN, since these
      can differ from system to system and is also non-portable.
      The correct name of the directive is: 'libpaths='.

  * contrib/gtqtc/Makefile
    % Removed double SVN ID.
      This file needs to be updated according to hbqt latest
      Makefile portability changes.

  * contrib/rddads/ads1.c
    * Minor formatting.
2009-04-13 08:53:53 +00:00
Viktor Szakats
ccab51d63e 2009-03-05 21:05 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
    + Added HB_SETENV()

  * utils/hbmk2/hbmk2.prg
    * Minor cleanups.

  * contrib/examples/uhttpd/uhttpd.hbm
    - Removed -n. It's now automatic.
    ; TODO: Remove the rest.

  * INSTALL
  * doc/man/hbmk.1
  + config/win/icc.cf
  * utils/hbmk2/hbmk2.prg
    + Added Intel(R) C++ compiler support for Windows.
    + Added initial support also in hbmk2.
    ; This compile is actively developed and its famous of
      generating the fastest running code of all C compilers.
      It also outputs an extremely detailed warning list.
      And the best thing: It compiled Harbour without a single
      hitch. hbtest is also running fine. hbmk2 is able to
      create executables.
2009-03-05 20:12:47 +00:00
Viktor Szakats
9f2c4df193 2009-03-02 09:36 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* source/rtl/Makefile
  * include/hbextern.ch
  + source/rtl/hbstrfmt.c
    + Added HB_STRFORMAT() sprintf()-like formatting.
    + Added hb_StrFormat() C level function.
    ; Work of Mindaugas sent to the list, with some minor 
      cleanups applied. Please test on your platform/compiler.

  * contrib/examples/uhttpd/uhttpd.prg
  * contrib/examples/uhttpd/cgifunc.prg
  * contrib/examples/uhttpd/session.prg
  * contrib/examples/uhttpd/uhttpd.hbm
    * xhb compatibility cleanups.
    - xhb lib and header dependency removed.

  * utils/hbmk2/hbmk2.prg
    * Changed so that libs won't inherit their .hbm file paths.
    + Embedded .hbm files will inherit their parents dir.
2009-03-02 08:36:55 +00:00
Viktor Szakats
4710155eb2 2009-02-18 12:20 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
  * common.mak
  * source/rtl/Makefile
  * source/rtl/mouse53.c
    + Added HB_MMIDDLEDOWN() functions, plus MMIDDLEDOWN() alias.
      These are always available regardless of the CLIP53
      compatibility setting.

    ; TOFIX: K_MM*DOWN events _override_ C5.3 compatible
             K_MOUSEMOVE events (in GTWVT only), which created
             an unfortunate incompatibility with our target
             C5.x compiler when using some specific GT. Ideas 
             are welcome how to fix this. We should probably
             either send out both codes and let the inkey queue
             do the filtering as requested by app (we need a
             new filter then), or remove these event code and 
             generate proper K_MOUSEMOVE events instead. Apps
             using this these incompatible keycodes are encouraged 
             to replace expressions:
             '( key == K_KK*DOWN )' with the compatible:
             '( key == K_MOUSEMOVE .AND. M*DOWN() )' to prepare
             for the fix.
2009-02-18 11:26:39 +00:00
Viktor Szakats
d7b31254de 2009-02-16 18:30 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
    + Added HB_DBCREATETEMP()

  * harbour/source/rdd/dbcmd.c
    * Renamed to HB_DBCREATETEMP().
2009-02-16 17:31:37 +00:00
Mindaugas Kavaliauskas
fb7b5e9659 2009-02-11 19:30 UTC+0200 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt)
* harbour/include/hbextern.ch
  * harbour/source/rtl/philes.c
    + added HB_FGETDATETIME(). A "brother" of function HB_FGETDATETIME().
    ; TODO: BTW, hb_fs*() functions can get a better precision 
      (milliseconds). It would be nice to support it also at .prg level.
2009-02-11 17:28:45 +00:00
Viktor Szakats
5725adf803 2009-02-10 02:04 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* doc/whatsnew.txt
  * include/hbextern.ch
  * source/vm/runner.c
  * source/rdd/dbcmd.c
    * __HRB*() functions marked as HB_LEGACY_LEVEL2 compatibility,
      please update your code to use HB_HRB*().
    * __RDDGETTEMPALIAS() marked as HB_LEGACY_LEVEL2 compatibility,
      please update your code to use HB_RDDGETTEMPALIAS().
    ; I've permanently remove these symbols from hbextern.ch, so 
      regardless of the legacy setting, hbrun won't have them 
      anymore. This is merely technical, as it would need some 
      hacks in the make system to push through HB_LEGACY_OFF 
      to pptable.c generation. If someone wants to deal with 
      this, even better.

  * include/hbstdgen.ch
    * Added #undef __FILE__.

  * include/hbsetup.ch
    * Minor.
2009-02-10 01:27:54 +00:00
Viktor Szakats
ad83c96712 2009-02-07 01:21 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* include/hbapifs.h
  * include/hbextern.ch
  * source/rtl/fstemp.c
  * source/rtl/filebuf.c
    + Added hb_fsCreateTempEx(). Similar to hb_fsCreateTemp(),
      but allows to control the extension. Note, that the
      ordering of parameters ha slightly changed compared to
      hb_fsCreateTemp().
    + Added hb_fileCreateTempEx(). See above.
    + Added Harbour level HB_FTEMPCREATEEX(). See above.
    ; Please review & test.
2009-02-07 00:22:40 +00:00
Viktor Szakats
c60db4b7aa 2009-02-04 23:13 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* source/rtl/tget.prg
  * source/rtl/tgetx.prg
  * source/rtl/tbcolumn.prg
  * source/rtl/tbrowse.prg
    * Reset internal name of GET(), TBROWSE(), TBCOLUMN(),
      because even if Clipper doesn't have such public
      symbols, Class(y) has them, and we want to maintain
      compatibility.

  * include/hbextern.ch
    + Added GET, TBROWSE, TBCOLUMN.
2009-02-04 22:14:46 +00:00
Viktor Szakats
e8777b2dfd 2009-02-04 19:20 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
   * source/rtl/tbcolumn.prg
   * source/rtl/tbrowse.prg
   * source/rtl/tget.prg
   * source/rtl/tgetx.prg
     ! Using new method to solve the GET()/TBROWSE()/TBCOLUMN()
       symbol problem (these aren't public symbols in Clipper).
       The method used is the one already implemented for other
       C53 CUI classes.
       This allows inheritance, doesn't mess up the class name,
       and won't declare above public symbols.
     * Moved Xbase++ compatible GET()/TBROWSE()/TBCOLUMN()
       functionality into separate classes, all inheriting from
       original Harbour classes. This means that Xbase++
       compatible methods are only accessible when using the
       derived classes. The separation will allow us to
       move XPP (and other HB_COMPAT_*) compatible functionality
       into a separate libraries in the future, allowing more
       freedom to resolve clashing features, symbol names, etc..
     * Xbase++ compatible classes are named: xpp_Get(),
       xpp_TBrowse(), xpp_TBColumn(). This is a slight
       incompatibility compared to Xbase++ and also to
       previous Harbour. Technically it seems possible
       to give them the names GET()/TBROWSE()/TBCOLUMN(), if
       the class is defined in a different file, but let's first 
       discuss it.

   * source/rtl/tgetint.prg
     * Using GetNew() instead of Get():New().

     ; Finally I didn't use '( ... )' to pass parameters in GetNew(),
       as it's a tiny bit less efficient with -gc3.

   * include/hbusrrdd.ch
   * include/hbapi.h
     + Comment.
2009-02-04 18:21:23 +00:00
Viktor Szakats
8181b8c258 2009-02-04 14:42 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
  * common.mak
  * source/rtl/Makefile
  + source/rtl/tgetx.prg
  * source/rtl/tget.prg
  * source/rtl/tgetint.prg
    + CA-Cl*pper compatible GET class renamed to HBGet and
      is now always available regardless of feature settings.
    * Xbase++ compatible GET class named Get(), moved to separate
      file and now inherits from HBGet, plus implements
      additional functionality also in the separate file.
    * GetNew() moved to tget.prg from tgetint.prg.
    * Code changed to use HBGet():New() instead of Get():New().
    ; TOFIX: After above changes, Xbase++ compatiblity
             methods are no longer available for regular
             GETs, only if they are explicitly created
             using Get():New(). If this is a problem for someone
             we can start thinking of a solution.
    ; TODO: Do the same with TBrowse() and TColumn().
2009-02-04 13:45:09 +00:00
Viktor Szakats
cffcac1c84 2009-01-26 17:10 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* common.mak
   * include/hbextern.ch
   * source/rtl/Makefile
   + source/rtl/strxor.c
     + Added HB_STRXOR() (work of Mindaugas Kavaliauskas)

   * common.mak
   * source/common/Makefile
   + source/common/hbprintf.c
     + Added hb_snprintf_c() (temp name, untested) (work of Przemyslaw Czerpak)
       [ I've added a normal Harbour license, as per your permission
       on the list. Pls give me feedback is this is wrong. ]

   * source/rdd/usrrdd/example/exlog.prg
     ! Fixed missing #includes.

   * source/rdd/usrrdd/example/hbmk_b32.bat
   + source/rdd/usrrdd/example/hbmk_vc.bat
     + Added MSVC make file.
     ! Added EOL to the last line to hbmk_b32.bat.
     ! xhb.lib dependency removed. It was not needed anyway.
     ; TOFIX: When compiling exhsx.prg, this happens:
              exhsx.obj : error LNK2001: unresolved external symbol _HB_FUN_HSXRDD

   * contrib/hbssl/sslsess.c
   * contrib/hbssl/sslctx.c
   * contrib/hbssl/sslciph.c
     * Minor changes.
2009-01-26 16:13:57 +00:00
Przemyslaw Czerpak
93fab23315 2009-01-21 17:52 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/common.mak
  * harbour/source/rtl/Makefile
  - harbour/source/rtl/hbi18n.c
  + harbour/source/rtl/hbi18n1.c
    * renamed hbi18n.c to hbi18n1.c to avoid conflicts with hbi18n
      program - non GNU make files needs unique file names
    ! fixed bug in internal function __I18N_HASHTABLE()

  * harbour/common.mak
  * harbour/source/rtl/Makefile
  + harbour/source/rtl/hbi18n2.prg
    + added new I18N functions to manage .pot files and generate .hbl ones.
      public functions:
      HB_I18N_loadPot( <cFile>, [<pI18N>] [, @<cErrorMsg>] ) -> <pI18N> | NIL
         Reads .pot file and returns Harbour translation set or NIL when
         error appears. In such case <cErrorMsg> is contains error message
         string. If second parameter [<pI18N>] is given then translation
         items read from .pot file are added to this set. Otherwise new
         Harbour translation set is created.
      HB_I18N_savePot( <cFile>, <pI18N> [, @<cErrorMsg>] ) -> <lSuccess>
         Generates .pot file from Harbour translation set. Please note
         that Harbour translation set does not contain additional
         information which exists in original .pot files like source
         code numbers or alternative plural forms.
      internal functions for Harbour developers which will work on I18N
      tools:
      __I18N_potArrayLoad( <cFile> [, @<cErrorMsg>] ) -> <aTrans> | NIL
         Reads .pot file and returns array with translation items or
         NIL when error appears. In such case <cErrorMsg> is contains
         error message string.
         <aTrans> is an array with translation items containing additional
         informations from .pot file which are not necessary in final
         translation sets used at runtime. It's designed for I18N tools
         written in Harbour to manage .pot files and/or create .hbl ones.
      __I18N_potArraySave( <cFile>, <aTrans> [, @<cErrorMsg>] ) -> <lSuccess>
         Generates .pot file from array with translations items.
      __I18N_potArrayJoin( <aTrans>, <aTrans2> ) -> <aTrans>
         Join two arrays with translation items. Items from <aTrans2>
         are added to <aTrans>. If given translation item already exists
         in <aTrans> (the same msgctxt and msgid) then source code references
         are merged and translations from <aTrans2> are added only if
         <aTrans> does not have it.
      __I18N_potArrayToHash( <aTrans>, [<lEmpty>] [, <hI18N>] ) -> <hI18N>
         Converts array with translation items to hash table in the format
         used internally by Harbour translation sets. It's the same format
         as used __I18N_hashTable() function. The conversion removes data
         which is not necessary for runtime translations like source code
         references or alternative source plural forms.
         If second parameter <hI18N> is given then translation items form
         <aTrans> are added to it. Otherwise new hash table with is created.
         If <lEmpty> is .T. then also items with empty translation are added
         but source strings are used instead of missing destination ones.

  * harbour/include/hbextern.ch
    + added new I18N functions

  * harbour/harbour-win-spec
  * harbour/harbour-wce-spec
  * harbour/harbour.spec
  * harbour/mpkg_tgz.sh
  * harbour/make_b32.mak
  * harbour/make_vc.mak
  * harbour/make_gcc.mak
  * harbour/common.mak
  * harbour/utils/Makefile
  + harbour/utils/hbi18n
  + harbour/utils/hbi18n/hbi18n.prg
  + harbour/utils/hbi18n/Makefile
    + added very simple application to manage .pot/.hbl files
      Syntax: hbi18n -m | -g [-o<outfile>] [-e] [-q] <files1[.pot] ...>
         -m             merge given .pot files
         -g             generate .hbl file from given .pot files
         -o<outfile>    output file name
                        default is first .pot file name with
                        .po_ (merge) or .hbl extension
         -e             do not strip empty translation rules from .hbl files
         -q             quiet mode

      TODO: extend it and add support for interactive mode which will
            allow to edit translations.
2009-01-21 16:49:03 +00:00
Viktor Szakats
d5b2619490 2009-01-21 10:43 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
    + Added new .prg functions.
2009-01-21 09:43:16 +00:00
Viktor Szakats
1e62fb550e 2009-01-14 16:15 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* source/rtl/net.c
  * contrib/hbziparc/hbziparc.prg
  * contrib/hbct/files.c
    * Minor formatting.

  * source/rtl/gtxwc/gtxwc.c
    ! Fix to recent fix. An '!' was missing, Przemek pls check me.

  * source/rtl/philes.c
    + HB_PROGNAME() now returns absolute path in *NIX systems, too.
      (please test and refine)

  * source/lang/msgca.c
    ! Fixes from xhb.

  * contrib/hbziparc/hbziparc.prg
    * Minor correction ( = -> := )

  * source/rtl/gtwin/gtwin.c
    + Added HB_GTI_CODEPAGE support.
      As per MS docs, this works only when non-raster font is used
      in the console window. Notice that the accepted CP values are
      different from the GTWVT ones (GTWIN being the more "logical"
      one, since it's a newer API). Currently, Harbour doesn't try
      to hide these interface details.
    ; TODO: UNICODE and BOX char support for GTWIN mode.

  * source/rtl/tbrowse.prg
    * Using HB_DISPOUTATBOX() to draw column/header/footer separators.
    ; NOTE: This may cause problems if someone wants to use native
            CP (accented or other special CP specific) chars to draw
            these screen elements. Maybe an option should be added,
            or some sort of markings in the separator strings to
            control that.
            Pls REVIEW.

  * include/hbextern.ch
  * source/rtl/console.c
    + Added HB_DISPOUTATBOX() which is similar to HB_DISPOUTAT(),
      but marks the text drawn as HB_GT_ATTR_BOX, so these chars
      can be properly displayed as drawing chars, regardless of
      the selected codepage. Another difference is that this
      function only supports strings to be printed. Other types
      don't print anything.
    ; NOTE: Maybe this function could use a better name, pls
            review and decide.

  * source/rtl/gtwvt/gtwvt.c
  * source/rtl/gtwvt/gtwvt.h
    ! Fixed not accepting zero as a HB_GTI_CODEPAGE value.
    ! Fixed HB_GTI_CODEPAGE to change the codepage.
    + Added box char support in Unicode mode.
      For chars marked as HB_GT_ATTR_BOX, chars will be
      mapped to Unicode according to CP437.
    + Added box char support in non-Unicode mode.
      For chars marked as HB_GT_ATTR_BOX, OEM_CHARSET will
      always be used.
    ; NOTE: This way it's possible to use ISO/WIN codepages with
            GTWVT, while still being able to use various drawing
            chars (lines, blocks, arrows).
    ; NOTE: The available set of drawing chars depends on the
            OS OEM_CHARSET mapping _for non-Unicode Harbour_.
            For Unicode Harbour, full CP437 codepage is
            always available.
    ; NOTE: This solution doesn't go as far as (GTWXC) to
            graphically draw / emulate these chars.
    ; TODO: Add HB_GTI_BOXCP support to change hard-wired "EN" CP.

  * include/hbapigt.h
  * include/hbgtcore.h
    ! Moved HB_GT_ATTR_* macros to public headers, because they
      are needed for public API functions.

  * contrib/hbwin/win_reg.prg
    + w32_regRead(): Added second parameter to specify the default
      value returned in case the reg entry doesn't exist.
      If not specified, NIL will be returned, just like before.
    + GetRegistry(): Added 4th parameter with same purpose as above.

  * source/rtl/hbregex.c
    * Minor opt.

  * contrib/hbwin/win_misc.c
    * Added command line option parameter to WIN_RUNDETACHED().

  * include/hbapi.h
    + HB_ERRCODE (to replace ERRCODE)
    + HB_SUCCESS (to replace SUCCESS)
    + HB_FAILURE (to replace FAILURE)

  + contrib/hbwin/win_misc.c
  * contrib/hbwin/common.mak
  * contrib/hbwin/Makefile
    + WIN_SHELLEXECUTE()
      WIN_RUNDETACHED()
      WIN_LOADRESOURCE()
      Added some new Windows API wrappers.
    ; TODO: Add hb_osEncode() to them.

  * source/rtl/diskspac.c
  * source/rtl/disksphb.c
    ! Fixed DISKSPACE() and HB_DISKSPACE() for Darwin.
      Previously they had returned erroneous values.
    ; TOFIX: Probably HB_DISKSPACE() should be implemented for Watcom and CEGCC,
             just like DISKSPACE() is.

  * source/rtl/filesys.c
    ! hb_fsGetAttr() to set the returned attribute to zero
      in case of error.

  * include/hbextern.ch
  * source/rtl/philes.c
    + HB_FSETATTR( <cFileName>, @<nAttr> ) -> <lSuccess>
    + HB_FGETATTR( <cFileName>, <nAttr> ) -> <lSuccess>
    + HB_FSETDATETIME( <cFileName>, [<dDate>], [<cTime HH:MM:SS>] ) -> <lSuccess>

  * source/rtl/direct.c
    ! Fixed DIRECTORY() when called with "V" (label) parameter.
      Tested under Windows. Please test/correct for other platforms.
      On Windows, the dirspec should not contain a filemask in order
      to work.

  * contrib/hbtip/base64x.c
    % HB_BASE64(): Optimized, cleaned.
    ! HB_BASE64(): Removed second parameter allowing to pass the length of
      the string. This could cause GPF if passed incorrectly. Now length
      is simply determined using hb_parclen().
    ; TOFIX: Input string size limit checking.

  * include/hbdefs.h
    + HB_SIZEOFARRAY() macro, which does: ( sizeof( var ) / sizeof( *var ) )
      To be really precise, f.e. all hb_strncpy() calls should use
      'hb_strncpy( d, s, HB_SIZEOFARRAY( d ) );' instead of:
      'hb_strncpy( d, s, sizeof( d ) );' (given that 'd' is allocated at compile time).
      So that the code adapts to changing character sizes (like UTF-16/32).
      It's useful in some other places, too.

  * contrib/hbct/dattime2.c
    * 0 -> FALSE for BOOL types.

  * include/hbextern.ch
  * source/rtl/strmatch.c
    + HB_WILDMATCHI(). Case-instenstive, exact match. First
      two parameters and return value are the same as for
      HB_WILDMATCH().

  * include/hbextern.ch
  * source/rtl/cdpapi.c
    + HB_CDPSELECT() which does the same as HB_SETCODEPAGE(), but
      aligns well with function naming rules and namespace.
      HB_SETCODEPAGE() still works, but usage is not recommended.
    + Added HB_CDPUNIID( <cHarbourCP> ) -> <cCPName>
      This will return the std CP ID of a Harbour CP, or empty
      if the Harbour CP isn't linked.

  * include/hbapi.h
  * source/rtl/is.c
    ! Fixed compile error when HB_CDP_SUPPORT_OFF is defined.
    + Added following functions:
      hb_charIsDigit()
      hb_charIsAlpha()
      hb_charIsLower()
      hb_charIsUpper()

  * include/hbapi.h
    - hb_strUpperCopy() removed. Implementation was missing.

  * source/rtl/strcase.c
    * Minor formatting.

  * source/rtl/filesys.c
    ! hb_fsCurDirBuff() fixed potential buffer overrun by one byte.

  * source/rtl/hbrunfun.c
  * source/rtl/run.c
    ! Fixed missing header hbapiitm.h (after previous local change).

  * include/hbapi.h
  * include/hbset.h
  * include/hbapifs.h
  * include/set.ch
  * source/rtl/hbffind.c
  * source/rtl/gete.c
  * source/rtl/filesys.c
  * source/rtl/hbrunfun.c
  * source/rtl/run.c
  * source/rtl/philes.c
  * source/vm/set.c
  * source/vm/cmdarg.c
    + Added file system CP translation.
      Set( _SET_FNAMECP[, <cCPID> ] ) -> <cOldCPID>
      All operations passing filenames to/from the
      OS will convert them to/from the host CP from/to
      the FS CP specified using _SET_FNAMECP.
    * hb_fsNameConv() extended to deal with CP
      conversion, if requested by the app.
    + hb_fsNameConvFrom() (exported) added to deal
      with CP conversions for filenames received from OS.
    + hb_fsNameConvTo() (exported) added to deal
      with CP conversions for filenames/string sent to the OS.
    + Added hb_setGetFNAMECP() (exported) function.
    + Added hb_setGetFileCPTransTo(), hb_setGetFileCPTransFrom()
      (non-exported) functions.
    + hb_fsCurDirBuff() and hb_fsFindNextLow() extended
      to use hb_fsNameConvFrom().
    + Added hb_fsBaseDirBuff() to return the base
      directory on the C level (based on argv[0]).
    + Added HB_PROGNAME() to return the executable
      program name (based on argv[0]).
    + Added HB_DIRBASE() to return the executable
      base directory (based on argv[0]).
    * Renames done regarding OS/FS CP conversion:
      hb_fsNameConvFrom()        -> hb_osDecode()
      hb_fsNameConvTo()          -> hb_osEncode()
      hb_setGetFileCPTransTo()   -> -
      hb_setGetFileCPTransFrom() -> -
      hb_setGetFNAMECP()         -> hb_setGetOSCODEPAGE()
      _SET_FNAMECP               -> _SET_OSCODEPAGE
    * hb_osDecode()/hb_osEncode() extended to have a second
      parameter BOOL * fFree.
       Changed all calls to handle the case when fFree is set
      to TRUE by hb_osDecode()/hb_osEncode().
    + HB_GETENV(): Added 3rd logical parameter to control wether
      to convert the returned value from OS CP to Harbour CP.
      The default is TRUE to be in sync with GETE[NV]() and the
      rest of core.
    * hb_fsNameConv() is now doing OS CP conversion using std APIs,
      rather than duplicating such logic. I've traded some speed
      for modularity.
    * hb_osDecode/hb_osEncode() function declarations moved to hbapi.h
    * hb_osDecode/hb_osEncode() function definitions moved to set.c
    ; NOTE: None of these were extensively tested, and I tend
            to make mistakes when dealing with pointers.
            It compiles cleanly with BCC, and some basic tests
            worked, but bFree = TRUE codepaths are not yet
            working so this needs more review.

  * source/rtl/teditor.prg
  * source/rtl/tpersist.prg
  * utils/hbmake/hbmake.prg
    * MemoRead() -> hb_MemoRead()

  * contrib/hbct/files.c
    ; TOFIX: Many functions here are possibly not thread safe.
    ; TOFIX: Calling hb_fsFindClose() at app exit (and thus keeping
             the FF handles open for the whole app lifetime) doesn't
             play well with server side apps (as the app may run for
             months or even longer), and even worse, they
             will lock the passed directory so that they cannot be
             removed (maybe even renamed), until the app exists.
             At least on Windows.

  * source/rtl/dirdrive.c
    ! Fixed to use F_ERROR instead of -1.

  * include/hbextern.ch
    ! Added missing HB_GCSTEP().

  * source/vm/extrap.c
    + Added CPU dump code for Windows x64.
    + Enabled module listing for Windows 64-bit platforms.
    % Minor cleanup in Windows x86 CPU dump code.
    + Added TODO for Windows IA64 CPU dump.
    + Added TODO for Windows x64 stack walk, with pointers.
    + Added TOFIX regarding displaying module names in Windows x64 mode.

  * source/rtl/fstemp.c
    ! Minor formatting.

  * source/rtl/gete.c
  * source/rtl/run.c
  * source/rtl/hbrunfun.c
  * source/vm/cmdarg.c
    + Added CP conversion to:
      GETE[NV](), HB_GETENV(), __RUN(), HB_RUN(),
      HB_ARGSTRING(), HB_CMDLINE().

  ; TODO: dbCreateTemp( <cAlias>, <aStruct>, <cRDD>, <cDelimArg>, <nConnection> ) -> <lSuccess>
          Generates and opens a new dbf with a temporary filename
          in exclusive mode, deletes it automatically when closed.
          All indexes created for this table, should ideally have
          the temporary flag on, so those get deleted too, when closed.

  ; TOFIX: hb_regex*() functions will not honor Harbour CP setting,
           when case insensitivity is selected.

  ; TOFIX: hbct / SetFDaTi() to move any local logic into Harbour core
           functions and use a simple Harbour API call only.
           I'm not sure what is the reason with keeping the logic
           duplicated here; if this isn't by intent, this function
           could be much simplified.

  ; TOFIX: Avoid using C level toupper()/tolower()/islower()/isupper()

  ; TOFIX: hb_regexMatch()'s 3rd parameter has a double meaning.
           It controls case-sensitivity (in sync with the documentation),
           but it also controls if hb_regexMatch() behaves like
           hb_regexLike() (.T.), or hb_regexHas() (.F.). This means
           that hb_regexMatch(,, .T.) == hb_regexLike(,, .T.) (case-sensitive) and
                hb_regexMatch(,, .F.) == hb_regexHas(,, .F.) (case-insensitive)
           Maybe this was the intent of the original developers, but
           to me it looks a rather strange behaviour which was added by
           accidentally forgetting about the 3rd parameter already being
           utilized. This either needs to be fixed, or properly documented.

  ; NOTE: Noteworthy links:
          http://docs.python.org/3.0/whatsnew/3.0.html
            - Unicode/text section
            - Removed <> (use != instead)
          http://sphinx.pocoo.org/
            - Documentation format
          http://fredeaker.blogspot.com/2007/01/character-encoding-detection.html
            - Character encoding detection
2009-01-14 15:32:43 +00:00
Przemyslaw Czerpak
558525e5b5 2009-01-13 22:44 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/bin/hb-func.sh
    ! restored GCC optimization flags in hb* scripts disabled unintentionally
      by some other modifications 

  * harbour/include/hbapifs.h
  * harbour/source/rtl/hbproces.c
    * renamed hb_fsOpenProcess() and hb_fsCloseProcess() to
      hb_fsProcessOpen(), hb_fsProcessClose()

  * harbour/include/hbextern.ch
  * harbour/source/rtl/hbprocfn.c
    * renamed hb_openProcess() and hb_closeProcess() to
      hb_processOpen(), hb_processClose()

  * harbour/contrib/xhb/hbcompat.ch
    * added xHarbour compatible translations
      hb_openProcess() <-> hb_processOpen()
      hb_closeProcess() <-> hb_processClose()
2009-01-13 21:41:13 +00:00
Przemyslaw Czerpak
3b6d1242e5 2009-01-13 14:07 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/common.mak
  * harbour/source/rtl/Makefile
  * harbour/include/hbapifs.h
  * harbour/include/hbextern.ch
  + harbour/source/rtl/hbproces.c
  + harbour/source/rtl/hbprocfn.c
    + added C functions hb_fsOpenProcess(), hb_fsProcessValue(),
      hb_fsCloseProcess()
    + added .prg functions HB_OPENPROCESS(), HB_PROCESSVALUE(),
      HB_CLOSEPROCESS()
    Based on xHarbour code by Giancarlo Niccolai.
    Warning: it's possible that they will be changed in the future.
    Please test current implementation. Now few notes about it.
    Each handle returned by HB_OPENPROCESS() have to be closed
    by HB_PROCESSVALUE(). Even if process is killed by HB_CLOSEPROCESS()
    its handle is still open and HB_PROCESSVALUE() has to be executed.
    Type of handle depends on OS. In *nixes it's process PID. In MS-Windows
    it's HANDLE. HB_PROCESSVALUE() attach process exit result in *nixes
    cleaning zombie processes and in Windows closing the HANDLE. If you
    do not call this function then you will have resource leak.
    HB_CLOSEPROCESS() only sends quite request to the process but does
    not execute any cleanup code.
    All communication handles returned in parameters by reference by
    HB_OPENPROCESS() function have to be closed using FCLOSE() function.
    If hStdOut and hStdErr are references to the same variables then
    executing process stdout and stderr is redirected to the only one
    pipe. When handles for stdout, stderr and stdin are not given then
    executed process inherits them from parent process unless <lDetach>
    parameter is not given. In such case they are redirected to null
    device (/dev/null or NUL).
    The OS2 version is not tested. Please make tests.
    There is no support for DOS which is single process OS.
    In WinCE builds std{out,err,in} redirecting and process detaching does
    not work too.
    The parameters parsing should be updated. Now MS-Windows version uses
    native OS command line parsing and quoting by "" can be used for
    parameters with blank characters. I do not know any escape character
    which can be used to pass (") as parameter to MS-Windows application.
    In all other OS-es standard bourne shell rules are used. Parameters can
    be quoted by "" or '' and escape character is \. Quoting by '' disables
    special meaning of escape character. In OS2 where \ is path separator
    escaping and '' quoting is disabled so it works like in MS-Windows
    but I do not know if parameters divided by calling process are fully
    respected by low level API calls in this system.
2009-01-13 13:04:01 +00:00
Przemyslaw Czerpak
c2a1acc14c 2009-01-05 13:33 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbgtcore.h
  * harbour/source/rtl/hbgtcore.c
    * changed BYTE bClearColor to USHORT uiClearColor


  The following modifications were made by Viktor Szakats,
  (2008-11-22 16:15 UTC+0100 - 2008-12-19 12:56 UTC+0100)
  Many thanks. It's the first part without CP conversions in OS calls which
  I will want to check yet. Please tests MS-Windows only modifications.

  * harbour/make_vc.mak
  * harbour/contrib/mtpl_vc.mak
    + Added support for A_USR.

  * harbour/include/set.ch
  * harbour/include/hbextern.ch
  * harbour/source/vm/cmdarg.c
  * harbour/source/vm/set.c
  * harbour/source/rtl/tgetlist.prg
  * harbour/source/rtl/gete.c
  * harbour/contrib/hbhpdf/harupdf.c
    * formatting

  * harbour/source/rtl/hbffind.c
    * Changed few places to use sizeof() instead of
      explicit size macro.

  * harbour/source/vm/extrap.c
    + Added module listing. (also supports Win64)

  * harbour/source/common/hbver.c
    + Added Intel C compiler detection. (from xhb)
    + Added Wine detection (unofficial but stable looking
      detection method. There intentionally doesn't exist
      an official method to do this detection, yet there
      are cases when this is necessary. It's also essential
      for error reports.)
      See also:
      http://www.mail-archive.com/wine-devel@winehq.org/msg48659.html

  * harbour/source/common/hbfopen.c
    ! Reverted recent change to use fopen_s(). fopen_s()
      will always open in exclusive mode, so it could create
      incompatibilities.

  * harbour/source/codepage/cpbgmik.c
    ! Fixed BGMIK collation encoding. Someone familiar with
      BG CPs please confirm this, but previously it was
      almost certainly broken, as the collation was identical
      to BG866.

  * harbour/source/rtl/diskspac.c
  * harbour/source/rtl/disksphb.c
    ! GetModuleHandleA() -> GetModuleHandle()
    ; NOTE: GetModuleHandleA() WinCE emulation in
            source/common/wince.c might be unnecessary
            after this change.

  * harbour/source/rtl/memoedit.prg
  * harbour/source/rtl/teditor.prg
    ! Cleaned insert handling. It now won't anymore mess up
      the cursor on instantiation (in New() method). Internal
      :lInsert state replaced by Set( _SET_INSERT ). Cursor
      is only touched in the editing loop.

  * harbour/source/rtl/version.c
    ! HB_VERSION( HB_VERSION_BUILD_DATE ): Fixed month
      being off by one.

  * harbour/contrib/hbmzip/hbmzip.c
    ! Fixed typo which caused timestamps stored in .zip files
      to be wrong.

  * harbour/contrib/hbhpdf/tests/harupdf.prg
    ! Minor typo in code.

  * harbour/contrib/rddads/rddads.h
    + Added detection for ACE 9.10.

  * harbour/contrib/hbtip/sendmail.prg
    ! Stricter parameter checking in hb_SendMail().

  * harbour/contrib/examples/dbu/hb_dbu.dif
    + Added SET DATE ANSI and SET CENTURY ON

  * harbour/source/rtl/gtxwc/gtxwc.c
    + Generating HB_K_RESIZE keystrokes on screen resize.
      This way it's working similarly to gtwvt.
    ! Typos in comments.

  * harbour/source/rtl/gtwin/gtwin.c
    ! Fixed HB_GTI_KBDSHIFTS not working in console mode.
      Replaced GetKeyboardState() call with GetKeyState() calls.

  * harbour/source/rtl/gtwvt/gtwvt.c
    + Added 'layered' window support. It's enabled on W2K
      and above (and only when not in Terminal Services
      environment, because it makes it perform worse). This
      way the screen is also properly displayed regardless
      of what the Harbour application does. It also fixes
      numerous paint artifacts, when GTWVT window was in
      the background and another window is moved in front
      of it.
    ! Fixed only generate HB_K_RESIZE keystrokes when
      resize mode is HB_GTI_RESIZEMODE_ROWS.
2009-01-05 12:31:02 +00:00
Mindaugas Kavaliauskas
d2856c340f 2008-12-25 11:14 UTC+0200 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt)
* include/hbextern.ch
  * source/rtl/seconds.c
    + implemented hb_milliseconds(). This function returns time value 
      from some moment in the past (not midnigth!). It does not start 
      to cound from zero in midnight, thus, can be safetly used to 
      measure time intervals.
  + tests/ticktime.c
    + Added nice test for hb_milliseconds().
      Results on WinXP:
        Ticks per second: 63.595
        Min/avg/max interval (ms): 15.000 / 15.724 / 47.000
        Loops per tick:      13035.09
      Results on openSUSE on VirtualBox on WinXP:
        Ticks per second: 384306.138
        Min/avg/max interval (ms): 0.001 / 0.003 / 11.112
        Loops per tick:      1.04
2008-12-25 09:12:32 +00:00
Przemyslaw Czerpak
fa31aa6f70 2008-12-11 19:48 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbthread.h
  * harbour/source/vm/thread.c
    + added hb_atomic_set(), hb_atomic_get(), hb_atomic_inc() and
      hb_atomic_dec() functions which operates on HB_COUNTER or smaller
      type if it's necessary for some platforms which can be access/assign
      increment/decrement in MT safe atom operations.
      hb_atomic_dec() returns true if counter is 0 after decrementation

  * harbour/include/hbatomic.h
    ! fixed compilation in Linux and OpenWatcom

  * harbour/include/hbapiitm.h
  * harbour/source/rtl/itemseri.c
    + make hb_itemSerialize() and hb_itemDeserialize() public functions
    ! fixed serialization items with internal item references

  * harbour/source/vm/hvm.c
    * release memvars after closing RDDs

  * harbour/source/debug/dbgentry.c
    ! fixed buffer overflow reported by Rodrigo

  * harbour/source/vm/macro.c
  * harbour/source/compiler/hbmain.c
    * formatting

  * harbour/include/hbexprb.c
    ! fixed wrongly recognized functions with HB_I18N_ prefix as
      HB_I18N_GETTEXT()

  * harbour/include/hbapi.h
  * harbour/include/hbstack.h
  * harbour/include/hbthread.h
  * harbour/source/vm/estack.c
  * harbour/source/vm/thread.c
  * harbour/source/vm/hvm.c
    + added support for I18N in HVM.
      Each thread can have it's own i18n set.
      When new thread is created then it inherits i18n set from parent
      thread and both uses the same set (please remember about it if you
      will want to make some direct modifications on active i18n set
      internals).
      When thread change active i18n set then it effects only this thread
      and new threads which will be create later. It does not change i18n
      in other existing threads.
    + added functions to set/get pointer to active i18n set in HVM
         void * hb_vmI18N( void )
         void   hb_vmSetI18N( void * )

  * harbour/include/hbapi.h
  * harbour/source/rtl/hbi18n.c
    + added i18n module. Now only for internal Harbour usage without support
      for optional switching to alternative implementations.
      I'll add such functionality later when I will work on native gettext
      support.

      The following public .prg functions has been added:
         HB_I18N_GETTEXT[_STRICT]( <cMsgID> [, <cContext> ] )
               -> <cTranslatedMsgID> | <cMsgID>
         HB_I18N_NGETTEXT[_STRICT]( <nValue>, <cMsgID> | <acMsgID> ;
                                    [, <cContext> ] )
               -> <cTranslatedMsgID> | <cMsgID> | <acMsgID>[ <nIndex> ]
      This is minimal support necessary for .prg code which has to exists
      in each i18n module working with Harbour.

      The following functions had been added as public C API:
         PHB_ITEM hb_i18n_gettext( PHB_ITEM pMsgID, PHB_ITEM pContext )
         PHB_ITEM hb_i18n_ngettext( PHB_ITEM pNum,
                                    PHB_ITEM pMsgID, PHB_ITEM pContext )

      The following functions had been added as private HVM C API:
         void   hb_i18n_init( void )
         void   hb_i18n_exit( void )
         void   hb_i18n_release( void * cargo )
         void * hb_i18n_alloc( void * cargo )
      They have to be supported by alternative i18n modules

      The following functions has been added to manage Harbour i18n
      translations sets:

         HB_I18N_CREATE()
                  -> <pI18N>
            Creates new empty I18N translation set

         HB_I18N_CODEPAGE( [<pI18N>,] [<cNewCP>], [<lBase>], [<lTranslate>] )
                  -> <cOldCP>
            Gets or sets Harbour codepage used by translation set
            <pI18N> - I18N translation set,
                      if it's not given then currently active I18N set is used
            <cNewCP> - new CP ID. Must be linked with application
            <lBase> - when it's .T. then get/set base massages CP instead of
                      translated massages CP
            <lTranslate> - if it's .T. then translate base (<lBase>==.T.) or
                           final messages in I18N set from previous CP to
                           given one. Base messages translation in synced
                           with context ID translation.

         HB_I18N_PLURALFORM( [<pI18N>,] [<cNewForm>|<bNewForm>], [<lBase>] )
                  -> <cOldForm>|<bOldForm>
            Gets or sets plural form used for final or base messages
            <pI18N> - I18N translation set,
                      if it's not given then currently active I18N set is used
            <cNewForm> - language ID of plural form, f.e.: "EN", "PL", "LT".
                         Now only three above are supported. Please add rules
                         for other languages to source/rtl/hbi18n.c.
            <bNewForm> - codeblock used to calculate plural form indexes.
                         can be used instead of character representation but
                         it's not storred in serialized I18N set
            <lBase> - when it's .T. then get/set base massages plural form
                      instead of translated massages one.

         HB_I18N_DESCRIPTION( [<pI18N>,] [<cNewDescription>] )
                  -> <cOldDescription>
            Gets or sets translation set description. After serialization
            up to 32 bytes is stored in header which can be easy used to
            determinate type of translation file.
            <pI18N> - I18N translation set,
                      if it's not given then currently active I18N set is used
            <cNewDescription> - new description

         HB_I18N_ADDTEXT( <pI18N>, <cMsgID>, <cTrans> | <acTrans> [, <cContext> ] )
                  -> NIL
            Adds new message with translation to i18n translation set
            <pI18N> - I18N translation set
            <cMsgID> - original message
            <cTrans> - translated message
            <acTrans> - array with translated messages used for plural forms
            <cContext> - message context

         HB_I18N_SET( [ <pI18N> | NIL ] )
                  -> <lActive>
            Sets given I18N translation set as default one used by
            HB_I18N_[N]GETTEXT[_STRICT]() functions or remove translation
            set for calling thread when passed parameter is NIL
            <pI18N> - I18N translation set
            Returns logical value which is .T. when i18n set is active

         HB_I18N_SAVETABLE( [<pI18N>] )
                  -> <cTable>
            Returns I18N translation as string item which can be stored
            in file or database
            <pI18N> - I18N translation set, if it's not given then currently
                      active I18N set is used

         HB_I18N_RESTORETABLE( <cTable> )
                  -> <pI18N> | NIL
            Restores I18N translation set from strin item.
            <cTable> - I18N translation set in string representation
            On success it returns new <pI18N> set otherwise NIL if <cTable>
            is not valid item created by HB_I18N_SAVETABLE() or it's corrupted.

         HB_I18N_HEADERSIZE()
                  -> <nHeaderSize>
            Returns size of header used by i18n serialized version

         HB_I18N_CHEK( <cTable> | <cHeader> [, @<cDescription> ] )
                  -> <lValid>
            <cTable> - i18n translation set serialized by HB_I18N_SAVETABLE
            <cHeader> - header of i18n translation set
                        ( LEFT( <cTable>, HB_I18N_HEADERSIZE() )
            <cDescription> - optional parameter passed by reference where
                             will be sored i18n translation set description
                             extracted from valid header
            Returns logical value indicating if given table or header is
            valid serialized by HB_I18N_SAVETABLE() data. It does not
            decode the table though it validates size and control sums.

      These functions are optional and some future alternative implementations
      may not support all of them and/or may provide some other functions.

    + added unofficial .prg function __I18N_HASHTABLE() which allows to
      access hash table used by i18n translation set or create new translation
      set with given hash table. It's helper functions for developers which
      will work on Harbour i18n tools and should not be used by Harbour users.

      Unlike original gettext Harbour allows to use language with many
      plural forms as base one. In such case programmer should activate
      at application startup default i18n translation set with base plural
      form valid for base application language, f.e. by:
         pI18N := hb_i18n_create()
         hb_i18n_pluralForm( pI18N, <cLangID> | <bForm>, .t. )
         hb_i18n_set( pI18N )
      .prg code example:

         #xtranslate _( <x,...> ) => hb_i18n_gettext_strict( <x> )
         #xtranslate _N( <x,...> ) => hb_i18n_ngettext_strict( <x> )

         proc main()
            local pI18N, i

            pI18N := hb_i18n_create()
            hb_i18n_pluralForm( pI18N, "PL", .t. )
            hb_i18n_set( pI18N )

            for i := 0 to 30
               ? i, _N( i, {"grosz", "grosze", "groszy"} )
               if i > 0 .and. i % 10 == 0
                  wait
               endif
            next
         return

      In .pot files created during compilation by Harbour with -j option
      for above code we have the following entries for message with plural
      forms:
            msgid "grosz"
            msgid_plural "grosze"
            msgid_plural2 "groszy"
            msgstr[0] ""
      The msgid_plural2 (and others if language has more plural forms)
      is Harbour extension which is not gettext compatible.


      The above implementation is base version but should be fully functional.
      Now we will need functions to safe/read i18n files and tools to mange
      .pot files: merge them, edit translations, create final binary i18n
      translation sets. Because we are using gettext compatible .pot files
      then for some of such jobs we can use original gettext tools but we
      need at least function which will create translation set from one or
      more .pot files.
      We should also agree some default localization(s) for files containing
      translated data, their name convention and environment variable(s)
      to set default language. It's not strictly necessary and each user
      can have his own implementation but it would help in adding new
      translations by final users to any Harbour application which will
      respect them. We can use LANG envvar to extract preferred language
      and use the same path as executed application looking for files
      <appname>-<lang>.hil files though it may create some problems for
      OSes which support only 8.3 file names so we can also define that
      HB_I18N envvar has higher priority and points to expected translation
      file.

  * harbour/include/hbextern.ch
    - removed old __i18n_*() functions
    + added current i18n functions
2008-12-11 18:47:46 +00:00
Viktor Szakats
642efdc827 2008-11-09 14:02 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* make_vc.mak
    + Added /nxcompat linker flag for non-WinCE, non-DLL, 
      HB_VISUALC_VER >= 80 MSVC executables. 
      This should add extra safety.

  * include/hbextern.ch
  * source/rtl/rat.c
    + Added HB_RAT() which is similar to RAT(), but also accepts 
      <nStart> and <nEnd> optional paramaters, similarly to HB_AT().
    ; Please test.

  * source/rtl/at.c
    * Minor formatting.
2008-11-09 13:03:31 +00:00
Viktor Szakats
5cb6ba8159 2008-11-04 22:53 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
    + Added new HB_H*() functions.
2008-11-04 21:53:35 +00:00
Viktor Szakats
d28d0d79d3 2008-11-04 22:50 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/hbextern.ch
  * common.mak
  * source/codepage/Makefile
  + source/codepage/cpes850.c
    + Added ES850 - Modern Spanish.

  * include/hbextern.ch
    ! Added ITWIN.

  * source/codepage/cpesisoc.c
  * source/codepage/cpsviso.c
  * source/codepage/cpesiso.c
  * source/codepage/cpitwin.c
    + Added my copyright.

  * ChangeLog
    ; Some TODO/TOFIXes marked as [DONE]
2008-11-04 21:51:51 +00:00