Index: generic/nsfError.c =================================================================== diff -u -r2ba521e3dfbb1294908b51ed8e13dab5adc3ca03 -r24724ebae83af4e0104b349a2fb582bfc71a7475 --- generic/nsfError.c (.../nsfError.c) (revision 2ba521e3dfbb1294908b51ed8e13dab5adc3ca03) +++ generic/nsfError.c (.../nsfError.c) (revision 24724ebae83af4e0104b349a2fb582bfc71a7475) @@ -222,7 +222,8 @@ * * NsfUnexpectedArgumentError -- * - * Produce a unexpecte argument number (most likely, too many arguments) + * Produce an error message about an unexpected argument (most likely, + * too many arguments) * * Results: * TCL_ERROR @@ -250,6 +251,49 @@ /* *---------------------------------------------------------------------- * + * NsfUnexpectedNonposArgumentError -- + * + * Produce a unexpecte argument number (most likely, too many arguments) + * + * Results: + * TCL_ERROR + * + * Side effects: + * Sets the result message. + * + *---------------------------------------------------------------------- + */ +extern int +NsfUnexpectedNonposArgumentError(Tcl_Interp *interp, + CONST char *argumentString, + Nsf_Object *object, + Nsf_Param CONST *currentParamPtr, + Nsf_Param CONST *paramPtr, + Tcl_Obj *procNameObj) { + Tcl_DString ds, *dsPtr = &ds; + Nsf_Param CONST *pPtr; + + DSTRING_INIT(dsPtr); + Tcl_DStringAppend(dsPtr, "Invalid non-positional argument '", -1); + Tcl_DStringAppend(dsPtr, argumentString, -1); + Tcl_DStringAppend(dsPtr, "', valid are : ", -1); + for (pPtr = currentParamPtr; pPtr->name && *pPtr->name == '-'; pPtr ++) { + Tcl_DStringAppend(dsPtr, pPtr->name, -1); + Tcl_DStringAppend(dsPtr, ", ", -1); + } + Tcl_DStringTrunc(dsPtr, Tcl_DStringLength(dsPtr) - 2); + Tcl_DStringAppend(dsPtr, ";\n", 2); + + NsfArgumentError(interp, Tcl_DStringValue(dsPtr), paramPtr, + object ? object->cmdName : NULL, + procNameObj); + DSTRING_FREE(dsPtr); + return TCL_ERROR; +} + +/* + *---------------------------------------------------------------------- + * * NsfDispatchClientDataError -- * * Produce a error message when method was not dispatched on an object