Commit Graph

21 Commits

Author SHA1 Message Date
Viktor Szakats
5a2a287752 2017-09-08 16:00 UTC Viktor Szakats (vszakats users.noreply.github.com)
* *
    * partial sync with the 3.4 fork codebase. These are the things
      synces for the most part:
      - copyright headers
      - grammar/typos in comments and some readmes
      - comment/whitespace/decorations
      - variable scoping in C files
      - DO CASE/SWITCH and some other alternate syntax usage
      - minimal amount of human readable text in strings
      - minor code updates
      - HB_TRACE() void * casts for pointers and few other changes to
        avoid C compiler warnings
      - various other, minor code cleanups
      - only Harbour/C code/headers were touched in src, utils, contrib,
        include. No 3rd party code, no make files, and with just a few
        exceptions, no 'tests' code was touched.
      - certain components were not touched were 3.4 diverged too much
        already, like f.e. hbmk2, hbssl, hbcurl, hbexpat
      - the goal was that no actual program logic should be altered by
        these changes. Except some possible minor exceptions, any such
        change is probably a bug in this patch.
      It's a massive patch, if you find anything broken after it, please
      open an Issue with the details. Build test was done on macOS.
      The goal is make it easier to see what actual code/logic was changed
      in 3.4 compared to 3.2 and to make patches easier to apply in both
      ways.
2017-09-08 16:25:13 +00:00
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
e150da6f93 2017-04-14 16:36 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapifs.h
  * src/rtl/filesys.c
    + added new C functions for UNIX and DJGPP builds:
         int hb_fsPollFD( PHB_POLLFD pPollSet, int iCount,
                          HB_MAXINT nTimeOut );
         int hb_fsCanRead( HB_FHANDLE hFileHandle, HB_MAXINT nTimeOut );
         int hb_fsCanWrite( HB_FHANDLE hFileHandle, HB_MAXINT nTimeOut );
      These functions should be used instead of select() in C code to hide
      low level access to select()/poll() functionality in *nix builds
      (they are supported by DJGPP only to simplify existing code common
      for DJGPP and *nix builds). Maximum file handle value which can be
      used in select() is limited by FD_SETSIZE. Please note that it's
      file handle value not number of file handles in the set. It creates
      serious problem for applications which operate on great number of
      handles (i.e. servers which have to keep open many sockets, pipes,
      files, etc. for their clients) so the new file/socket/pipe/...
      handle value can easy exceed FD_SETSIZE limit and in such case
      cannot be used with select(). The modification on
         2016-04-05 21:24 UTC+0200 Przemyslaw Czerpak
      resolved the problem only for sockets and pipes in code which uses
      corresponding hb_socket*() and hb_fsPipe*() API but not for all
      other cases. This one is for POSIX compilant code which needs pure
      POSIX select()/poll() functionality.
      Please note that HB_POLLFD structure should is compatible with
      struct pollfd defined by POSIX.1-2001 anyhow not all platforms
      confirm this standard so portable Harbour code should always use
      HB_POLLFD and HB_POLL* constant values instead of POLL* ones.

  * include/hbdate.h
  * src/common/hbdate.c
    + added new C functions to calculate timeouts:
         HB_MAXUINT hb_timerGet( void );
         HB_MAXUINT hb_timerInit( HB_MAXINT nTimeOut );
         HB_MAXINT  hb_timerTest( HB_MAXINT nTimeOut, HB_MAXUINT * pnTimer );
      They are designed to be used instead of direct access to
      hb_dateMilliSeconds(). Now they internally use hb_dateMilliSeconds()
      but it can be easy replaced by any other system monotonic clock by
      one local modification inside hb_timerGet() function.

  * src/rtl/filesys.c
    * use hb_timer*() functions instead of hb_dateMilliSeconds()
    * use hb_fsCanRead()/hb_fsCanWrite() instead of select()/poll()
      It also fixed timeout processing inside hb_fsPipeIsData() and
      hb_fsPipeWrite() in builds using poll()

  * src/rtl/filesys.c
  * src/rtl/gtcrs/gtcrs.h
  * src/rtl/gtcrs/gtcrs.c
  * src/rtl/gtpca/gtpca.c
  * src/rtl/gtsln/gtsln.c
  * src/rtl/gtsln/mousesln.c
  * src/rtl/gtstd/gtstd.c
  * src/rtl/gttrm/gttrm.c
  * src/rtl/gtxwc/gtxwc.c
    * use hb_timer*() functions instead of hb_dateMilliSeconds()
    * use hb_fsCanRead()/hb_fsCanWrite() instead of select()/poll()

  * src/vm/thread.c:
  * src/rtl/gtwin/gtwin.c
  * src/rtl/hbcom.c
  * src/rtl/hbgtcore.c
  * src/rtl/hblpp.c
  * src/rtl/idle.c
  * contrib/hbnetio/netiosrv.c:
  * contrib/hbssl/ssl_sock.c:
    * use hb_timer*() functions instead of hb_dateMilliSeconds()

  * contrib/xhb/hboutdbg.c
    * use hb_fsCanWrite() instead of select()

  * src/rtl/hbsocket.c
    ! repeat select() interrupted by signal inside hb_socketSelect()
      when poll() function is not available

  * src/3rd/hbdossrl/serial.c
    ! fixed -Wshift-negative-value GCC warnings
