From: Stephen D. <sd...@us...> - 2005-07-12 07:31:50
|
Update of /cvsroot/naviserver/naviserver/nsd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20670/nsd Modified Files: Makefile adprequest.c connio.c nsd.h nsmain.c proc.c queue.c tclcmds.c tclinit.c tclmisc.c tclset.c tclshare.c tclthread.c Removed Files: tclatclose.c Log Message: 2005-07-11 Stephen Deasey <sd...@us...> * include/ns.h: * nsd/nsd.h: * nsd/nsmain.c: * nsd/queue.c: * nsd/tclcmds.c: * nsd/proc.c: * nsd/tclinit.c: Add generalised interp tracing mechanism which replaces Ns_TclInitInterps, Ns_TclRegisterDeferred etc. Restructured code for clarity. * nsd/tclset.c: * nsd/tclshare.c: * nsd/tclthread.c: * nsd/adprequest.c: s/NsGetInterp/NsGetInterpData/g * nsd/Makefile: * nsd/connio.c: * nsd/tclatclose.c: Moved at-close traces into tclinit.c. * nsd/tclmisc.c: Move Ns_TclPrintfResult into misc. * nsdb/db.h: * nsdb/nsdb.h: * nslog/nslog.c: * nsperm/nsperm.c: Remove usage of deprecated functions. Index: tclmisc.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/tclmisc.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** tclmisc.c 13 Jun 2005 06:14:26 -0000 1.9 --- tclmisc.c 12 Jul 2005 07:31:39 -0000 1.10 *************** *** 49,52 **** --- 49,82 ---- *---------------------------------------------------------------------- * + * Ns_TclPrintfResult -- + * + * Leave a formatted message in the given Tcl interps result. + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + + void + Ns_TclPrintfResult(Tcl_Interp *interp, char *fmt, ...) + { + va_list ap; + Tcl_DString ds; + + Tcl_DStringInit(&ds); + va_start(ap, fmt); + Ns_DStringVPrintf(&ds, fmt, ap); + va_end(ap); + Tcl_DStringResult(interp, &ds); + } + + + /* + *---------------------------------------------------------------------- + * * NsTclStripHtmlCmd -- * Index: tclinit.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/tclinit.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** tclinit.c 7 Jul 2005 03:31:02 -0000 1.8 --- tclinit.c 12 Jul 2005 07:31:39 -0000 1.9 *************** *** 31,35 **** * tclinit.c -- * ! * Initialization routines for Tcl. */ --- 31,35 ---- * tclinit.c -- * ! * Initialization and resource management routines for Tcl. */ [...2911 lines suppressed...] } --- 1661,1678 ---- static void ! RunTraces(NsInterp *itPtr, int why) { Trace *tracePtr; if (itPtr->servPtr != NULL) { ! tracePtr = itPtr->servPtr->tcl.firstTracePtr; ! while (tracePtr != NULL) { ! if ((tracePtr->when & why)) { ! if ((*tracePtr->proc)(itPtr->interp, tracePtr->arg) != TCL_OK) { ! Ns_TclLogError(itPtr->interp); ! } ! } ! tracePtr = tracePtr->nextPtr; ! } } } Index: nsd.h =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/nsd.h,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** nsd.h 8 Jul 2005 15:38:27 -0000 1.21 --- nsd.h 12 Jul 2005 07:31:39 -0000 1.22 *************** *** 469,473 **** Ns_Time startTime; ! Tcl_Interp *interp; Tcl_Encoding encoding; --- 469,473 ---- Ns_Time startTime; ! struct NsInterp *itPtr; Tcl_Encoding encoding; *************** *** 641,645 **** struct { char *library; ! struct Trace *traces[4]; char *initfile; Ns_RWLock lock; --- 641,645 ---- struct { char *library; ! struct Trace *firstTracePtr; char *initfile; Ns_RWLock lock; *************** *** 860,866 **** extern NsServer *NsGetServer(CONST char *server); extern NsServer *NsGetInitServer(void); ! extern NsInterp *NsGetInterp(Tcl_Interp *interp); extern int NsInitInterp(Tcl_Interp *interp, NsServer *servPtr, ! NsInterp **itPtrPtr); extern Ns_OpProc NsFastGet; --- 860,869 ---- extern NsServer *NsGetServer(CONST char *server); extern NsServer *NsGetInitServer(void); ! extern NsInterp *NsGetInterpData(Tcl_Interp *interp) NS_GNUC_NONNULL(1); extern int NsInitInterp(Tcl_Interp *interp, NsServer *servPtr, ! NsInterp **itPtrPtr) ! NS_GNUC_NONNULL(1); ! extern void NsFreeConnInterp(Conn *connPtr) ! NS_GNUC_NONNULL(1); extern Ns_OpProc NsFastGet; *************** *** 870,875 **** extern void NsFreeAdp(NsInterp *itPtr); ! extern void NsFreeAtClose(NsInterp *itPtr); ! extern void NsRunAtClose(Tcl_Interp *interp); extern int NsUrlToFile(Ns_DString *dsPtr, NsServer *servPtr, char *url); --- 873,878 ---- extern void NsFreeAdp(NsInterp *itPtr); ! extern void NsTclRunAtClose(NsInterp *itPtr) ! NS_GNUC_NONNULL(1); extern int NsUrlToFile(Ns_DString *dsPtr, NsServer *servPtr, char *url); *************** *** 895,898 **** --- 898,902 ---- extern Ns_OpProc NsAdpRequest; extern Ns_ArgProc NsTclRequestArgProc; + extern Ns_TclTraceProc NsTclTraceProc; extern void NsGetCallbacks(Tcl_DString *dsPtr); *************** *** 945,955 **** extern void NsWaitJobsShutdown(Ns_Time *toPtr); ! extern void NsTclInitServer(char *server); extern void NsLoadModules(char *server); extern struct Bucket *NsTclCreateBuckets(char *server, int nbuckets); extern void NsClsCleanup(Conn *connPtr); ! extern void NsTclAddCmds(Tcl_Interp *interp, NsInterp *itPtr); ! extern void NsTclAddServerCmds(Tcl_Interp *interp, NsInterp *itPtr); extern void NsRestoreSignals(void); --- 949,960 ---- extern void NsWaitJobsShutdown(Ns_Time *toPtr); ! extern void NsTclInitServer(CONST char *server) ! NS_GNUC_NONNULL(1); extern void NsLoadModules(char *server); extern struct Bucket *NsTclCreateBuckets(char *server, int nbuckets); extern void NsClsCleanup(Conn *connPtr); ! extern void NsTclAddBasicCmds(NsInterp *itPtr); ! extern void NsTclAddServerCmds(NsInterp *itPtr); extern void NsRestoreSignals(void); *************** *** 980,987 **** */ - extern Ns_TclInterpInitProc NsTclCreateCmds; extern void NsTclInitQueueType(void); extern void NsTclInitAddrType(void); extern void NsTclInitTimeType(void); extern void NsTclInitSpecType(void); --- 985,992 ---- */ extern void NsTclInitQueueType(void); extern void NsTclInitAddrType(void); extern void NsTclInitTimeType(void); + extern void NsTclInitKeylistType(void); extern void NsTclInitSpecType(void); *************** *** 1007,1011 **** extern int NsMemMap(char *path, int size, int mode, FileMap *mapPtr); extern void NsMemUmap(FileMap *mapPtr); - extern int Ns_ConnSend(Ns_Conn *conn, struct iovec *bufs, int nbufs); #ifndef _WIN32 --- 1012,1015 ---- Index: tclshare.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/tclshare.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** tclshare.c 10 Jun 2005 17:58:41 -0000 1.2 --- tclshare.c 12 Jul 2005 07:31:39 -0000 1.3 *************** *** 453,457 **** char *name; Tcl_DString ds; /* Buffer for globalized name */ ! NsInterp *itPtr = NsGetInterp(interp); NsServer *servPtr = itPtr->servPtr; --- 453,457 ---- char *name; Tcl_DString ds; /* Buffer for globalized name */ ! NsInterp *itPtr = NsGetInterpData(interp); NsServer *servPtr = itPtr->servPtr; Index: tclthread.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/tclthread.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** tclthread.c 12 Jun 2005 14:42:44 -0000 1.3 --- tclthread.c 12 Jul 2005 07:31:39 -0000 1.4 *************** *** 597,601 **** Ns_TclThread(Tcl_Interp *interp, char *script, Ns_Thread *thrPtr) { ! NsInterp *itPtr = NsGetInterp(interp); CreateTclThread(itPtr, script, (thrPtr == NULL), thrPtr); --- 597,601 ---- Ns_TclThread(Tcl_Interp *interp, char *script, Ns_Thread *thrPtr) { ! NsInterp *itPtr = NsGetInterpData(interp); CreateTclThread(itPtr, script, (thrPtr == NULL), thrPtr); Index: Makefile =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/Makefile,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Makefile 26 Mar 2005 16:40:40 -0000 1.4 --- Makefile 12 Jul 2005 07:31:39 -0000 1.5 *************** *** 45,49 **** nsmain.o nsthread.o op.o pathname.o pidfile.o proc.o queue.o \ quotehtml.o random.o request.o return.o rollfile.o sched.o \ ! server.o set.o sock.o sockcallback.o str.o tclatclose.o \ tclcallbacks.o tclcmds.o tclconf.o tclenv.o tclfile.o tclhttp.o tclimg.o \ tclinit.o tcljob.o tclmisc.o tclobj.o tclobjv.o tclrequest.o tclresp.o \ --- 45,49 ---- nsmain.o nsthread.o op.o pathname.o pidfile.o proc.o queue.o \ quotehtml.o random.o request.o return.o rollfile.o sched.o \ ! server.o set.o sock.o sockcallback.o str.o \ tclcallbacks.o tclcmds.o tclconf.o tclenv.o tclfile.o tclhttp.o tclimg.o \ tclinit.o tcljob.o tclmisc.o tclobj.o tclobjv.o tclrequest.o tclresp.o \ Index: queue.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/queue.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** queue.c 6 Jul 2005 07:12:18 -0000 1.4 --- queue.c 12 Jul 2005 07:31:39 -0000 1.5 *************** *** 803,807 **** NsRunCleanups(conn); NsClsCleanup(connPtr); ! Ns_FreeConnInterp(conn); if (connPtr->authUser != NULL) { ns_free(connPtr->authUser); --- 803,807 ---- NsRunCleanups(conn); NsClsCleanup(connPtr); ! NsFreeConnInterp(connPtr); if (connPtr->authUser != NULL) { ns_free(connPtr->authUser); Index: connio.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/connio.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** connio.c 12 Jul 2005 03:16:05 -0000 1.7 --- connio.c 12 Jul 2005 07:31:39 -0000 1.8 *************** *** 113,118 **** connPtr->sockPtr = NULL; connPtr->flags |= NS_CONN_CLOSED; ! if (connPtr->interp != NULL) { ! NsRunAtClose(connPtr->interp); } } --- 113,118 ---- connPtr->sockPtr = NULL; connPtr->flags |= NS_CONN_CLOSED; ! if (connPtr->itPtr != NULL) { ! NsTclRunAtClose(connPtr->itPtr); } } Index: tclset.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/tclset.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** tclset.c 24 Jun 2005 08:07:25 -0000 1.4 --- tclset.c 12 Jul 2005 07:31:39 -0000 1.5 *************** *** 86,90 **** Ns_TclEnterSet(Tcl_Interp *interp, Ns_Set *set, int flags) { ! NsInterp *itPtr = NsGetInterp(interp); if (itPtr == NULL) { --- 86,90 ---- Ns_TclEnterSet(Tcl_Interp *interp, Ns_Set *set, int flags) { ! NsInterp *itPtr = NsGetInterpData(interp); if (itPtr == NULL) { *************** *** 731,735 **** NsInterp *itPtr; ! itPtr = NsGetInterp(interp); if (itPtr == NULL) { Tcl_SetResult(interp, "ns_set not supported", TCL_STATIC); --- 731,735 ---- NsInterp *itPtr; ! itPtr = NsGetInterpData(interp); if (itPtr == NULL) { Tcl_SetResult(interp, "ns_set not supported", TCL_STATIC); Index: proc.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/proc.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** proc.c 10 Jun 2005 17:58:39 -0000 1.6 --- proc.c 12 Jul 2005 07:31:39 -0000 1.7 *************** *** 80,83 **** --- 80,84 ---- {(void *) NsAdpRequest, "ns:adprequest", Ns_StringArgProc}, {(void *) NsFastGet, "ns:fastget", ServerArgProc}, + {(void *) NsTclTraceProc, "ns:tcltrace", Ns_TclCallbackArgProc}, {NULL, NULL, NULL} }; Index: tclcmds.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/tclcmds.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** tclcmds.c 7 Jul 2005 01:29:02 -0000 1.17 --- tclcmds.c 12 Jul 2005 07:31:39 -0000 1.18 *************** *** 31,35 **** * tclcmds.c -- * ! * Connect Tcl command names to the functions that implement them */ --- 31,35 ---- * tclcmds.c -- * ! * Connect Tcl command names to the functions that implement them. */ *************** *** 64,67 **** --- 64,68 ---- NsTclAdpTruncObjCmd, NsTclAfterObjCmd, + NsTclAtCloseObjCmd, NsTclAtExitObjCmd, NsTclAtShutdownObjCmd, *************** *** 192,196 **** NsTclAdpRegisterProcCmd, NsTclAdpStatsCmd, - NsTclAtCloseCmd, NsTclCacheFlushCmd, NsTclCacheKeysCmd, --- 193,196 ---- *************** *** 234,238 **** */ ! static Cmd cmds[] = { {"env", NsTclEnvCmd, NULL}, {"keyldel", TclX_KeyldelObjCmd, NULL}, --- 234,238 ---- */ ! static Cmd basicCmds[] = { {"env", NsTclEnvCmd, NULL}, {"keyldel", TclX_KeyldelObjCmd, NULL}, *************** *** 382,386 **** {"ns_adp_tell", NULL, NsTclAdpTellObjCmd}, {"ns_adp_trunc", NULL, NsTclAdpTruncObjCmd}, ! {"ns_atclose", NsTclAtCloseCmd, NULL}, {"ns_chan", NULL, NsTclChanObjCmd}, {"ns_checkurl", NULL, NsTclRequestAuthorizeObjCmd}, --- 382,386 ---- {"ns_adp_tell", NULL, NsTclAdpTellObjCmd}, {"ns_adp_trunc", NULL, NsTclAdpTruncObjCmd}, ! {"ns_atclose", NULL, NsTclAtCloseObjCmd}, {"ns_chan", NULL, NsTclChanObjCmd}, {"ns_checkurl", NULL, NsTclRequestAuthorizeObjCmd}, *************** *** 445,457 **** *---------------------------------------------------------------------- * ! * NsTclAddCmds -- * ! * Create basic and server Tcl commands. * * Results: ! * TCL_OK. * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 445,457 ---- *---------------------------------------------------------------------- * ! * NsTclAddBasicCmds, NsTclAddServerCmds -- * ! * Add basic and server Tcl commands to an interp. * * Results: ! * None. * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 459,483 **** static void ! AddCmds(Cmd *cmdPtr, ClientData arg, Tcl_Interp *interp) { while (cmdPtr->name != NULL) { ! if (cmdPtr->objProc != NULL) { ! Tcl_CreateObjCommand(interp, cmdPtr->name, cmdPtr->objProc, arg, NULL); ! } else { ! Tcl_CreateCommand(interp, cmdPtr->name, cmdPtr->proc, arg, NULL); ! } ! ++cmdPtr; } } void ! NsTclAddCmds(Tcl_Interp *interp, NsInterp *itPtr) { ! AddCmds(cmds, itPtr, interp); } void ! NsTclAddServerCmds(Tcl_Interp *interp, NsInterp *itPtr) { ! AddCmds(servCmds, itPtr, interp); } --- 459,485 ---- static void ! AddCmds(Cmd *cmdPtr, NsInterp *itPtr) { + Tcl_Interp *interp = itPtr->interp; + while (cmdPtr->name != NULL) { ! if (cmdPtr->objProc != NULL) { ! Tcl_CreateObjCommand(interp, cmdPtr->name, cmdPtr->objProc, itPtr, NULL); ! } else { ! Tcl_CreateCommand(interp, cmdPtr->name, cmdPtr->proc, itPtr, NULL); ! } ! ++cmdPtr; } } void ! NsTclAddBasicCmds(NsInterp *itPtr) { ! AddCmds(basicCmds, itPtr); } void ! NsTclAddServerCmds(NsInterp *itPtr) { ! AddCmds(servCmds, itPtr); } --- tclatclose.c DELETED --- Index: nsmain.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/nsmain.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** nsmain.c 27 Jun 2005 17:47:57 -0000 1.15 --- nsmain.c 12 Jul 2005 07:31:39 -0000 1.16 *************** *** 942,952 **** * CommandInit -- * ! * Initialize the interp with server commands. * * Results: ! * TCL_OK or TCL_ERROR. * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 942,952 ---- * CommandInit -- * ! * Initialize the command interp with basic and server commands. * * Results: ! * Tcl result. * * Side effects: ! * Depends on init scripts. * *---------------------------------------------------------------------- *************** *** 958,961 **** --- 958,965 ---- NsServer *servPtr = NsGetServer(cmdServer); + Tcl_InitMemory(interp); + if (Tcl_Init(interp) != TCL_OK) { + Ns_TclLogError(interp); + } return NsInitInterp(interp, servPtr, NULL); } Index: adprequest.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/adprequest.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** adprequest.c 10 Jun 2005 17:58:38 -0000 1.2 --- adprequest.c 12 Jul 2005 07:31:39 -0000 1.3 *************** *** 113,117 **** interp = Ns_GetConnInterp(conn); ! itPtr = NsGetInterp(interp); servPtr = itPtr->servPtr; --- 113,117 ---- interp = Ns_GetConnInterp(conn); ! itPtr = NsGetInterpData(interp); servPtr = itPtr->servPtr; |