Commit Graph

85 Commits

Author SHA1 Message Date
Przemysław Czerpak
b058c205e6 2015-12-23 17:53 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/harbour.hbx
  * src/vm/hvm.c
    + added new PRG function:
         __RecoverErrorBlock() -> <bError> | NIL
      It extracts previous error block pushed on HVM stack
      by BEGIN SEQUENCE WITH ...

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

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

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

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

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

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

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

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

  * src/rdd/dbf1.c
    * pacified warning
2015-12-15 23:48:52 +01:00
Przemysław Czerpak
ea09561adf 2015-12-09 14:22 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/dbinfo.ch
  * include/hbrdddbf.h
  * src/rdd/dbf1.c
    + added new RDD switch RDDI_SETHEADER
      It allows to define how DBF header is updated in tables which
      will be opened later, i.e.:
         // maximize performance reducing number of DBF header updating
         // header is updated only when table is closed if before new
         // record was added
         hb_rddInfo( RDDI_SETHEADER, DB_SETHEADER_MINIMAL )
      or:
         // update header in the same moment as Clipper and xBase++
         // and store only last two digit from the year for compatibility
         // with old dBase and FoxPro versions
         hb_rddInfo( RDDI_SETHEADER, ;
                     hb_bitOr( DB_SETHEADER_CLIPPER, DB_SETHEADER_YYEAR ) )
         // DB_SETHEADER_CLIPPER
      By default Harbour uses DB_SETHEADER_APPENDSYNC.
      For more information look at comments for DB_SETHEADER_* switches
      in dbinfo.ch
    + added new table switch DBI_SETHEADER
      It has the same meaning as RDDI_SETHEADER but changes the header
      updated mode of already open table by dbInfo() function.

  * src/rtl/filebuf.c
    ! added missing redirection for Configure() method.

  * src/rtl/hbproces.c
    ! fixed sysconf() emulation for OpenWatcom 1.9 and earlier to work with
      _SC_PAGESIZE
2015-12-09 14:22:57 +01:00
Przemysław Czerpak
43006ae7e9 2015-12-01 22:46 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
    * update DBF header only after modification in COMMIT and CLOSE methods.
      It's Cl*pper and xBase++ compatible behavior anyhow it also means that
      number of records in DBF header is not modified just after APPEND
      so it cannot be used to synchronization in concurrent file access.

  * src/rtl/hbproces.c
    ! safe and restore hb_fsError() when unused pipe handles are closed
      in hb_fsProcessOpen()
    ! add extension (.com or .exe) in hb_fsProcessOpen()/hb_fsProcessRun()
      when executed command is given with PATH part and without extension.
      It's documented that DosExecPgm() needs full filename in such case.
      It fixes problem with contrib/make.hb which calls hbmk2 with directory
      part but without extension.
    ! enabled pipes instead of temporary files for stdio redirection in OS2
      builds of hb_fsProcessRun() - now it should work correctly.

  * src/rtl/hbprocfn.c
    + update FError() in hb_Proces*() functions
2015-12-01 22:46:39 +01:00
Przemysław Czerpak
706a75cece 2015-11-25 15:06 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/harbour.hbx
  * src/rtl/dateshb.c
    + added two new PRG functions:
         hb_SecToT( <nSeconds> ) -> <tTime>
         hb_MSecToT( <nMilliseconds> ) -> <tTime>

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

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

  * src/rdd/dbf1.c
    ! respect _SET_EPOCH decoding DBF update time from DBF HEADER
      (LUpdate() function).
      It's not Cl*pper compatible anyhow looks that most of tools
      stores only last two digits from the year (just like in the
      DBF documentation) and -1900 trick is not used so it helps
      to decode correct update date.
    * store 'year % 100' instead of 'year - 1900' in DBF header
      when DBF table with VFP signature is used (DB_DBF_VFP).
2015-11-25 15:06:44 +01:00
Przemysław Czerpak
7275392fb6 2015-11-24 09:03 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapirdd.h
  * src/rdd/wacore.c
    * changed 4-th parameter of hb_rddRequestArea() from HB_BOOL fWait to
      HB_ULONG ulMilliSec
      [INCOMPATIBLE]

  * src/rdd/dbdetach.c
    + accept optionally as 4-th parameter of hb_dbRequest() numeric value
      with timeout in seconds. The previous version using xBase++ compatible
      parameters (logical value <lWait> in 4-th parameter) is still working.

  ; above modifications are based on request and patch sent to harbour-devel
    list by Rolf (many thanks), ref:
    https://groups.google.com/forum/?hl=pl#!topic/harbour-devel/Pu2b1M5VXjU
2015-11-24 09:03:56 +01:00
Przemysław Czerpak
80b10a3a72 2015-11-23 23:24 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
    + reserve space for DBC name in newly created DBF files with VFP DBF
      signature, Thanks to Nikos Christophi, Jeff Stone and other who
      reported this problem.
    + added RTE when size of DBF header is exceed by "_NullFlags" field

  * src/vm/thread.c
    ! typo in comment
2015-11-23 23:24:30 +01:00
Przemysław Czerpak
1ff43722ed 2015-09-14 14:03 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
    * set HB_FF_BINARY flag in numeric and date fields stored in binary
      representation - VFP also does it.
