Index: TODO =================================================================== diff -u -N -raa5b3f4293624fedf641985718ab15c82f5daf78 -r8e079b542dd68c7975117266efba2b4701909ce9 --- TODO (.../TODO) (revision aa5b3f4293624fedf641985718ab15c82f5daf78) +++ TODO (.../TODO) (revision 8e079b542dd68c7975117266efba2b4701909ce9) @@ -5820,8 +5820,19 @@ code generator changes: - create enum types instead of enum values for nsf API - use enum types in code + +- improve variable for logging from "debugLevel" to "logSeverity" + (print logging messages which have a severity larger equal the then given value; + so; "nsf::configure debugLevel 0" will print everything, and + "nsf::configure debugLevel 3" will print just error messages and omit warnings etc.) +- this is not a change in sematics, but removes some confusion in the code. + therefore the configure name was not changed +- Remove 2 occurances of deprecated Tcl Call Tcl_AppendResult() in nsfStubLib + ======================================================================== TODO: +- maybe add "nsf::configure logSeverity" as a new name for "debugLevel" + and mark the latter as deprecated. - Shouldn't we add debug/deprecated filters for "info methods", i.e.: ... info methods ?-debug? ?-deprecated? ?-callprotection all|public|protected|private? ?-closure? ?-type all|scripted|builtin|alias|forwarder|object|setter|nsfproc? ?-path? ?-source all|application|system? ?/pattern/?" Index: generic/nsf.c =================================================================== diff -u -N -r4ff9a500da01c6c0bb361cfba9a99b5b81cca310 -r8e079b542dd68c7975117266efba2b4701909ce9 --- generic/nsf.c (.../nsf.c) (revision 4ff9a500da01c6c0bb361cfba9a99b5b81cca310) +++ generic/nsf.c (.../nsf.c) (revision 8e079b542dd68c7975117266efba2b4701909ce9) @@ -595,7 +595,7 @@ nonnull_assert(interp != NULL); nonnull_assert(fmt != NULL); - if (RUNTIME_STATE(interp)->debugLevel >= requiredLevel) { + if (requiredLevel >= RUNTIME_STATE(interp)->logSeverity) { Tcl_DString cmdString, ds; const char *level; va_list ap; @@ -14469,7 +14469,7 @@ } else { result = TCL_OK; #if defined(NSF_WITH_VALUE_WARNINGS) - if (RUNTIME_STATE(interp)->debugLevel > 0) { + if (RUNTIME_STATE(interp)->logSeverity == NSF_LOG_DEBUG) { const char *value = ObjStr(objPtr); if (unlikely(*value == '-' && (pPtr->flags & NSF_ARG_CHECK_NONPOS) != 0u @@ -24760,17 +24760,17 @@ } if (configureoption == ConfigureoptionDebugIdx) { - int level; if (valueObj != NULL) { - int result = Tcl_GetIntFromObj(interp, valueObj, &level); + int level, result = Tcl_GetIntFromObj(interp, valueObj, &level); + if (unlikely(result != TCL_OK)) { return result; } - RUNTIME_STATE(interp)->debugLevel = level; + RUNTIME_STATE(interp)->logSeverity = level; } Tcl_SetIntObj(Tcl_GetObjResult(interp), - RUNTIME_STATE(interp)->debugLevel); + RUNTIME_STATE(interp)->logSeverity); return TCL_OK; } @@ -32016,6 +32016,7 @@ NsfProfileInit(interp); #endif rst = RUNTIME_STATE(interp); + rst->logSeverity = NSF_LOG_NOTICE; rst->doFilters = 1; rst->doCheckResults = 1; rst->doCheckArguments = NSF_ARGPARSE_CHECK; Index: generic/nsf.h =================================================================== diff -u -N -r34c49c5a5b485d039577e9b915bde84f8ff35eb0 -r8e079b542dd68c7975117266efba2b4701909ce9 --- generic/nsf.h (.../nsf.h) (revision 34c49c5a5b485d039577e9b915bde84f8ff35eb0) +++ generic/nsf.h (.../nsf.h) (revision 8e079b542dd68c7975117266efba2b4701909ce9) @@ -420,11 +420,12 @@ NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(4) NSF_nonnull(5) NSF_nonnull(6); /* - * logging + * logging severities */ -#define NSF_LOG_WARN 2 +#define NSF_LOG_ERROR 3 +#define NSF_LOG_WARN 2 #define NSF_LOG_NOTICE 1 -#define NSF_LOG_DEBUG 0 +#define NSF_LOG_DEBUG 0 EXTERN void NsfLog(Tcl_Interp *interp, int requiredLevel, CONST char *fmt, ...) Index: generic/nsfInt.h =================================================================== diff -u -N -r75ac8b23b5aca02319f4dda1678082c0334bedc4 -r8e079b542dd68c7975117266efba2b4701909ce9 --- generic/nsfInt.h (.../nsfInt.h) (revision 75ac8b23b5aca02319f4dda1678082c0334bedc4) +++ generic/nsfInt.h (.../nsfInt.h) (revision 8e079b542dd68c7975117266efba2b4701909ce9) @@ -934,7 +934,7 @@ * bitarray, but we have only one state per interp, so the win on * memory is very little. */ - int debugLevel; + int logSeverity; int debugCallingDepth; int doCheckArguments; int doCheckResults; Index: generic/nsfPointer.c =================================================================== diff -u -N -r8eecbe5b3a2640ba1d3e1dc6dc5e9cec0c2a26ba -r8e079b542dd68c7975117266efba2b4701909ce9 --- generic/nsfPointer.c (.../nsfPointer.c) (revision 8eecbe5b3a2640ba1d3e1dc6dc5e9cec0c2a26ba) +++ generic/nsfPointer.c (.../nsfPointer.c) (revision 8e079b542dd68c7975117266efba2b4701909ce9) @@ -386,7 +386,7 @@ NsfMutexLock(&pointerMutex); if (--pointerTableRefCount == 0) { - if (RUNTIME_STATE(interp)->debugLevel >= 2) { + if (RUNTIME_STATE(interp)->logSeverity == NSF_LOG_DEBUG) { Tcl_HashSearch hSrch; const Tcl_HashEntry *hPtr; Index: generic/nsfStack.c =================================================================== diff -u -N -r8eecbe5b3a2640ba1d3e1dc6dc5e9cec0c2a26ba -r8e079b542dd68c7975117266efba2b4701909ce9 --- generic/nsfStack.c (.../nsfStack.c) (revision 8eecbe5b3a2640ba1d3e1dc6dc5e9cec0c2a26ba) +++ generic/nsfStack.c (.../nsfStack.c) (revision 8e079b542dd68c7975117266efba2b4701909ce9) @@ -1006,7 +1006,7 @@ nonnull_assert(interp != NULL); - if (RUNTIME_STATE(interp)->debugLevel > 2) { + if (RUNTIME_STATE(interp)->logSeverity == NSF_LOG_DEBUG) { NsfShowStack(interp); } @@ -1051,7 +1051,7 @@ nextCscPtr = (unstackedEntries != NULL) ? unstackedEntries->nextPtr : NULL; } - if (count>0 && RUNTIME_STATE(interp)->debugLevel > 0) { + if (count>0 && RUNTIME_STATE(interp)->logSeverity > 0) { fprintf(stderr, "+++ unwind removed %d unstacked csc entries\n", count); } } Index: generic/nsfStubLib.c =================================================================== diff -u -N -rdbd95b0155c23213b81125e318b0691cb75f66f5 -r8e079b542dd68c7975117266efba2b4701909ce9 --- generic/nsfStubLib.c (.../nsfStubLib.c) (revision dbd95b0155c23213b81125e318b0691cb75f66f5) +++ generic/nsfStubLib.c (.../nsfStubLib.c) (revision 8e079b542dd68c7975117266efba2b4701909ce9) @@ -108,9 +108,8 @@ version, exact, actualVersion, clientData);*/ if (clientData == NULL) { - Tcl_ResetResult(interp); - Tcl_AppendResult(interp, "Error loading package ", packageName, - ": package not present or incomplete", NULL); + NsfPrintError(interp, "Error loading package %s: " + "package not present or incomplete", packageName); return NULL; } else { CONST86 NsfStubs * const stubsPtr = clientData; @@ -125,9 +124,9 @@ static char *errMsg = "missing stubInt table pointer"; Tcl_ResetResult(interp); - Tcl_AppendResult(interp, "Error loading package", packageName, - ": (requested version '", version, "', loaded version '", - actualVersion, "'): ", errMsg, NULL); + NsfPrintError(interp, "Error loading package %s: " + "(requested version '%s', loaded version '%s'): %s", + packageName, version, actualVersion, errMsg); return NULL; }