* master: (226 commits)
ioc/db: testdbGetFieldEqual() detect zero size
Cleanup in asLib
Allow whitespace before comments in AS config files
Supress MS warning C4251
Add a plan to std/filters/test/syncTest.c
Fix dbUnitTest.c
avoid void* +=
Fix and test for macLib losing error status
update notes
libCom/test: ipAddrToAsciiTest skip cleanup unless valgrind is possible
libCom/test: add ipAddrToAsciiTest to testHarness
db/test: dbPutGetTest check dbGet() of long string field
db: dbGet() ensure long string nil and actual string length
db/test: dbPutGetTest check for dbGet() attribute crash
db: fix dbGet() for attributes as long string
db/test: dbPutGetTest add test for lp:1678494
db: fix dbGet() of link fields as DBF_CHAR
dbUnitTest: add testdbGetArrFieldEqual()
db/test: add dbPutGetTest
Update release notes as per Michael's review comment
...
Conflicts:
src/ioc/db/dbLink.c
src/ioc/db/test/Makefile
src/std/dev/devSoSoftCallback.c
src/std/rec/boRecord.c
src/std/rec/dfanoutRecord.c
src/std/rec/longinRecord.c
src/std/rec/longoutRecord.c
Some VxWorks BSPs close the stderr stream that the shell running
the startup script created and open a new one for the interactive
shell. This change makes pvtData.console==NULL mean use stderr
instead of storing the stderr value in pvtData.console at init.
Introduced error status values for epicsTime routines.
The epicsTimeERROR identifier no longer exists, so code that uses it will
no longer compile (deliberately). Replace all uses of it with a specific
error status value.
Adds new routines for converting numeric strings into the
standard epicsInt8, epicsUInt8, epicsInt16, epicsUInt16,
epicsInt32 and epicsUInt32 types, along with Long, ULong,
Double and Float. These all provide error checking and
detection of extraneous characters. The epicsScanDouble
and epicsScanFloat routines originally in epicsStdlib.h
are replaced by macros that call the epicsParse routine,
and this also provides epicsScanLong and epicsScanULong
to match.
A test file is added to ensure conversions work properly
and report appropriate errors. This file also checks the
native strtod() routine if not used to check whether the
epicsStrtod() code is required on this platform.
A rare race during shutdown. The contenders are the log thread
coming out of its loop and calling errlogCleanup(), and the
exitHandler signaling waitForWork.
This solution is to move cleanup completely into exitHandler,
which already waits for the log thread to exit.
Systems that generate large numbers of errlog messages or have a slow
message listener could overwrite older messages in the message buffer
after the buffer wraps. This also corrects and annotates the test
code to describe what's being checked.
Build lexer and parser from libCom/Makefile.
Since libCom now includes asLib.c and asLib_lex.c we must build
antelope and flex without linking them to Com. This works because
they only need epicsTempFile anyway. However make doesn't like a
subdirectory with the same name as a target object, so the antelope
source directory is now called yacc. The two main.c files were also
renamed to avoid other build problems.
Merge asHost into Com and remove mentions in CONFIG_BASE
Lots of noise since SRCS must be renamed to Com_SRCS
The new Makefile fragments in the subdirectories are incomplete and will
not work individually. Build rules are placed in a separate RULES file.
This approach keeps the instructions for building each file local and
easier to find than in a large Makefile in the parent directory.
Each SRC_DIR gets its own Makefile fragment, and where it needs
private build rules a RULES files.
If this pattern gets used elsewhere we could automate the include
lines (search $(SRC_DIRS) for Makefiles and RULES files?).
Don't use epicsMutexMustLock() in msgbufGetFree().
When we're shutting down, the pvtData.msgQueueLock gets destroyed.
This makes msgbufGetFree() return NULL if the lock is dead.
The epicsMutexMustLock() routine asserts(), which recurses...
Michael Davidsaver pointed out that the original algorithm used is
dumb, it can't reuse empty space at the beginning until all messages
have been drained. This new version can, and is more efficient.
errPrintf() was adding a newline when writing to the err log buffer,
but not when printing to the screen. This results in the error
message running together with the next line. Added a newline to the
stderr output.