Commit Graph

16 Commits

Author SHA1 Message Date
Viktor Szakats
9f16c2bf8e 2017-08-13 18:27 UTC Viktor Szakats (vszakats users.noreply.github.com)
* *
    * update copyright headers with new FSF postal address
    * COPYING.txt -> LICENSE.txt (rest of repo to be synced)
2017-08-13 18:38:59 +00:00
Przemysław Czerpak
078899e74c 2016-02-18 17:02 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/fileio.ch
    + added HB_VF_IONAME to hb_vcConfigure() actions

  * contrib/hbbz2io/bz2io.c
  * contrib/hbcomio/comio.c
  * contrib/hbgzio/gzio.c
  * contrib/hbmemio/memio.c
  * contrib/hbnetio/netio.h
  * contrib/hbnetio/netiocli.c
  * contrib/hbpipeio/pipeio.c
  * contrib/hbtcpio/tcpio.c
  * src/rtl/filebuf.c
    + implemented HB_VF_IONAME

  * contrib/hbnetio/netiosrv.c
    ! added protection against possible buffer overflow

  * src/rdd/dbfcdx/dbfcdx1.c
  * src/rdd/dbfnsx/dbfnsx1.c
  * src/rdd/dbfntx/dbfntx1.c
    * restored CL5.[23] compatible tag selection - I had to broke
      it when I was adding SIX3 compatibility functions
2016-02-18 17:02:48 +01:00
Viktor Szakats
58faf91453 2016-01-14 19:17 UTC+0100 Viktor Szakats (vszakats users.noreply.github.com)
* *
    % remove brandings and homepage [1] from copyright header. Pass 1 - using script.
      [1] nobody has access to it anymore AFAIK - and it's also just
          a redirect since long
    ! update url in copyright header
    ; this should make the diff between 3.4 and 3.2 easier to manage
2016-01-14 19:18:17 +01:00
Przemysław Czerpak
7c0914cd43 2015-09-25 11:41 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/filebuf.c
    ! removed unnecessary HB_EXPORT attribute

  * contrib/hbwin/oleuuid.c
    ! added missing HB_EXPORT attrinute for OpenWatcom builds

  * contrib/hbcomio/comio.c
  * contrib/hbpipeio/pipeio.c
  * contrib/hbtcpio/tcpio.c
  * src/rtl/hbsockhb.c
    ! cleaned integer types and casting
2015-09-25 11:41:09 +02:00
Przemysław Czerpak
2606996d15 2015-08-31 12:45 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbtcpio/tcpio.c
  * contrib/hbpipeio/pipeio.c
    * modified hb_fileWrite() to return 0 in case of timeout or unblocking
      write and -1 on other errors.

  * contrib/hbcomio/comio.c
    * modified hb_fileRead() to return 0 in case of timeout or unblocking
      read and -1 on other errors.

  * src/rtl/filesys.c
    * return -1 instead of 0 from hb_fsPipeWrite() in MS-Windows and OS2
      builds if PIPE state cannot be read

  * ChangeLog.txt
    ! c&p typo in previous ChangeLog entry
2015-08-31 12:45:47 +02:00
Przemysław Czerpak
1be1c7da9c 2015-08-27 16:46 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/fileio.ch
    + added few HB_VF_* macros for hb_vfConfig() settings

  * contrib/hbcomio/comio.c
  * contrib/hbtcpio/tcpio.c
    + implemented HB_VF_TIMEOUT, HB_VF_PORT, HB_VF_SHUTDOWN, HB_VF_RDHANDLE
      and HB_VF_WRHANDLE hb_vfConfig() settings, i.e. now
         hb_vfConfig( pFile, HB_VF_TIMEOUT, <nTimeOut> ) -> <nTimeOut>
      can be used to change default timeout in TCP and COM Harbour File IO
      handles.