2015-09-14 14:03:56 +02:00
Przemysław Czerpak
1d300dddfe 2015-09-03 14:00 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/sdf1.c
    ! use hb_fileResult() to process hb_fileRead() results - it fixes
      problem reported by Viktor.
2015-09-03 14:00:03 +02:00
Przemysław Czerpak
9a9128ea27 2015-09-01 15:07 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* ChangeLog.txt
    ! fixed typo in ChangeLog entry. I used hb_socketNew() instead of
      hb_socketSetFilter()

  * include/hbapifs.h
  * src/rtl/filebuf.c
    + added helper C function:
         HB_SIZE hb_fileResult( HB_SIZE nSize );
      It converts ( HB_SIZE ) FS_ERROR to 0 so it can be used to wrap
      hb_fileRead()/hb_fileWrite() to force previous results.

  * src/rdd/dbffpt/dbffpt1.c
    * reduced variable scope

  * src/rtl/copyfile.c
    ! fixed typo in last commit - thanks to Viktor.
2015-09-01 15:07:03 +02:00
Przemysław Czerpak
db3fe4b8d4 2015-08-31 23:43 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbmzip/mzip.c
  * contrib/hbnetio/netiocli.c
  * contrib/hbnetio/netiosrv.c
  * contrib/hbwin/win_prn2.c
  * contrib/xhb/xhbcopyf.c
  * src/rdd/dbffpt/dbffpt1.c
  * src/rdd/dbfnsx/dbfnsx1.c
  * src/rdd/delim1.c
  * src/rdd/hbsix/sxcompr.c
  * src/rdd/sdf1.c
  * src/rtl/copyfile.c
  * src/rtl/filesys.c
  * src/rtl/fscopy.c
  * src/rtl/hbmd5.c
  * src/rtl/memofile.c
  * src/rtl/philes.c
  * src/rtl/vfile.c
    * updated for possible -1 result returned by hb_fileRead()/hb_fileWrite()
