From: Vlad S. <ser...@us...> - 2006-04-18 21:49:45
|
Update of /cvsroot/naviserver/naviserver/nsd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3528a/nsd Modified Files: tclcmds.c tclinit.c Log Message: Remove ns_tls implementation from the core Index: tclcmds.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/tclcmds.c,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** tclcmds.c 15 Apr 2006 21:48:50 -0000 1.38 --- tclcmds.c 18 Apr 2006 21:49:42 -0000 1.39 *************** *** 91,95 **** NsTclDeleteCookieObjCmd, NsTclDummyObjCmd, - NsTclTlsObjCmd, NsTclEnvObjCmd, NsTclFTruncateObjCmd, --- 91,94 ---- *************** *** 266,270 **** {"ns_charsets", NsTclCharsetsCmd, NULL}, {"ns_cleanup", NULL, NsTclDummyObjCmd}, - {"ns_tls", NULL, NsTclTlsObjCmd}, {"ns_config", NsTclConfigCmd, NULL}, {"ns_configsection", NsTclConfigSectionCmd, NULL}, --- 265,268 ---- Index: tclinit.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/tclinit.c,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** tclinit.c 18 Apr 2006 19:35:05 -0000 1.19 --- tclinit.c 18 Apr 2006 21:49:42 -0000 1.20 *************** *** 97,101 **** static Ns_Tls tls; /* Slot for per-thread Tcl interp cache. */ - static Ns_Tls tlsTcl; /* Tls for per-thread Tcl API. */ --- 97,100 ---- *************** *** 1663,1773 **** } } - - /* - *---------------------------------------------------------------------- - * - * NsTclTlsObjCmd -- - * - * Implements ns_tls command to access thread specific storage - * - * Results: - * TCL_OK. - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ - - int - NsTclTlsObjCmd(ClientData arg, Tcl_Interp *interp, int objc, Tcl_Obj **objv) - { - int opt; - Ns_DString ds; - Ns_Set *setPtr; - char *dflt = NULL; - - static CONST char *opts[] = { - "set", "get", "array", "clear", - NULL - }; - enum { - ISetIdx, IGetIdx, IArrayIdx, IClearIdx, - }; - - if (objc < 2) { - Tcl_WrongNumArgs(interp, 1, objv, "option ?arg?"); - return TCL_ERROR; - } - if (Tcl_GetIndexFromObj(interp, objv[1], opts, "option", 0, &opt) != TCL_OK) { - return TCL_ERROR; - } - setPtr = Ns_TlsGet(&tlsTcl); - if (setPtr == NULL) { - setPtr = Ns_SetCreate(NULL); - Ns_TlsSet(&tlsTcl, setPtr); - } - switch (opt) { - case ISetIdx: - if (objc < 4) { - Tcl_WrongNumArgs(interp, 2, objv, "key value ..."); - return TCL_ERROR; - } - for (opt = 2; opt < objc - 1; opt += 2) { - Ns_SetPut(setPtr, Tcl_GetString(objv[opt]), Tcl_GetString(objv[opt+1])); - } - break; - - case IGetIdx: - if (objc < 3) { - Tcl_WrongNumArgs(interp, 2, objv, "key ?dflt?"); - return TCL_ERROR; - } - if (objc > 3) { - dflt = Tcl_GetString(objv[3]); - } - Tcl_SetResult(interp, Ns_SetIGetValue(setPtr, Tcl_GetString(objv[2]), dflt), TCL_VOLATILE); - break; - - case IArrayIdx: - Tcl_DStringInit(&ds); - for (opt = 0; opt < Ns_SetSize(setPtr); ++opt) { - Tcl_DStringAppendElement(&ds, Ns_SetKey(setPtr, opt)); - Tcl_DStringAppendElement(&ds, Ns_SetValue(setPtr, opt)); - } - Tcl_DStringResult(interp, &ds); - break; - - case IClearIdx: - Ns_SetFree(setPtr); - Ns_TlsSet(&tlsTcl, NULL); - break; - } - return TCL_OK; - } - - /* - *---------------------------------------------------------------------- - * - * DeleteTlsTcl -- - * - * Delete all thread specific storage - * - * Results: - * None. - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ - - static void - DeleteTlsTcl(void *arg) - { - Ns_Set *setPtr = arg; - - if (setPtr) { - Ns_SetFree(setPtr); - } - } --- 1662,1663 ---- |