rem: } opt;
add: } _nsmayalias opt;
context: NsTclLogCtlObjCmd(ClientData arg, Tcl_Interp *interp, int objc,	       Tcl_Obj *CONST objv[]){    int len;    LogCache *cachePtr;    static CONST char *opts[] = {	"hold",	"count",	"get",	"peek",	"flush",	"release",	"truncate",	NULL    };    enum {	CHoldIdx,	CCountIdx,	CGetIdx,	CPeekIdx,	CFlushIdx,	CReleaseIdx,	CTruncIdx    } opt;    if (objc < 2) {        Tcl_WrongNumArgs(interp, 1, objv, "option ?arg?");    	return TCL_ERROR;    }    if (Tcl_GetIndexFromObj(interp, objv[1], opts, "option", 0,			    (int *) &opt) != TCL_OK) {	return TCL_ERROR;    }    cachePtr = LogGetCache();    switch (opt) {    case CHoldIdx:	cachePtr->hold = 1;	break;    case CPeekIdx:	Tcl_SetResult(interp, cachePtr->buffer.string, TCL_VOLATILE);	break;    case CGetIdx:	Tcl_SetResult(interp, cachePtr->buffer.string, TCL_VOLATILE);	Ns_DStringFree(&cachePtr->buffer);        cachePtr->count = 0;	break;    case CReleaseIdx:	cachePtr->hold = 0;	/* FALLTHROUGH */    case CFlushIdx:	LogFlush(cachePtr);        cachePtr->count = 0;	break;    case CCountIdx:	Tcl_SetIntObj(Tcl_GetObjResult(interp), cachePtr->count);	break;    case CTruncIdx:	len = 0;	if (objc > 2 && Tcl_GetIntFromObj(interp, objv[2], &len) != TCL_OK) {	    return TCL_ERROR;	}	Ns_DStringTrunc(&cachePtr->buffer, len);	break;    }    return TCL_OK;}