2017-04-14 16:36:50 +02:00
Przemysław Czerpak
35fe3becc7 2016-09-28 19:55 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbssl/hbssl.h
  * contrib/hbssl/ssl_sock.c
  * contrib/hbssl/ssl_inet.c
    + added new 'PHB_ITEM pSSL' parameter to hb_sockexNewSSL() and
      hb_ssl_socketNew() C functions - it allows to bind harbour item
      with SSL pointer which should not be released before connection
      is closed. In new OpenSSL version such tricks can be replaced
      by SSL_up_ref()
      This modification also fixes possible GPF trap when SSL filter
      socket was create dynamically from C code without SSL pointer
      item on HVM stack in 2-nd parameter and removes old hack which
      saved internally 2-nd HVM stack parameter.
    + allow to pass SSL_CTX instead of SSL in "ssl", "ctx" or "key" items
      of hash array used to initialize SSL socket filter. Using SSL_CTX
      allows to use the same hash array to set SSL socket filter for
      different connections
    + allow to use codeblocks or function pointers as "ssl", "ctx" or
      "key" items of hash array used to initialize SSL socket filter

  * contrib/hbssl/hbssl.h
  * contrib/hbssl/sslctx.c
    + added new C function:
         SSL_CTX * hb_SSL_CTX_itemGet( PHB_ITEM pItem )

  * contrib/hbssl/ssl_sock.c
  * src/rtl/hbcom.c
  * src/rtl/hbsocket.c
    ! fixed timeout checking in select()/poll()

  * src/rtl/hbsockhb.c
    ! fixed possible GPF trap when socket filter refuse to create new
      socket wrapper

  * include/hbinit.h
    * in GCC C++ builds for startup code use GCC constructor function
      attribute instead of static variable initialization to avoid
      warnings in new GCC versions

  * src/rtl/hbntos.c
    ! fixed missing '-' in result of negative integer numbers - thanks
      to Luigi Ferraris

  * src/common/hbstr.c
    + added code to round integer part when the size of number is greater
      then double precision (~16 digits).
2016-09-28 19:55:11 +02:00
Przemysław Czerpak
b00774f5c5 2016-04-29 16:25 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/filesys.c
  * src/rtl/hbcom.c
  * src/rtl/hbproces.c
  * src/rtl/hbsocket.c
    + added support for user build time macro HB_NO_POLL which disables
      poll() usage

  * src/rtl/hbsocket.c
    ! fixed bug which caused that structure passed to poll() had
      uninitialized events member.

  * include/hbclass.ch
    * disabled by default VO compatible object constructors:
         <className>{ <params,...> }
      If someone needs them then he should add:
         #define HB_VO_CONSTRUCTOR
      before:
         #include "hbclass.ch"

  * src/compiler/harbour.y
    * typo in comment
2016-04-29 16:25:28 +02:00
Przemysław Czerpak
7ab8ae631d 2016-04-08 14:30 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbsocket.ch
  * src/rtl/hbsocket.c
    + added support for high-priority/out-of-bound data in select()
      emulated by poll()
    + added macros for socket send()/recv() flags: HB_SOCKET_MSG_*

  * src/rtl/filesys.c
  * src/rtl/hbcom.c
  * src/rtl/hbproces.c
    * include <poll.h> when HB_HAS_POLL macro is set manually by user
      (thanks to Teo)

  * contrib/hbnetio/netiosrv.c
    * minor optimization
2016-04-08 14:30:05 +02:00
Przemysław Czerpak
2f1bf5ee72 2016-04-07 18:34 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/common/hbprintf.c
    * pacified warning

  * src/rtl/filesys.c
    ! return -1 instead of from hb_fsPipeIsData() when poll() detects
      error or end of stream - 0 should indicate timeout only.

  * src/rtl/hbcom.c
    ! fixed bad typo which blocked hb_comSend() in *nixes
      using select() instead of poll()

  * src/rtl/filesys.c
  * src/rtl/hbcom.c
  * src/rtl/hbproces.c
  * src/rtl/hbsocket.c
    ; updated #if/#else/#endif comments
