Changes to ETM distribution for release 1.06. Most important: Function names are actually defined as the name with a trailing underscore. This causes failure at link time as a reminder that etm.h wasn't included in source file in which it was needed. Because of this, libraries that use etm should be recompiled and reinstalled, or programs using those libraries will get "undefined symbol" errors for ETM function names. Added ETMProcRetType and ETMProcPtr abstract types to decrease readability of source code and scare potential users off. The built-in types underlying these are configured at build time to help portability to systems without void or void* type. Note that this does NOT change the interface in any way for current users, since anyone using previous releases must have already had void, and that is still the default underlying type. Bug fix: Added test for printing recursion in PrintMsg, so that if a function is registered as the print function and itself calls ETMMsg() or ETMPanic(), the (infinite) recursion is detected. Uses stdargs instead of varargs if present. (Actually, this is only true for ANSI and for THINK C at the moment; the configuration files need some work to select this automatically for other systems.) I finally changed the routine names I was sick of to ones that seem more descriptive (if unforunately even longer in some cases): ETMShutdownRegister() -> ETMAddShutdownProc() ETMShutdownDeregister() -> ETMRemoveShutdownProc() ETMSignalRegister() -> ETMSetSignalProc() ETMPrintRegister() -> ETMSetPrintProc() ETMStatusRegister() -> ETMSetExitStatus() This *does* change the user interface. Backward compatibility #defines for the old names are present in etm.h so that programs written for earlier ETM releases should still compile. These will disappear at some later date, however. Added routines ETMGetSignalProc(), ETMGetPrintProc() and ETMGetExitStatus() to make it easier for programs that want to temporarily replace any of these to do so, and then restore them to what they were. Added ETMSetAbort() function to allow core dump generation by ETMPanic(). Can be useful for debugging. ETMGetAbort() returns current setting. Before compiling, it would be useful to examine ProjectGroup.ptmpl and see if the setting of AbortSignal is correct for your system. If not, create a *.pcf file and override the default. Run "etmtest 6" to see if you get a core dump properly or not. Fixed some portability problems relating to compiling under Mips RISC/os in System V environment. etm.h now idempotent; may be included more than once safely. Documentation changes were made to reflect the modifications above.