* *
* 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.
* *
% remove brandings and homepage from copyright header. Pass 3 - manual.
* project homepage and name is described in README, amongst others
; this should make the diff between 3.4 and 3.2 easier to manage
* *
% 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
* include/harbour.hbx
* src/rtl/hbdef.c
+ added new PRG function hb_defaultValue(). It's similar to hb_default()
but it returns expected value instead of setting 1-st parameter.
New function can be used to replace code like:
hb_default( @lParam, .T. )
IF lParam
[...]
ENDIF
with:
IF hb_defaultValue( lParam, .T. )
[...]
ENDIF
It's useful for two main reasons:
1) we do not damage original parameter value
2) if parameter is used only once then it's a little bit faster
* contrib/hbfship/stroccur.prg
! do not generate error when wrong parameters are passed to StrOccurs()
function (FS compatible behavior)
! set default value of 3-rd parameter in StrOccurs() to .T. only if it's not
passed at all, otherwise set it to .F. (FS compatible behavior)
% small simplification
* src/compiler/hbmain.c
! extended code which resolves conflicts with multiple static
functions with the same name compiled from different PRG modules
into single object file to resolve conflicts also with external
function calls. It should fix problem reported by Viktor.
* contrib/hbfship/hbfship.hbp
* contrib/hbfship/hbfship.hbx
+ contrib/hbfship/stroccur.prg
+ added undocumented FlagShip function:
StrOccurs( <cSub>, <cStr>, [<lAny>] ) -> <nCount>
It returns the number of occurrences of <cSub> string in <cStr>
If <lAny> is true (default) then it accepts any possible substring
posittions otherwise (lAny == .F.) substrings cannot occupy common
characters from <cStr>, i.e.
StrOccurs( "aa", "aaaa", .T. ) => 3
StrOccurs( "aa", "aaaa", .F. ) => 2
* contrib/hbfoxpro/hbfoxpro.hbp
* contrib/hbfoxpro/hbfoxpro.hbx
+ contrib/hbfoxpro/dbfunc.c
+ added FoxPro compatible database functions:
Filter(), Ndx(), Relation(), FSize(), __fox_Used(), __fox_Seek()
* contrib/hbfoxpro/hbfoxpro.hbp
* contrib/hbfoxpro/hbfoxpro.hbx
+ contrib/hbfoxpro/miscfunc.c
+ added few functions which can be directly translated to Harbour ones:
Parameters() => PCount()
SRows() => MaxRow()
SCols() => MaxCol()
VarRead() => ReadVar()
PrintStatus() => IsPrinter()
Key() => InedxKey()
* contrib/hbfoxpro/hbfoxpro.hbx
* contrib/hbfoxpro/misc.prg
+ added few new actions to Sys() function
+ added AElement(), Occurs() and InsMode() functions
* contrib/hbfoxpro/hbfoxpro.ch
+ added PP rules for few FoxPro commands and standard functions with
aliases, i.e.
SEEK <exp> TAG <tag> IN <wa>
lUsed := USED( <wa> )
nRecordsInWA := RECCOUNT( <wa> )
+ added PP rules for SCAN / ENDSCAN
+ added few other commands
; Please verify me. I'm not [V]FP user and I cannot check what [V]FP
exactly does. It's possible that I missed something or wrongly
understood.
; Special thanks to Alex Antypenko. I took information about [V]FP
functions and syntax analyzing his code.
* contrib/hbfship/hbfship.hbx
! removed FIELDDECI() reenabled by mistake during one of
internal merges
* src/rdd/dbfcdx/dbfcdx1.c
* accept headers with KEY and FOR expression lengths without
offset fields.
* tests/video.prg
! fixed CLIP and xHarbour compilation
+ added support for testing UTF8 screen output
(non empty 1-st parameter) and HB_GTI_COMPATBUFFER (non empty
second parameter)
- contrib/hbfship/flddeci.c
* contrib/hbfship/hbfship.hbp
- removed FieldDeci() function. Function with the same name and
functionality exists in HBCT.
* config/postinst.hb
! typo in my previous commit
* ChangeLog.txt
! UTF8 BOM, indenting and trailing line spaces in one of recent commits
* (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