2015-08-27 16:46:12 +02:00
Przemysław Czerpak
41b8ecb6c7 2015-08-26 15:51 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbsocket.h
  * src/rtl/hbsockhb.c
    + added socket filters to standard socket API.
      At C level hb_sockex*() function with PHB_SOCKEX handler can be
      used to operate on socket filters. At PRG level standard hb_socket*()
      functions can be used.
      The following things has been changed in PRG hb_socket*() functions:
      hb_socketErorrString() can accept <pSocket> as 1-st or 2-nd parameter
      and redirect call to socket filter errorStr() method.
      hb_socketClose() executes automatically shutdown() for connected
      sockets - it is important in windows only where without explicit
      call to shutdown() before close transmitted data can be lost.
      hb_socketSend() and hb_socketRecv() can be redirected to filter
      streams if filter set such redirection. If filter does not redirect
      them then they operate on raw sockets. If hb_socketSend() is
      redirected then sent data is flushed automatically.
      The following new PRG functions has been added:
      Add/replace socket filter:
         hb_socketSetFilter( <pSocket>, [<cFilterName>], [<hParams>] )
               -> <pSocket> | NIL
            <cFilterName> is filter name, It's possible to set many filters
            in single hb_socketSetFilter() call separating filter names
            with "|" character, i.e.:
               pSock := hb_socketSetFilter( pSock, "ZSOCK|BFSOCK", hParams )
            <hParams> is hash array with initialization parameters used by
            given socket filter. The core implementation recognize the
            following settings:
               "readahead" - numeric value with size of read ahead buffer
               "flush" - numeric value with auto flush parameter (for more
                         information look at hb_socketAutoFlush() below)
               "redir" - logical value which can be use to enable/disable
                         hb_socketSend() and hb_socketRecv() redirection
                         to filter stream.
      Return filter name used by socket:
         hb_socketGetFilter( <pSocket> ) -> <cFilterName>
      Read from socket stream:
         hb_socketRead( <pSocket>, @<cData>, [<nLen> = Len( cData )],
                        [<nTimeout> = FOREVER] ) -> <nRead>
         this function is similar to hb_socketRecv() but is always
         redirected to socket stream filters.
      Write to socket stream:
         hb_socketWrite( <pSocket>, <cData>, [<nLen> = Len( cData )],
                         [<nTimeout> = FOREVER] ) -> <nWritten>
         this function is similar to hb_socketSend() but it is always
         redirected to socket stream filters. Written data is not flushed
         by default and it should be flushed explicitly by hb_socketFlush().
         Automatic flushing can be enabled by hb_socketAutoFlush() function.
      Flush data written to socket:
         hb_socketFlush( <pSocket>, [<nTimeout> = FOREVER], [<lSync>] )
                     -> <nNotFlushed>
            <lSync> parameter is logical value which can be used to force
            special synchronization method in some filters. Usually users
            do not have to use it in normal code.
      Enable/disable automatic flushing of written data.
         hb_socketAutoFlush( <pSocket>, [ <nTimeout> ] ) -> <nTimeout>
            <nTimeout> is timeout for automatic flush operation on written
            data in milliseconds. <nTimeout> = -1 means wait forever and
            <nTimeout> = 0 disables auto flush.
         automatic flushing can help in adopting existing code anyhow it
         may strongly reduce the performance in some filters, i.e.
         compression filters like ZSOCK have to add special data to the
         stream after each flush operation so it's suggested to call
         flush explicitly when we want to force delivering written data
         to the peer.

  * include/hbznet.h
  * src/rtl/hbznet.c
    + added ZNET socket filter - compressed and encrypted streams are
      compatible with hb_znet*() streams. The old hb_znet*() interface
      is obsolete for pure socket communication and if not used as
      hb_inet*() filter then should be replaced by hb_sockex*() in
      user programs.
      ZNET socket filter can be created by new PRG functions:
         hb_socketNewZNet( <pSocket>, [<cPass>], [<nCompressionLevel>], ;
                           [<nStrategy>] ) -> <pSocket> | NIL
      or by standard socket API with "ZNET" as filter name.
      ZNET filter recognize the following settings in initialization
      hash array:
         "key" or "pass" - string with encryption password
         "zlib" - numeric compression level (HB_ZLIB_COMPRESSION_*)
         "zs" - numeric ZLIB compression strategy (HB_ZLIB_STRATEGY_*)
      ZNET filter always disables any other filters and operates on raw
      socket.
      Please remember that it's optional module. If programmer does not
      use hb_socketNewZNet() explicitly and prefers using hb_socketNew()
      then he should force linking this module by REQUEST hb_socketNewZNet

    + added fSync parameter to hb_znetFlush()
      [INCOMPATIBLE]

  * src/rtl/hbinet.c
    * call flush filter function before socket is closed

  * src/rtl/Makefile
  + src/rtl/hbzsock.c
    + added ZSOCK socket filter - ZLIB and GZIP compression for socket
      streams.
      ZSOCK socket filter can be created by new PRG functions:
         hb_socketNewZSock( <pSocket>, [<hParams>] ) -> <pSocket> | NIL
      or by standard socket API with "ZSOCK" as filter name.
      Programmers using hb_socketNew() can force linking this module by
         REQUEST hb_socketNewZSock
      ZSOCK filter can be used with other filters.
      ZSOCK filter recognize the following settings in initialization
      hash array:
         "zlib" - numeric compression level (HB_ZLIB_COMPRESSION_*)
         "zs" - numeric ZLIB compression strategy (HB_ZLIB_STRATEGY_*)
         "zin" - logical value which allow to enable/disable ZLIB
                 decompression on input stream (default)
         "gzin" - logical value which allow to enable/disable GZIP
                  decompression on input stream - it's possible to
                  enable both ZLIB and GZIP decompression together
                  so both streams can be decompress
         "zout" - logical value which allow to enable/disable ZLIB
                  compression on output stream (default)
         "gzout" - logical value which allow to enable/disable GZIP
                   compression on output stream - if both "zout" and
                   "gzout" are enabled GZIP compression is used.

  * src/rtl/Makefile
  + src/rtl/hbbfsock.c
    + added BFSOCK socket filter - BlowFish input and output stream
      encryption in CTR mode.
      BFSOCK socket filter can be created by new PRG functions:
         hb_socketNewBFSock( <pSocket>, [<hParams>] ) -> <pSocket> | NIL
      or by standard socket API with "BFSOCK" as filter name.
      Programmers using hb_socketNew() can force linking this module by
         REQUEST hb_socketNewBFSock
      BFSOCK filter can be used with other filters, i.e. with ZSOCK.
      Please only remember that good encryption algorithms have to
      generate data which cannot be compressed so using "BFSOCK|ZSOCK"
      only wastes resources and correct filter order is "ZSOCK|BFSOCK".
      BFSOCK filter recognize the following settings in initialization
      hash array:
         "key" or "pass" - string with encryption password
         "iv" - string with initialization vector for CTR mode

  * contrib/hbssl/hbssl.ch
  * contrib/hbssl/hbssl.h
  * contrib/hbssl/hbssl.hbm
  * contrib/hbssl/hbssl.hbx
  * contrib/hbssl/ssl.c
  * contrib/hbssl/ssl_inet.c
  + contrib/hbssl/ssl_sock.c
    + added SSL socket filter
      SSL socket filter can be created by new PRG functions:
         hb_socketNewSSL_connect( <pSocket>, <pSSL> [, <nTimeout> ] )
               -> <pSocketSSL> | NIL
         hb_socketNewSSL_accept( <pSocket>, <pSSL> [, <nTimeout> ] )
               -> <pSocketSSL> | NIL
      or by standard socket API with "SSL" as filter name.
      Programmers using hb_socketNew() can force linking this module by
         REQUEST hb_socketNewSSL_connect
      or
         REQUEST hb_socketNewSSL_accept
      SSL filter always disables any other filters and operates on raw
      socket.
      SSL filter recognize the following settings in initialization hash
      array:
         "ctx" or "key" - pointer SSL item <pSSL>
         "timeout" - timeout (numeric)
         "client" - logical value indicating client mode (SSL_connect())
         "server" - logical value indicating server mode (SSL_accept())

  * contrib/hbssl/tests/inetssl.prg
    ! cleaned typo in local function name

  * contrib/hbnetio/netiocli.c
  * contrib/hbnetio/netiosrv.c
    * use new Harbour extended socket API (hb_sockex*()) instead of
      raw sockets and hb_znet*()

  * contrib/hbtcpio/tcpio.c
    * use new Harbour extended socket API (hb_sockex*()) instead of
      raw sockets
    + implemented hb_fileFlush()