2016-04-07 18:34:30 +02:00
Przemysław Czerpak
d2cfbe3d56 2016-04-06 15:18 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/common/hbstr.c
  * src/rtl/hbcom.c
  * src/rtl/hbproces.c
    * pacified few warnings - thanks to Viktor

  * contrib/sddfb/core.c
    ! fixed code which extracted float number from uninitialized memory.
      On some systems it could even cause GPF or other (ie. FPE) exception.
2016-04-06 15:18:50 +02:00
Przemysław Czerpak
97fd742f71 2016-04-06 13:11 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/hbproces.c
    ! fixed infinite loop due to ignored POLLHUP errors reported by poll()
    ! fixed stupid typo

  * src/rtl/hbproces.c
  * src/rtl/hbsocket.c
  * src/rtl/filesys.c
  * src/rtl/hbcom.c
    * emulate read access when poll() used instead of select() reports
      POLLHUP - this poll() behavior is neither consistent within a
      single implementation, nor between different versions of the same
      implementation, and certainly not across platforms
    % optimize read/write access using extended (in comparison to select())
      information reported by poll()
    ; TODO: emulate select() behavior for high priority data.
2016-04-06 13:11:20 +02:00
Przemysław Czerpak
5a2af0b426 2016-04-05 21:24 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/gttone.c
    ! use asm {} directive only in CLANG BCC builds - asm {} needs TASM
      so using it breaks Harbour compilation with free BorlandC command
      line tools which do not contain TASM.

  * src/rtl/hbsocket.c
  * src/rtl/hbproces.c
  * src/rtl/filesys.c
  * src/rtl/hbcom.c
    ! use poll() instead of select() in POSIX.1-2001 compliant *nix builds
      It fixes the problem with file handles >= 1024
      Please make tests in different *nix builds. It affects sockets, pipes
      and serial ports.
2016-04-05 21:24:05 +02:00
Przemysław Czerpak
682d8e32e3 2016-01-15 16:02 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbapifs.h
  * src/common/hbfsapi.c
    + added automatic file handle table resizing to hb_fsOS2DosOpenL()
    + added new C function: hb_fsOS2DosOpen() which is wrapper to DosOpen()
      with automatic file handle table resizing.
      Please remember that unlike hb_fsOS2DosOpenL() this function is
      pure wrapper to DosOpen() so it does not make file name conversions
      and does not set hb_fsError().

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

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

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

  ; Please test it in real OS2 environment
2016-01-15 16:02:45 +01:00
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
c559d7409b 2015-12-29 17:03 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
+ src/3rd/hbdossrl/Makefile
  + src/3rd/hbdossrl/serial.c
  + src/3rd/hbdossrl/serial.h
  + src/3rd/hbdossrl/README
    + added DOS Serial Library - it's much cleaner and simpler then COMLib
      we used so far in DOS builds. It also supports hardware and software
      flow control. Many thanks for Karl Stenerud for his wonderful job.

  * src/rtl/hbcom.c
    + added support for DOS Serial Library used as low level backend in
      Harbour DOS builds.

  * config/dos/djgpp.mk
  * config/dos/watcom.mk
  * config/dyn.mk
  * config/lib.mk
  * src/3rd/Makefile
  * src/Makefile
  * utils/hbmk2/hbmk2.hbp
  * utils/hbmk2/hbmk2.prg
    * use DOS Serial Library (hbdossrl) instead of COMLib (hbpmcom)
2015-12-29 17:03:40 +01:00
Przemysław Czerpak
2a743e15e1 2015-10-22 10:13 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/gtwvt/gtwvt.c
  * src/rtl/gtwvt/gtwvt.h
    * merged and simplified code for HB_GTI_ICONFILE and HB_GTI_ICONRES

  * src/rtl/hbcom.c
    * use "COM<n>:" instead of "COM<n>" as serial port name in WinCE
      builds - it's suggested by MSDN but if some of you has different
      experience then please inform me.