2015-08-31 23:43:30 +02:00
Przemysław Czerpak
a173d31af9 2015-07-24 10:28 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapifs.h
  * src/rtl/filebuf.c
  * src/rtl/filebufd.c
  * src/rtl/filesys.c
  * src/rtl/vfile.c
  * src/rtl/iousr.c
  * src/rdd/dbfcdx/dbfcdx1.c
  * src/rdd/dbffpt/dbffpt1.c
  * src/rdd/dbfnsx/dbfnsx1.c
  * src/rdd/dbfntx/dbfntx1.c
  * src/rdd/hsx/hsx.c
  * contrib/hbcomio/comio.c
  * contrib/hbmemio/memio.c
  * contrib/hbtcpio/tcpio.c
  * contrib/hbnetio/netio.h
  * contrib/hbnetio/netiocli.c
  * contrib/hbnetio/netiosrv.c
    * changed HB_USHORT uiAttr parameter to HB_FATTR nAttr
      in hb_fsExtOpen() and hb_fileExtOpen()

  * include/fileio.ch
  * src/rtl/vfile.c
    + added support for FO_DEFAULTS in hb_vfOpen().
      When this flag is used in <nModeAttr> parameters then new
      _SET_DEFAULT is respected when new file is created and
      _SET_DEFAULT + _SET_PATH when file is opened.
    + added support for checking file size by it's in hb_vfSize()
      so it can work like hb_FSize() but for virtual FS not only
      for local files. Now this function has the following syntax:
         hb_vfSize( <pHandle> | <cFileName> [, <lUseDirEntry> ] ) -> <nSize>
      The 2-nd parameter <lUseDirEntry> is significant only when
      the 1-st one <cFileName> is character value.

  * src/rtl/gttrm/gttrm.c
    * replaced C++ comments with ANSI ones

  * src/rtl/vfile.c
    * updated casing of function names in comments
    * return F_ERROR instead of NIL hb_vfHandle() when wrong parameter
      is given (borrowed from Viktor's branch)
    * added C function hb_fileParamGet() borrowed from Viktor's branch

  * src/rtl/filesys.c
    * variable localization (synced with Viktor's branch)

  * src/rtl/disksphb.c
    ! fixed bug with potentially uninitialized buffer
      (fix borrowed from Viktor's branch)
2015-07-24 10:28:12 +02:00
Przemysław Czerpak
a7ad431c1d 2015-06-02 13:31 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbtip/client.prg
    * eliminated hb_UserName() from initial random seed

  * contrib/hbwin/win_prn2.c
    ! fixed memory leak and potentially wrong handle usage
      fix borrowed from Viktor's branch:
      2015-06-02 12:39-57 UTC+0200 Viktor Szakats

  * src/rdd/dbf1.c
    * variable localization
2015-06-02 13:31:31 +02:00
Przemysław Czerpak
b0b23e0e94 2015-04-27 17:21 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/workarea.c
    ! fixed typo in RDDI_AUTOORDER type - it should be numeric
      just like in  _SET_AUTORDER. Many thanks to Rolf for locating
      the problem
2015-04-27 17:21:07 +02:00
Przemysław Czerpak
0b4ed76c12 2015-04-01 14:59 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/debug/dbgentry.c
    ! fixed typo in my previous commit for AltD() function detection
      Thanks to Franček Prijatelj for reporting the problem and Abe
      for self contain example

  * src/rdd/dbfcdx/dbfcdx1.c
    * reverted byte order in Harbour CDX signature - by mistake I used
      little endian. When existsing index is open then reverted signatures
      are accepted for backward compatiblity though they will be removed
      in the future.

  * src/rdd/workarea.c
    * move results of EVALBLOCK() RDD method from Harbour stack return item
      to workarea valResult item instead of copping it.
    ; Warning: This modification may exploit problems in code which
               wrongly looks for result of EVALBLOCK() RDD method in
               HVM stack return item instead of workarea valResult item.
2015-04-01 14:59:26 +02:00
Przemysław Czerpak
c99d950516 2015-03-23 15:03 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapirdd.h
  * include/hbusrrdd.ch
    + added DBTF_RECALL flag which disables transferring record DELETED flag

  * src/rdd/dbcmd.c
  * src/rdd/workarea.c
    ! disable transferring DELETED flag to destination area in SORT TO /
      __dbArrange() operations

  * src/rdd/delim1.c
  * src/rdd/sdf1.c
    + added dummy RECALL() methods - now RECALL() can be executed by workarea
      TRANSREC() method when DBTF_RECALL flag is set
2015-03-23 15:03:27 +01:00
Przemysław Czerpak
26c617c979 2015-03-22 17:23 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
    * pacified warnings
2015-03-22 17:23:43 +01:00
Przemysław Czerpak
3c4c67254c 2015-03-21 12:54 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
    ! restored the line with initialization of allocated memory buffer
      I deleted by mistake removing my private comments before commit.
      Without this line sort could randomly crash on small tables (less
      then 65537 sorted records)
2015-03-21 12:54:05 +01:00
Przemysław Czerpak
db16cc8861 2015-03-20 16:34 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/Makefile
  - include/hbdbsort.h
  * src/rdd/Makefile
  - src/rdd/hbdbsort.c
  * src/rdd/dbf1.c
    - completely removed old code used in DBF* RDDs as low level backend
      for SORT TO ... command and __dbArrange() function.
      It was buggy and extremely inefficient in some cases, i.e. after
      20 hours I killed process which was sorting table with 2'000'000
      records in reverted order so I cannot even say how much time it
      needed.

  * src/rdd/dbf1.c
    + added new code for table sorting in DBF* RDDs
      (SORT TO ... / __dbArrange() backend)
      New code fixes many different problems which existed in previous one
      like missing support for national collation, wrong descending orders,
      wrong sorting of numeric fields with negative values, missing support
      for sorting many field types, missing support for transferring MEMO
      fields, missing support for transferring records to table with different
      field structure or serving by different RDD, etc.
      New code is also many times faster then the old one. In practice it
      means is now usable for tables with more then few thousands records,
      i.e. the test table with 2'000'000 records I used with old code was
      copied in sorted order in 13 secs. when pure COPY TO needed 10 secs.
      Now it's possible to export sorted tables to different RDDs, i.e.
      using DELIM or SDF RDDs in desitnation area.
      New code is written in general form without any local to DBF* RDDs
      extensions so it can be adopted as base in any other RDD. Probably
      I'll move it to default workarea methods so it will be inherited by
      all Harbour RDDs and only if necessary authors of some RDDs may
      overload it, i.e. to move the operation to the server side in remote
      RDDs when source and destination tables are processed by the same
      server.
      This modification closes the last known for years bug or rather bag
      of bugs ;-) in Harbour.
    ; NOTE: For large tables new sorting algorithm may access source records
            more then once. It means that results may be wrongly sorted when
            sorted fields in exported records are modified concurrently by
            other station during exporting. This can be easy eliminated by
            copping source records to temporary file anyhow it will introduce
            additional overhead in all cases and user can easy eliminate the
            problem by simple FLOCK before sort or making export to temporary
            file and then sorting this file or he can simply ignore this
            problem as unimportant in the specific situation so I decided to
            not implement double copping.
            I haven't tested what Cl*pper exactly does in such case so
            I cannot say if current behavior is or isn't Cl*pper compatible.
2015-03-20 16:34:03 +01:00
Przemysław Czerpak
ee5f8ac72f 2015-03-18 23:16 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbrddcdx.h
  * src/rdd/dbfcdx/dbfcdx1.c
    % small speed improvement during indexing
    * casting

  * src/rdd/dbfnsx/dbfnsx1.c
  * src/rdd/dbfntx/dbfntx1.c
    * casting
2015-03-18 23:16:36 +01:00
Przemysław Czerpak
c98c7b1597 2015-03-17 13:35 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/workarea.c
    % small simplification
2015-03-17 13:35:57 +01:00
Przemysław Czerpak
66bf4f5867 2015-03-17 12:55 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbcmd.c
    ! fixed __dbArrange() to allow record transfer with the same conditions
      as __dbTrans() just like Cl*pper does.
      Low level RDD code should respect it, i.e. it should be possible to
      sort using fields which exist only in source workarea, the order
      and number of fields in source and destination workareas can be
      completely different, etc.
      Low level DBF* SORT() method is completely broken in such cases and
      has to be rewritten.
2015-03-17 12:55:32 +01:00
Przemysław Czerpak
11e823dba2 2015-03-16 23:00 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbtip/smtpcli.prg
    ! do not execute STARTTLS command if server does not report it's supported
      (issue #90)

  * src/rdd/dbcmd.c
    * use DBI_TRANSREC in __dbTrans() and __dbArrange() (pure record copping
      without sorting)
2015-03-16 23:00:13 +01:00
Przemysław Czerpak
b0e3afcdda 2015-03-05 22:35 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
    ! do not refresh ModTime and RowVer fields just copied during transfer
      operation
2015-03-05 22:35:11 +01:00
Przemysław Czerpak
74c4b51266 2015-03-05 20:46 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapi.h
  * src/vm/garbage.c
    + added hb_gcDummyClear() function

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

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

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

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

  * ChangeLog.txt
    ! typo in last ChangeLog entry
2015-03-05 20:46:23 +01:00
Przemysław Czerpak
d3a947bc6f 2015-03-04 09:18 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
  * src/rtl/hbinet.c
    * pacified warnings (Thanks to Grigory)

  * src/rdd/dbcmd.c
  * src/rdd/wafunc.c
    * small code simplification and cleanup
    ! protection against GPF when wrong parameters are passed to __dbArrange()
    + added support for transferring records using __dbArrange() to area with
      different fields order (low level driver may refuse to finish such
      operation but not it's possible.
2015-03-04 09:18:13 +01:00
Przemysław Czerpak
03e7b6da6e 2015-03-03 16:26 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/rddads/ads1.c
    ! use AdsSetLongLong() (if available) instead of AdsSetDouble() to not
      strip less significant bits from 64bit integer number during conversion
      to double
    * allow ADS to decide if writing into rowver and modtime fields is legal
      instead of generating our own arbitrary RTE

  * include/dbinfo.ch
  * src/rdd/workarea.c
    + added new dbInfo() action DBI_TRANSREC
      It indicates if area is destination table of currently processed COPY TO
      or APPEND FROM operation.

  * include/hbapirdd.h
  * src/rdd/wafunc.c
    + added new C function:
         HB_ERRCODE hb_dbTransCounters( LPDBTRANSINFO lpdbTransInfo );
      It copies field counters from source into destination table used
      in transfer operation.

  * src/rdd/dbcmd.c
  * src/rdd/wafunc.c
    + call DBI_TRANSREC to inform destination area that record transfer
      operation starts and stop. It allows destination RDD to change
      rules used for assign to automatically updated fields, i.e. unblock
      such operation.
    + call hb_dbTransCounters() to update counters in destination table
      after COPY TO operation

  * src/rdd/sdf1.c
  * src/rdd/delim1.c
    * clear AutoInc flag

  * src/rdd/dbf1.c
    + allow to set get and set counter for RowVer fields using DBS_COUNTER
      action
    * return HB_FAILURE for DBS_COUNTER and DBS_STEP if it's not supported
      by given field.
    + added support for DBI_TRANSREC - in case of DBF* RDDs it unblocks
      writing to automatically updated fields
2015-03-03 16:26:28 +01:00
Przemysław Czerpak
fff0da51ab 2015-02-21 14:34 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/delim1.c
  * src/rdd/sdf1.c
    ! disabled code which allows to delete just added record.
      It was not Cl*pper compatible and caused bad side effects
      in COPY TO ... DELIM | SDF - deleted records were nor
      copied
2015-02-21 14:34:17 +01:00
Przemysław Czerpak
094b3e6faa 2015-02-17 17:22 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
    * modified code which tries to detect if field flags were used in DBF
      header for autoinc numeric fields
2015-02-17 17:22:57 +01:00
Przemysław Czerpak
9347e5ab4e 2015-02-17 16:35 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
    + added support for autoincrement fields with counter longer then 4 bytes
      Warning: if someone created tables with such fields i.e. { "I:+", 8, 0 }
               after my modification which added support for AutoInc flags in
               all numeric DBF fields then he should update counters manually
               using DBS_COUNTER flag. New code uses 64bit counters for such
               field located in different part of DBFFIELD structure.
2015-02-17 16:35:17 +01:00
Przemysław Czerpak
be90db3802 2015-02-15 21:31 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
    * slightly modified code which tries to detect if field flags were
      used in DBF header
2015-02-15 21:31:12 +01:00
Przemysław Czerpak
238f2b606c 2015-02-11 09:49 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
    * moved AutoInc field initialization to separate function
    % removed unnecessary AutoInc initialization from RowVer fields
    * cleanup few static function names
2015-02-11 09:50:00 +01:00
Przemysław Czerpak
64b5a2586f 2015-02-11 09:26 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
    + finished support for AutoInc flag (+) for all numeric fields (N, F, I, B)
      in DBF* RDDs. Now user can define field like:
            { "COUNTER", "I:+", 4, 0 }
      and they will work like autoincrement fields but without any assign
      restrictions.
2015-02-11 09:26:33 +01:00
Przemysław Czerpak
11156a9563 2015-02-08 13:19 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/workarea.c
    + added support for field flags in dbCreate()/dbStruct().
      Flags can be passed in string with field type after ":", i.e.
         "C:U"
      means Unicode character field.
      The following flags are recognized:
         "N" - column can store null values
         "B" - binary column
         "+" - column is autoincrementing
         "Z" - column is compressed
         "E" - column is encrypted
         "U" - column stores Unicode strings

  * src/rdd/dbf1.c
    + added support for field flags in core DBF* RDDs.
    ; In core DBF* RDDs "N", "B", "U" and "+" flags are supported.
      When "N" flag is used then special hidden field with NULL bits
      is created. Such implementation is compatible with DBF created
      by VFP.

  * contrib/rddads/ads1.c
    + added support for field flags in ADS* RDDs
    ! added missing RTE when wrong field types are passed to dbCreate()
    ; The old format with long field names corresponding to ADS types is
      still supported but I had to rewrite this code so please make real
      life test and verify me. In few cases I slightly change the code and
      now it can be a little bit more restrictive, i.e. typos in "AtutoInc"
      field type will be detected (previous code checked only for 1-st
      letter "A").
2015-02-08 13:19:07 +01:00
Przemysław Czerpak
6f3cc11e48 2015-01-09 19:19 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
    * minor foramtting

  * src/rtl/gtwvt/gtwvt.c
    ! do not generate K_MOUSEMOVE during marking phase

  * src/rtl/gtxwc/gtxwc.c
    ! fixed mapping XWindow mouse buttons to Harbour buttons
      (MRightDown() and MMiddleDown() were reverted)

  * src/rtl/memoedit.prg
    ! fixed processing unicode characters

  * src/rtl/teditor.prg
    * synced with Viktor's branch
2015-01-09 19:19:09 +01:00
Przemysław Czerpak
e007f5de9d 2014-12-04 10:06 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* ChangeLog.txt
  * contrib/hbct/doc/en/dattime3.txt
  * contrib/hbmzip/mzip.c
  * contrib/xhb/filestat.c
  * src/common/hbffind.c
  * src/rdd/hbsix/sxcompr.c
  * src/rtl/filebuf.c
  * src/rtl/filesys.c
  * src/rtl/fssize.c
  * src/rtl/fstemp.c
    ! typo in comments

  * src/common/hbfsapi.c
    ! hb_fsFNameMerge() fixed to not refer to szDrive in HB_TRACE mode
      (2014-11-29 14:29 UTC+0100 Viktor Szakats)

  * src/rtl/fnsplit.c
    * removed szDrive setting before call to hb_fsFNameMerge() - it's not
      longer necessary
2014-12-04 10:06:14 +01:00
Przemysław Czerpak
bc7ff4d5c6 2014-11-29 06:03 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapifs.h
  * src/common/hbffind.c
  * src/rtl/direct.c
  * src/rtl/dirscan.prg
  * src/rtl/filebuf.c
    + added lTime member to HB_FFIND structure
    + added 3-rd parmeter to hb_fsDirectory()
    + extended default maximum number of Harbour file IO redirecros to 128
    * use hb_xgrabz()
    * formatting

  * include/hbcompdf.h
  * include/hbpp.h
  * src/compiler/cmdcheck.c
  * src/compiler/genc.c
  * src/compiler/hbcomp.c
  * src/compiler/hbmain.c
  * src/compiler/ppcomp.c
  * src/pp/hbpp.c
  * src/pp/ppcore.c
  * src/pp/pplib.c
    + added support for -ql compiler switch - it disables displaying PRG line
      numbers during compilation
    + added internal support for switch which disables PRG names from final
      PCODE - it's not active by default

  * src/compiler/ppcomp.c
    + allow to change -gc? switch by #pragma directives

  * src/compiler/hbusage.c
    * present '-' as default option separator for all platforms

  * src/rdd/Makefile
  + src/rdd/rddshort.c
  - src/rdd/dbfuncs.prg
    * moved short function names (10 characters Cl*pper compatible) wrappers
      to rddshort.c

  * src/common/hbhash.c
  * src/compiler/gencc.c
  * src/compiler/hbcomp.c
  * src/compiler/hbdbginf.c
  * src/compiler/hbdead.c
  * src/compiler/hbmain.c
  * src/compiler/hbopt.c
  * src/debug/dbgentry.c
  * src/pp/ppcore.c
  * src/rdd/dbf1.c
  * src/rdd/dbfntx/dbfntx1.c
  * src/rdd/delim1.c
  * src/rdd/sdf1.c
  * src/rdd/hsx/hsx.c
  * src/rdd/usrrdd/usrrdd.c
  * src/rdd/wafunc.c
  * src/rdd/workarea.c
  * src/vm/classes.c
  * src/vm/dynsym.c
  * src/vm/estack.c
  * src/vm/runner.c
  * src/vm/set.c
  * src/vm/task.c
  * src/rtl/cdpapi.c
  * src/rtl/filebuf.c
  * src/rtl/gtcgi/gtcgi.c
  * src/rtl/gtcrs/gtcrs.c
  * src/rtl/gtstd/gtstd.c
  * src/rtl/gttrm/gttrm.c
  * src/rtl/gtxwc/gtxwc.c
  * src/rtl/hbdyn.c
  * src/rtl/hbgtcore.c
  * src/rtl/hbi18n1.c
  * src/rtl/hblpp.c
  * src/rtl/hbznet.c
  * src/rtl/iousr.c
    * use hb_xgrabz()

  * src/common/hbprintf.c
    * formatting
    * reduced variable scope

  * src/rdd/dblist.prg
  * src/rdd/hbsix/sxini.prg
  * src/rtl/hbfilehi.prg
    % use new hb_FName*() functions

  * src/codepage/cp_950.c
  * src/codepage/cp_big5.c
  * src/codepage/cp_gbk.c
  * src/codepage/cp_u16le.c
  * src/codepage/cp_utf8.c
  * src/common/hbfopen.c
  * src/common/hbstr.c
  * src/common/strwild.c
  * src/compiler/complex.c
  * src/compiler/genc.c
  * src/compiler/hbopt.c
  * src/compiler/hbusage.c
  * src/debug/dbghelp.prg
  * src/debug/debugger.prg
  * src/hbextern/hbextern.prg
  * src/main/harbour.1
  * src/pp/ppcore.c
  * src/rdd/dbcmd.c
  * src/rdd/dbcmd53.c
  * src/rdd/dbf1.c
  * src/rdd/dbfcdx/dbfcdx1.c
  * src/rdd/dbfntx/dbfntx1.c
  * src/rdd/dbjoin.prg
  * src/rdd/dbnubs.c
  * src/rdd/dbsort.prg
  * src/rdd/dbstrux.prg
  * src/rdd/dbtotal.prg
  * src/rdd/dbupdat.prg
  * src/rdd/hbsix/sxcompat.prg
  * src/rdd/hbsix/sxcrypt.c
  * src/rdd/hbsix/sxini.prg
  * src/rdd/hsx/hsx.c
  * src/rdd/usrrdd/usrrdd.c
  * src/vm/debug.c
  * src/vm/estack.c
  * src/vm/set.c
  * src/vm/task.c
  * src/rtl/achoice.prg
  * src/rtl/adir.prg
  * src/rtl/alert.prg
  * src/rtl/altd.prg
  * src/rtl/base64d.c
  * src/rtl/browse.prg
  * src/rtl/cdpapi.c
  * src/rtl/checkbox.prg
  * src/rtl/color53.prg
  * src/rtl/dbedit.prg
  * src/rtl/dircmd.prg
  * src/rtl/dirscan.prg
  * src/rtl/errapi.c
  * src/rtl/errsys.prg
  * src/rtl/fnsplit.c
  * src/rtl/gtchrmap.c
  * src/rtl/gtcrs/gtcrs.c
  * src/rtl/gtsln/gtsln.c
  * src/rtl/gtsln/mousesln.c
  * src/rtl/gttrm/gttrm.c
  * src/rtl/gtwin/gtwin.c
  * src/rtl/gtwvt/gtwvt.c
  * src/rtl/gtxwc/gtxwc.c
  * src/rtl/gui.prg
  * src/rtl/hbbfish.c
  * src/rtl/hbdoc.prg
  * src/rtl/hbfilehi.prg
  * src/rtl/hbgtcore.c
  * src/rtl/hbi18n2.prg
  * src/rtl/hbini.prg
  * src/rtl/hblpphb.c
  * src/rtl/hbregexc.c
  * src/rtl/memvarhb.prg
  * src/rtl/menusys.prg
  * src/rtl/menuto.prg
  * src/rtl/objfunc.prg
  * src/rtl/padc.c
  * src/rtl/padl.c
  * src/rtl/padr.c
  * src/rtl/profiler.prg
  * src/rtl/radiobtn.prg
  * src/rtl/radiogrp.prg
  * src/rtl/setcolor.c
  * src/rtl/tbcolumn.prg
  * src/rtl/tbrowse.prg
  * src/rtl/tclass.prg
  * src/rtl/tgetint.prg
  * src/rtl/tgetlist.prg
  * src/rtl/tmenusys.prg
  * src/rtl/tobject.prg
  * src/rtl/tpersist.prg
  * src/rtl/tpopup.prg
  * src/rtl/tpopuphb.prg
  * src/rtl/treport.prg
  * src/rtl/tscalar.prg
  * src/rtl/tsymbol.prg
  * src/rtl/ttextlin.prg
  * src/rtl/typefile.prg
    * formatting, casing, comment updating, removed trailing spaces, casting,
      replace hb_itemType() with HB_IS_*() macros, updated variable and
      function names and scopes, pacified unused result warnings, removed
      redundant castings, use HB_SIZEOFARRAY() and sizeof(), removed explicit
      NIL from parameters, use hb_LeftEq[I](), added supports for symbol items
      used as codeblock replacements, use hb_defaultValue(), use FOR EACH
      statement, use SWITCH statement, replaced SubStr() with Left() or
      Right(), use hb_AScan(), use hb_FReadLen()/hb_VFReadLen(),
      removed FO_READ from FOpen() parameters, use Str() instead of PadL(),
      use hb_StrShrink()

  * src/lang/l_el.c
  * src/lang/l_es_419.c
  * src/lang/l_fr.c
  * src/lang/l_hu.c
  * src/lang/l_pt_br.c
  * src/lang/l_sk.c
  * src/lang/l_tr.c
    * synced with Viktor's branch

  * src/rtl/achoice.prg
  * src/rtl/cdpdet.prg
    * synced with Viktor's branch

  * src/vm/Makefile
  + src/vm/short.c
    + added short function names (10 characters Cl*pper compatible) wrappers

  * src/vm/extrap.c
    * synced with Viktor's branch

  * src/rtl/Makefile
  + src/rtl/rtlshort.c
    + added short function names (10 characters Cl*pper compatible) wrappers

  * src/rtl/cdpdetc.c
  * include/harbour.hbx
    + added __wapi_GetConsoleOutputCP()

  * src/rtl/datec.c
  * include/harbour.hbx
    + added hb_CDay( <nDayOfWeek> ) -> <cDayName>

  * src/rtl/filesys.c
    ! do not check for PIPEs handles in WinCE builds
    ! respect OS returnb code in SystemTimeToFileTime()

  * src/rtl/gete.c
    * covered GetE() function by HB_CLP_UNDOC macro

  * src/rtl/philes53.c
    * covered FSetDevMod() function by HB_CLP_UNDOC macro

  * src/rtl/hbdoc.prg
    * use HB_SERIALIZE_COMPRESS instead of explicit hb_ZCompress()
      (incompatible, .hbd files has to be regenerated)

  * src/rtl/hbjson.c
    * add a newline at EOF in human readable mode

  * src/rtl/hbzlibgz.c
    * disabled GZIP support in MSVC WinCE builds

  * src/rtl/philes.c
  * include/harbour.hbx
    + added hb_FReadLen()

  * src/rtl/vfile.c
  * include/harbour.hbx
    + added hb_VFReadLen()

  * src/rtl/strclear.c
    ! check hb_itemGetWriteCL() result

  ; above modifications borrowed from Viktor's branch with some small
    modifications - many thanks

  * src/rtl/hbinet.c
    * extened readahead buffer from 256 to 1500 bytes
    ! fixed possible wrong result in hb_InetDataReady() and redirected
      sockets (i.e. by hb_InetCompress())

  * src/rtl/hbsocket.c
    ! typo in recent modification for BSD socket less builds

  + src/rtl/strutf8.c
  * include/harbour.hbx
    + added hb_StrIsUTF8() - it should be compatible with similar function
      from Viktor's branch

  * src/rtl/tpersist.prg
    * eliminated oSelf private variable and reduced macro expansion to
      item values

  * src/debug/dbgtmenu.prg
  * src/debug/dbgtwin.prg
  * src/debug/debugger.prg
    ! replaced SaveScreen()/RestScreen() with
      __dbgSaveScreen()/__dbgRestScreen() to fix problems with unicode
      characters which do not exists in HVM CP.

  * src/rdd/hbsix/sxcompat.prg
    + added support for timestamp values to sxChar(), sxNum(), sxDate()
      functions.
2014-11-29 06:03:17 +01:00
Przemysław Czerpak
43bb132540 2014-11-24 09:43 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbf1.c
    * pacified warning
2014-11-24 09:43:40 +01:00
Przemysław Czerpak
41ddee0ea9 2014-11-18 14:13 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/dbinfo.ch
    + added new rddInfo() action: RDDI_DECIMALS

  * include/hbrdddbf.h
  * src/rdd/dbf1.c
    + added support for RDDI_DECIMALS - when set it's used as default number
      of decimal places in conversions to string for fields type "B" and "8"
      with 0 number of decimal places in DBF header.
2014-11-18 14:13:03 +01:00
Przemysław Czerpak
ff1288dc3f 2014-11-04 01:54 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* ChangeLog.txt
  * doc/xhb-diff.txt
    ! typos

  * doc/clipper.txt
    ! removed completely false information about 'LIST &cMacro'
    * updated information about FOR EACH
    ; in general information in this file are outdated and does not
      correctly describe current Harbour behavior. I strongly suggest
      to not use it in any other documentation. In some spare time
      I'll update this file or remove.

  * doc/cmpopt.txt
    + added information about unsupported by Clipper syntax extension:
         iif( <expr1>, <expr2>, <expr3> ) <op>= <expr4>

  * include/hbrddnsx.h
    * minor modification in comment

  * src/macro/macrolex.c
    * accept unconditionally hash 'key => value' operator

  * src/rdd/dbfnsx/dbfnsx1.c
    ! fixed very bad bug in leaf key compression. This problem could be
      exploited by keys containing containing CHR( 255 ) in encoded keys
      just before trailing empty key characters.
      This bug could cause index corruption.
    * use hb_xgrabz()
    * formatting
2014-11-04 01:54:04 +01:00
Przemysław Czerpak
ef962484be 2014-10-24 15:15 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbrddntx.h
  * src/rdd/workarea.c
  * src/rdd/dbf1.c
  * src/rdd/delim1.c
  * src/rdd/sdf1.c
  * src/rdd/dbfcdx/dbfcdx1.c
  * src/rdd/dbfnsx/dbfnsx1.c
  * src/rdd/dbfntx/dbfntx1.c
  * src/rdd/dbffpt/dbffpt1.c
  * contrib/rddads/ads1.c
  * contrib/rddads/adsfunc.c
  * contrib/rddads/adsx.c
  * contrib/rddsql/sqlbase.c
  * contrib/rddsql/sqlmix.c
  * contrib/sddfb/core.c
  * contrib/sddmy/core.c
  * contrib/sddoci/core.c
  * contrib/sddodbc/core.c
  * contrib/sddpg/core.c
  * contrib/sddsqlt3/core.c
    * cleaned AREAP casting
    * unified some variable names
    * cleaned some DBOI_* actions
    * allow to call ORDERINFO() method without itmResult item.
    * few other cleanups
2014-10-24 15:15:39 +02:00
Przemysław Czerpak
309dc0a307 2014-10-24 04:13 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/rddads/ads1.c
  * contrib/rddads/adsfunc.c
  * contrib/rddads/rddads.h
    + added support for RDDI_INDEXPAGESIZE in ADI indexes

  * src/rdd/dbf1.c
    * minor cleanup

  * include/hbrddcdx.h
  * src/rdd/dbfcdx/dbfcdx1.c
    + added support for long index keys when bigger pages are used.
      Now maximum index key size is 4082 for 8192 bytes length index pages.
      Indexes are critical for database applications so please make
      tests with current code and report problems if you find any.
2014-10-24 04:13:06 +02:00
Przemysław Czerpak
321df92cbe 2014-10-23 17:58 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbrddcdx.h
  * src/rdd/dbfcdx/dbfcdx1.c
    * renamed CDX_TYPE_TEMPORARY to CDX_TYPE_PARTIAL
    * eliminated Temporary member from CDXTAG structure
    * cleaned tag signature flag setting to strictly follow
      CL5.2 (SIx3) and CL5.3 (COMIX)
2014-10-23 17:58:21 +02:00
Przemysław Czerpak
e8ab404525 2014-10-23 14:11 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbfcdx/dbfcdx1.c
    * pacified warning
2014-10-23 14:11:08 +02:00
Przemysław Czerpak
537d0e78fa 2014-10-23 13:50 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rdd/dbfcdx/dbfcdx1.c
    ; minor comment update

  * utils/hbmk2/hbmk2.prg
    ! fixed error/waring messages after recent modifications for -stop
      switch
2014-10-23 13:50:25 +02:00
Przemysław Czerpak
25b36d0e77 2014-10-23 13:20 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/rddads/ads1.c
  * contrib/rddads/adsfunc.c
    ! check if AE_VALUE_OVERFLOW macro exists before use
    ! fixed memory leak
    % use char* instead of UNSIGNED8* to eliminate unnecessary casting
    * use HB_IT_EVALITEM instead of HB_IT_BLOCK
    * formatting and minor cleanups

  * include/hbrddcdx.h
  * src/rdd/dbfcdx/dbfcdx1.c
    * modifications for longer index keys when bigger pages are used
      (work in progress)
2014-10-23 13:20:27 +02:00
Przemysław Czerpak
9492a2e54e 2014-10-22 10:25 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbrddcdx.h
  * src/rdd/dbfcdx/dbfcdx1.c
    * modifications for longer index keys when bigger pages are used
      (work in progress)
2014-10-22 10:25:27 +02:00
Przemysław Czerpak
a6b992a722 2014-10-22 02:24 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbrddcdx.h
  * src/rdd/dbfcdx/dbfcdx1.c
    * force default index page size when CDX header does not contain
      Harbour signature
    * added RTE when index expression returns item with unsupported
      type during indexing
    * modifications for longer index keys when bigger pages are used
      (work in progress)
    * formatting
2014-10-22 02:24:03 +02:00
Przemysław Czerpak
777e24ee87 2014-10-21 16:40 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbrddcdx.h
  * src/rdd/dbfcdx/dbfcdx1.c
    * added support for user defined index page size in DBFCDX.
      To change page size for newly created index it's enough to call:
         hb_rddInfo( RDDI_INDEXPAGESIZE, <nNewSize>,, "DBFCDX" )
      DBFCDX accepts page sizes which are power of 2 in from 512 to 8192.
      The upper range is my personal decision and can be easy changed
      in Harbour source code. 512 is default CDX index page size and
      only such indexes can be read by other RDDs.
      In some cases bigger pages can increase performance and reduce
      index size. In local networks probably 1024 should give optimal
      performance because can be transferred in single ethernet frame.
      Just make a tests.
    ; In next step I plan to add support for longer index keys when
      bigger pages are used.

  * utils/hbmk2/hbmk2.prg
    ! added -stop fix borrowed from Viktor's branch
2014-10-21 16:40:26 +02:00
Przemysław Czerpak
8d8558fbab 2014-10-20 17:33 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* config/lang2po.hb
    ! fixed negative UTC offsets to string conversion

  * include/dbinfo.ch
  * src/rdd/dbfcdx/dbfcdx1.c
  * src/rdd/dbfnsx/dbfnsx1.c
  * src/rdd/dbfntx/dbfntx1.c
    + added DBOI_INDEXPAGESIZE - get index page size

  * include/dbinfo.ch
  * include/hbrdddbf.h
  * src/rdd/dbf1.c
    + added RDDI_INDEXPAGESIZE - get/set default index page size

  * include/hbrddcdx.h
  * src/rdd/dbfcdx/dbfcdx1.c
    * modification for user defined index page size (work in progress)
2014-10-20 17:33:49 +02:00