2015-08-26 15:51:35 +02:00
Przemysław Czerpak
482e06d0fd 2015-08-17 15:29 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbsocket.h
  * src/rtl/hbsocket.c
  * src/rtl/hbsockhb.c
    + added new C functions:
         hb_socketAutoInit( void );
         hb_socketSetError( int iError );

  * contrib/hbtcpio/tcpio.c
    ! initialize socket subsystem - it fixes issue #105
2015-08-17 15:29:43 +02:00
Przemysław Czerpak
dc5937b990 2015-08-07 15:40 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbtcpio/tcpio.c
  * contrib/hbtcpio/hbtcpio.hbx
    + added new PRG function
         hb_vfFromSocket( <pSocket> ) -> <pFile>
      It converts socket created by socket open into TCPIP virtual file
      which works just like files created by hb_vfOpen( "tcp:...", ... )

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

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

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

  * src/vm/asort.c
    % use hb_itemRawSwap()
    * in old code use comparison which prefers < and > operators
      instead of <= and >=
2015-08-07 15:40:40 +02:00
Przemysław Czerpak
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
5d691b9923 2015-04-09 00:20 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbnetio/netiosrv.c
  * contrib/hbtcpio/tcpio.c
    * call hb_socketShutdown() before hb_socketClose() to force output
      buffer flush in systems like MS-Windows.