2015-10-22 10:13:39 +02:00
Przemysław Czerpak
004399c75d 2015-09-24 22:14 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/hbcom.c
  * src/rtl/gtcrs/gtcrs.c
  * src/rtl/gtpca/gtpca.c
  * src/rtl/gtstd/gtstd.c
  * src/rtl/gttrm/gttrm.c
    * added workaround for bug in some Linux kernels (i.e.
      3.13.0-64-generic Ubuntu) in which select() unconditionally
      accepts terminal device for reading if c_cc[ VMIN ] = 0
      It's very serious problem, i.e. in GTTRM no input is possible
      in such kernels without this workaround.

  * src/rtl/dirscan.prg
    * modified hb_DirScan() and hb_DirRemoveAll() to work with Harbour
      File IO API (hb_vf*() functions)
    + added new PRG function:
         hb_FileDelete( <cFileMask> [, <cAttr> ] ) -> <lResult>
      this function removes files which match given <cFileMask>
      (it may contain path) and returns .T. if at least one file
      was deleted. Optional <cAttr> parameter can be used to include
      system ("S") and hidden ("H") files. If <cAttr> contains "R"
      letter then before deleting READONLY attribute is removed from
      files (it's necessary to remove files with READONLY attribute
      in systems like DOS, MS-Windows or OS2). This function uses
      Harbour File IO API (hb_vf*() functions)
    * remove READONLY attribute from files in hb_DirRemoveAll()

 * include/harbour.hbx
    + added hb_DirRemoveAll() and hb_FileDelete()

  * contrib/hbct/files.c
    ! do not allow to remove empty directories by FileDelete() function
      even if user explicitly sets directory attribute - CT3 compatible fix.
    ! remove READONLY attribute before deleting READONLY files if 2-nd
      parameter of FileDelete() contains READONLY bit

  * src/rtl/filesys.c
    * formatting

  * ChangeLog.txt
    ! typo
2015-09-24 22:14:14 +02:00
Przemysław Czerpak
b2b672222e 2014-10-05 16:40 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/3rd/tiff/tiff.dif
  * src/3rd/tiff/tiffconf.h
    * do not redefine O_* macros in all *nix builds

  * src/compiler/harbour.yyc
  * src/compiler/harbour.yyh
  * src/macro/macro.yyc
  * src/macro/macro.yyh
    * regenerated with bison 3.0.2.

  * src/rtl/hbcom.c
    ! fixed compilation with OpenWatcom for Linux

  * src/rtl/hbsocket.c
    * pacified warning in OpenWatcom Linux builds

  * src/rtl/hbjson.c
    * own code for conversion integer numbers
2014-10-05 16:40:18 +02: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
9a636d9711 2014-01-09 20:04 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/hbct/ctcom1.c
    ! fixed typo reported by Rolf

  * src/rtl/hbcom.c
    + added support for 1000000 baudrate setting in *nix builds covered
      by B1000000 macro
2014-01-09 20:04:56 +01:00
Przemysław Czerpak
877ddb4a06 2013-04-18 14:58 UTC+0200 Przemysław Czerpak (druzus/at/poczta.onet.pl)
* .gitignore
    ! removed executable file permission

  * package/mpkg_src.sh
    ! added executable file permission

  * contrib/hbct/screen2.c
    % use STR API for parameters instead of using local conversions

  * contrib/hbct/token1.c
    % small simplification

  * contrib/hbnetio/netiosrv.c
    + respect timeout parameter also in send operation

  * contrib/make.hb
    ! moved project name normalization and directory verification to
      AddProject() function. It fixes HB_BUILD_ADDONS envvar functionality.

  * doc/xhb-diff.txt
    + added new paragraph: DECLARATION AND INITIALIZATION OF VARIABLES

  * src/rtl/hbcom.c
    * added 3-rd parameter to TIOCEXCL and TIOCNXCL ioctl() codes
      to pacify valgrind warnings

  * include/hbexpra.c
    ! fixed compilation with HB_USE_ENUM_FUNCTIONS macro

  * include/hbapicls.h
  * include/hbcompdf.h
  * include/hbexpra.c
  * src/compiler/harbour.y
  * src/vm/classes.c
    + added support for :__enumIsFirst() iterator message. It's opposite
      to recently added :__enumIsLast()
    + added support for overloading :__enumIsFirst() and :__enumIsLast()
      functionality in custom FOR EACH implementations

  * include/hbcompdf.h
  * include/hbexpra.c
  * src/compiler/harbour.y
    + added support for reverting :__enumIsFirst() and :__enumIsLast()
      messages in descendant FOR EACH loops. It's disabled now by 2 #if 0
      but I think it should be discussed. Should we keep it enable it?
      The answer is not trivial when FOR EACH is used to iterate some
      objects. In general such names are confusing.

  * src/compiler/harbour.yyc
  * src/compiler/harbour.yyh
    * regenerated using bison 2.5

  * tests/foreach.prg
    + added :__enumIsFirst() to test code

  * tests/foreach2.prg
    ! typo in comment
2013-04-18 14:58:40 +02:00
vszakats
9687850865 2013-03-16 02:10 UTC+0100 Viktor Szakats (harbour syenar.net)
* (all files)
    * stripped svn header
    * minor cleanups
    ; use following command to find out the history of files:
       git log
       git log --follow
       git blame
       git annotate
2013-03-16 02:11:42 +01:00
vszakats
a4a357a18b 2013-03-15 11:12 UTC+0100 Viktor Szakats (harbour syenar.net)
* /harbour/* -> /*
    * moved whole Harbour source tree one level up to
      avoid single 'harbour' top dir
2013-03-15 11:13:30 +01:00