2015-04-09 00:20:40 +02:00
Przemysław Czerpak
4617ba29d7 2015-03-03 15:57 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/gtalleg/gtallegd.c
  * contrib/gtqtc/gtqtc1.cpp
  * contrib/hbblink/blinker.prg
  * contrib/hbbz2/core.c
  * contrib/hbcomio/comio.c
  * contrib/hbsqlit3/core.c
  * contrib/hbtcpio/tcpio.c
  * contrib/rddads/adsfunc.c
    * synced with Viktor's branch
      (formatting, macros instead of constant values, protection against
      wrong paramters, use *EVALITEM macros, use HB_ERR_ARGS_BASEPARAMS, ...)

  * contrib/hbsqlit3/core.c
  * contrib/hbsqlit3/hbsqlit3.hbx
    + add sqlite3_load_extension( <db>, <cModule>, [<cProc>], [@<cError>] )
                  -> <nResult>
      (borowed from Viktor's branch 2015-02-15 19:18 UTC+0100 Viktor Szakats)
2015-03-03 15:57:48 +01:00
Przemysław Czerpak
5873d78e2c 2014-03-20 04:01 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapifs.h
  * src/rtl/filebuf.c
  * src/rtl/filebufd.c
  * contrib/hbcomio/comio.c
  * contrib/hbmemio/memio.c
  * contrib/hbnetio/netiocli.c
  * contrib/hbtcpio/tcpio.c
    * changed internal FILE IO API. Now all functions which do
      not operate on PHB_FILE receive pointer to function table
      (PHB_FILE_FUNCS) used by given redirector.

  * src/rtl/vfile.c
    * open wirtual files in READWRITE mode by default
    * translate FO_* attributes to FXO_* ones

  * src/vm/classes.c
    ! fixed typo in RTE message

  * src/vm/garbage.c
    * use different error code (1301/1302) for destructor RTE

  * src/rtl/gtxwc/gtxwc.c
  * src/rtl/gtxwc/gtxwc.h
    + added support for HB_GTI_FONTWEIGHT with HB_GTI_FONTW_* actions

  * contrib/hbpgsql/rddcopy.c
    ! fixed memory leak
    % encapsulate PQ calls in hb_vmUnlock()/hb_vmLock() to not stop
      other threads when GC is activated
2014-03-20 04:01:25 +01:00
Przemysław Czerpak
74f298f8ec 2014-03-10 18:59 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbtcpio/tcpio.c
    * use default timeout defined in initial hostname string in read/write
      operations

  * include/hbapicom.h
  * src/rtl/hbcom.c
    + added new C function:
         int hb_comFindPort( const char * pszDevName, HB_BOOL fCreate );
      It check if given port name is already defined and if not and second
      parameter fCreate is TRUE then it allocates such port in one of last
      free slots. On success port number is returned. If port cannot be
      found or created 0 is returned.

  * include/harbour.hbx
  * src/rtl/hbcomhb.c
    + added new PRG function:
         hb_comFindPort( <cDeviceName> [, <lCreate> = .F. ] ) -> <nPort>

  * contrib/hbplist.txt
  + contrib/hbcomio/comio.c
  + contrib/hbcomio/hbcomio.hbc
  + contrib/hbcomio/hbcomio.hbp
    + added new Harbour FILE IO redirector.
      It recognizes and process names with "COM<n>:" prefix, in form like:
         COM<n>:[<com_params>]
      <n> is port number or port name prefixed with "$" character.
      <com_params> may contain serial port parameters like baud rate, stop
      and data bits, parity and flow control (XON,XOFF,CTS, RTS,DST,DTR).
      As delimiter comma "," is accepted.
      This redirector can be used in different subsystems using Harbour
      FILE IO and stream read/write operations, i.e.
         REQUEST HB_COMIO
         SET PRINTER TO COM2:38400,N81,XONXOFF
      can be used to connect to serial printers.
      Please remember that redirectors like NETIO can be used as wrapper
      to other redirectors so code like:
         pFile := hb_vfOpen( "NET:192.168.0.1:::COM1:9600,8N1" )
      opens 1-st serial port on the server and
         pFile := hb_vfOpen( "NET:192.168.0.1:::COM$/dev/ttyUSB0:9600,8N1" )
      opens "/dev/ttyUSB0" serial device on the server.
2014-03-10 18:59:52 +01:00
Przemysław Czerpak
f1783b9fa6 2014-03-06 22:35 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbtcpio/tcpio.c
    ! fixed local static function prototype

  * include/harbour.hbx
    * casing
2014-03-06 22:35:36 +01:00
Przemysław Czerpak
c89f63ee0b 2014-03-06 19:07 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/set.c
    ! fixed freed memory access exploited by interactions between
      modifications in last few years.
    ! do not try to remove trailing ^Z char reading from the stream
      if FS_END seek reports 0.
    ! if possible open printer/alternate/extra output in write only mode
      to avoid problem on devices where read access is not available.

  * src/rtl/langapi.c
    * keep EN lang active after deinitialization

  * src/rtl/filesys.c
    ! fixed condition for file time refresh in *nix builds
    ! fixed file time setting in *nix builds

  * include/hbapifs.h
  * src/rtl/Makefile
  * src/rtl/filebuf.c
  + src/rtl/filebufd.c
    * renamed hb_fileRegister2() to hb_fileRegisterFull()
    + added new function hb_fileRegisterPart() which simplifies writing
      small FILE IO redirectors.

  * contrib/hbmemio/memio.c
  * contrib/hbnetio/netiocli.c
    * use hb_fileRegisterFull()

  * contrib/hbplist.txt
  + contrib/hbtcpio/hbtcpio.hbc
  + contrib/hbtcpio/hbtcpio.hbp
  + contrib/hbtcpio/hbtcpio.hbx
  + contrib/hbtcpio/tcpio.c
    + added new Harbour FILE IO redirector.
      It recognizes and process names with "tcp:" prefix, in form like:
         tcp:<host>:<port>[:<timeout>]
      It can be used in different subsystems using Harbour FILE IO and
      stream read/write operations, i.e.
         REQUEST HB_TCPIO
         SET PRINTER TO tcp:192.168.0.110:9100
      can be used to connect to network printers using TCP direct printing.

  * utils/hbmk2/po/hbmk2.pt_BR.po
    ! fixed typo in translation
2014-03-06 19:07:49 +01:00