From: Zoran V. <vas...@us...> - 2005-11-07 14:04:17
|
Update of /cvsroot/naviserver/naviserver/nsd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18198 Modified Files: info.c Log Message: Fixed broken NsTclInfoObjCmd which failed to properly process info option not tied to any specific server. Index: info.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/info.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** info.c 7 Nov 2005 03:17:55 -0000 1.8 --- info.c 7 Nov 2005 14:04:01 -0000 1.9 *************** *** 1,7 **** /* ! * The contents of this file are subject to the AOLserver Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at ! * http://aolserver.com/. * * Software distributed under the License is distributed on an "AS IS" --- 1,7 ---- /* ! * The contents of this file are subject to the Mozilla Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at ! * http://mozilla.org/. * * Software distributed under the License is distributed on an "AS IS" *************** *** 31,35 **** * info.c -- * ! * Ns_Info* API and ns_info command support. */ --- 31,35 ---- * info.c -- * ! * Ns_Info* API and ns_info command support. */ *************** *** 54,64 **** * Ns_InfoHomePath -- * ! * Return the home dir. * * Results: ! * Home dir. * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 54,64 ---- * Ns_InfoHomePath -- * ! * Return the home dir. * * Results: ! * Home dir. * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 77,87 **** * Ns_InfoServerName -- * ! * Return the server name. * * Results: ! * Server name * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 77,87 ---- * Ns_InfoServerName -- * ! * Return the server name. * * Results: ! * Server name * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 100,110 **** * Ns_InfoServerVersion -- * ! * Returns the server version * * Results: ! * String server version. * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 100,110 ---- * Ns_InfoServerVersion -- * ! * Returns the server version * * Results: ! * String server version. * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 123,133 **** * Ns_InfoConfigFile -- * ! * Returns path to config file. * * Results: ! * Path to config file. * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 123,133 ---- * Ns_InfoConfigFile -- * ! * Returns path to config file. * * Results: ! * Path to config file. * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 146,156 **** * Ns_InfoPid -- * ! * Returns server's PID * * Results: ! * PID (tread like pid_t) * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 146,156 ---- * Ns_InfoPid -- * ! * Returns server's PID * * Results: ! * PID (tread like pid_t) * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 169,179 **** * Ns_InfoNameOfExecutable -- * ! * Returns the name of the nsd executable. Quirky name is from Tcl. * * Results: ! * Name of executable, string. * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 169,179 ---- * Ns_InfoNameOfExecutable -- * ! * Returns the name of the nsd executable. Quirky name is from Tcl. * * Results: ! * Name of executable, string. * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 190,202 **** *---------------------------------------------------------------------- * ! * -- * ! * Return platform name * * Results: ! * Platform name, string. * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 190,202 ---- *---------------------------------------------------------------------- * ! * Ns_InfoPlatform -- * ! * Return platform name * * Results: ! * Platform name, string. * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 246,256 **** * Ns_InfoUptime -- * ! * Returns time server has been up. * * Results: ! * Seconds server has been running. * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 246,256 ---- * Ns_InfoUptime -- * ! * Returns time server has been up. * * Results: ! * Seconds server has been running. * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 269,279 **** * Ns_InfoBootTime -- * ! * Returns time server started. * * Results: ! * Treat as time_t. * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 269,279 ---- * Ns_InfoBootTime -- * ! * Returns time server started. * * Results: ! * Treat as time_t. * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 292,302 **** * Ns_InfoHostname -- * ! * Return server hostname * * Results: ! * Hostname * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 292,302 ---- * Ns_InfoHostname -- * ! * Return server hostname * * Results: ! * Hostname * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 316,326 **** * Ns_InfoAddress -- * ! * Return server IP address * * Results: ! * Primary (first) IP address of this machine. * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 316,326 ---- * Ns_InfoAddress -- * ! * Return server IP address * * Results: ! * Primary (first) IP address of this machine. * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 339,349 **** * Ns_InfoBuildDate -- * ! * Returns time server was compiled. * * Results: ! * String build date and time. * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 339,349 ---- * Ns_InfoBuildDate -- * ! * Returns time server was compiled. * * Results: ! * String build date and time. * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 362,372 **** * Ns_InfoShutdownPending -- * ! * Boolean: is a shutdown pending? * * Results: ! * NS_TRUE: yes, NS_FALSE: no * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 362,372 ---- * Ns_InfoShutdownPending -- * ! * Boolean: is a shutdown pending? * * Results: ! * NS_TRUE: yes, NS_FALSE: no * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 381,384 **** --- 381,385 ---- stopping = nsconf.state.stopping; Ns_MutexUnlock(&nsconf.state.lock); + return stopping; } *************** *** 390,400 **** * Ns_InfoStarted -- * ! * Boolean: has the server started up all the way yet? * * Results: ! * NS_TRUE: yes, NS_FALSE: no * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 391,401 ---- * Ns_InfoStarted -- * ! * Boolean: has the server started up all the way yet? * * Results: ! * NS_TRUE: yes, NS_FALSE: no * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 409,412 **** --- 410,414 ---- started = nsconf.state.started; Ns_MutexUnlock(&nsconf.state.lock); + return started; } *************** *** 418,428 **** * Ns_InfoServersStarted -- * ! * Compatability function, same as Ns_InfoStarted * * Results: ! * See Ns_InfoStarted * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 420,430 ---- * Ns_InfoServersStarted -- * ! * Compatability function, same as Ns_InfoStarted * * Results: ! * See Ns_InfoStarted * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 441,451 **** * Ns_InfoTag -- * ! * Returns CVS tag of this build (meaningless without "cvs export"). * * Results: ! * A string version name. * * Side effects: ! * None. * *---------------------------------------------------------------------- --- 443,453 ---- * Ns_InfoTag -- * ! * Returns CVS tag of this build (meaningless without "cvs export"). * * Results: ! * A string version name. * * Side effects: ! * None. * *---------------------------------------------------------------------- *************** *** 464,474 **** * NsTclInfoObjCmd -- * ! * Implements ns_info. * * Results: ! * Tcl result. * * Side effects: ! * See docs. * *---------------------------------------------------------------------- --- 466,476 ---- * NsTclInfoObjCmd -- * ! * Implements ns_info. * * Results: ! * Tcl result. * * Side effects: ! * See docs. * *---------------------------------------------------------------------- *************** *** 478,642 **** NsTclInfoObjCmd(ClientData arg, Tcl_Interp *interp, int objc, Tcl_Obj **objv) { ! int opt; ! NsInterp *itPtr = arg; ! char *server, *elog; Tcl_DString ds; static CONST char *opts[] = { ! "address", "argv0", "boottime", "builddate", "callbacks", ! "config", "home", "hostname", "locks", "log", ! "major", "minor", "name", "nsd", "pageroot", "patchlevel", ! "pid", "platform", "pools", "scheduled", "server", "servers", ! "sockcallbacks", "tag", "tcllib", "threads", "uptime", ! "version", "winnt", "filters", "traces", "requestprocs", ! "url2file", NULL }; enum { ! IAddressIdx, IArgv0Idx, IBoottimeIdx, IBuilddateIdx, ICallbacksIdx, ! IConfigIdx, IHomeIdx, hostINameIdx, ILocksIdx, ILogIdx, ! IMajorIdx, IMinorIdx, INameIdx, INsdIdx, IPageRootIdx, IPatchLevelIdx, ! IPidIdx, IPlatformIdx, IPoolsIdx, IScheduledIdx, IServerIdx, IServersIdx, ! sockICallbacksIdx, ITagIdx, ITclLibIdx, IThreadsIdx, IUptimeIdx, ! IVersionIdx, IWinntIdx, IFiltersIdx, ITracesIdx, IRequestProcsIdx, ! IUrl2FileIdx }; if (objc != 2) { ! Tcl_WrongNumArgs(interp, 1, objv, "option"); return TCL_ERROR; } if (Tcl_GetIndexFromObj(interp, objv[1], opts, "option", 0, ! &opt) != TCL_OK) { ! return TCL_ERROR; } ! Tcl_DStringInit(&ds); ! switch (opt) { case IArgv0Idx: ! Tcl_SetResult(interp, nsconf.argv0, TCL_STATIC); ! break; ! case INsdIdx: ! Tcl_SetResult(interp, nsconf.nsd, TCL_STATIC); ! break; ! case INameIdx: Tcl_SetResult(interp, Ns_InfoServerName(), TCL_STATIC); ! break; ! case IConfigIdx: ! Tcl_SetResult(interp, Ns_InfoConfigFile(), TCL_STATIC); ! break; ! case ICallbacksIdx: ! NsGetCallbacks(&ds); ! Tcl_DStringResult(interp, &ds); ! break; ! case sockICallbacksIdx: ! NsGetSockCallbacks(&ds); ! Tcl_DStringResult(interp, &ds); ! break; ! case IScheduledIdx: ! NsGetScheduled(&ds); ! Tcl_DStringResult(interp, &ds); ! break; ! case ILocksIdx: ! Ns_MutexList(&ds); ! Tcl_DStringResult(interp, &ds); ! break; ! case IThreadsIdx: ! Ns_ThreadList(&ds, ThreadArgProc); ! Tcl_DStringResult(interp, &ds); ! break; ! case IPoolsIdx: #if !defined(_WIN32) && defined(USE_THREAD_ALLOC) && (STATIC_BUILD == 0) ! Tcl_GetMemoryInfo(&ds); /* As of Tcl8.4.1 this is not exported. */ ! Tcl_DStringResult(interp, &ds); #endif ! break; ! case ILogIdx: ! elog = Ns_InfoErrorLog(); ! Tcl_SetResult(interp, elog == NULL ? "STDOUT" : elog, TCL_STATIC); ! break; ! case IPlatformIdx: ! Tcl_SetResult(interp, Ns_InfoPlatform(), TCL_STATIC); ! break; ! case hostINameIdx: ! Tcl_SetResult(interp, Ns_InfoHostname(), TCL_STATIC); ! break; ! case IAddressIdx: ! Tcl_SetResult(interp, Ns_InfoAddress(), TCL_STATIC); ! break; ! case IUptimeIdx: ! Tcl_SetObjResult(interp, Tcl_NewIntObj(Ns_InfoUptime())); ! break; ! case IBoottimeIdx: ! Tcl_SetObjResult(interp, Tcl_NewIntObj(Ns_InfoBootTime())); ! break; ! case IPidIdx: ! Tcl_SetObjResult(interp, Tcl_NewIntObj(Ns_InfoPid())); ! break; ! case IMajorIdx: ! Tcl_SetObjResult(interp, Tcl_NewIntObj(NS_MAJOR_VERSION)); ! break; ! case IMinorIdx: ! Tcl_SetObjResult(interp, Tcl_NewIntObj(NS_MINOR_VERSION)); ! break; ! case IVersionIdx: ! Tcl_SetResult(interp, NS_VERSION, TCL_STATIC); ! break; ! case IPatchLevelIdx: ! Tcl_SetResult(interp, NS_PATCH_LEVEL, TCL_STATIC); ! break; ! case IHomeIdx: ! Tcl_SetResult(interp, Ns_InfoHomePath(), TCL_STATIC); ! break; ! case IWinntIdx: #ifdef _WIN32 ! Tcl_SetResult(interp, "1", TCL_STATIC); #else ! Tcl_SetResult(interp, "0", TCL_STATIC); #endif ! break; ! case IBuilddateIdx: ! Tcl_SetResult(interp, Ns_InfoBuildDate(), TCL_STATIC); ! break; ! case ITagIdx: ! Tcl_SetResult(interp, Ns_InfoTag(), TCL_STATIC); ! break; ! case IServersIdx: ! Tcl_SetResult(interp, nsconf.servers.string, TCL_STATIC); ! break; } ! /* * The following subcommands require a virtual server. */ ! if (itPtr->servPtr == NULL) { ! Tcl_SetResult(interp, "no server", TCL_STATIC); ! return TCL_ERROR; ! } server = itPtr->servPtr->server; --- 480,648 ---- NsTclInfoObjCmd(ClientData arg, Tcl_Interp *interp, int objc, Tcl_Obj **objv) { ! int opt; ! NsInterp *itPtr = arg; ! char *server, *elog; Tcl_DString ds; + + static CONST char *opts[] = { ! "address", "argv0", "boottime", "builddate", "callbacks", ! "config", "home", "hostname", "locks", "log", ! "major", "minor", "name", "nsd", "pageroot", "patchlevel", ! "pid", "platform", "pools", "scheduled", "server", "servers", ! "sockcallbacks", "tag", "tcllib", "threads", "uptime", ! "version", "winnt", "filters", "traces", "requestprocs", ! "url2file", NULL }; + enum { ! IAddressIdx, IArgv0Idx, IBoottimeIdx, IBuilddateIdx, ICallbacksIdx, ! IConfigIdx, IHomeIdx, hostINameIdx, ILocksIdx, ILogIdx, ! IMajorIdx, IMinorIdx, INameIdx, INsdIdx, IPageRootIdx, IPatchLevelIdx, ! IPidIdx, IPlatformIdx, IPoolsIdx, IScheduledIdx, IServerIdx, IServersIdx, ! sockICallbacksIdx, ITagIdx, ITclLibIdx, IThreadsIdx, IUptimeIdx, ! IVersionIdx, IWinntIdx, IFiltersIdx, ITracesIdx, IRequestProcsIdx, ! IUrl2FileIdx }; if (objc != 2) { ! Tcl_WrongNumArgs(interp, 1, objv, "option"); return TCL_ERROR; } if (Tcl_GetIndexFromObj(interp, objv[1], opts, "option", 0, ! &opt) != TCL_OK) { ! return TCL_ERROR; } ! Tcl_DStringInit(&ds); ! switch (opt) { case IArgv0Idx: ! Tcl_SetResult(interp, nsconf.argv0, TCL_STATIC); ! return TCL_OK; ! case INsdIdx: ! Tcl_SetResult(interp, nsconf.nsd, TCL_STATIC); ! return TCL_OK; ! case INameIdx: Tcl_SetResult(interp, Ns_InfoServerName(), TCL_STATIC); ! return TCL_OK; ! case IConfigIdx: ! Tcl_SetResult(interp, Ns_InfoConfigFile(), TCL_STATIC); ! return TCL_OK; ! case ICallbacksIdx: ! NsGetCallbacks(&ds); ! Tcl_DStringResult(interp, &ds); ! return TCL_OK; ! case sockICallbacksIdx: ! NsGetSockCallbacks(&ds); ! Tcl_DStringResult(interp, &ds); ! break; ! case IScheduledIdx: ! NsGetScheduled(&ds); ! Tcl_DStringResult(interp, &ds); ! return TCL_OK; ! case ILocksIdx: ! Ns_MutexList(&ds); ! Tcl_DStringResult(interp, &ds); ! return TCL_OK; ! case IThreadsIdx: ! Ns_ThreadList(&ds, ThreadArgProc); ! Tcl_DStringResult(interp, &ds); ! return TCL_OK; ! case IPoolsIdx: #if !defined(_WIN32) && defined(USE_THREAD_ALLOC) && (STATIC_BUILD == 0) ! Tcl_GetMemoryInfo(&ds); /* As of Tcl8.4.1 this is not exported. */ ! Tcl_DStringResult(interp, &ds); #endif ! return TCL_OK; ! case ILogIdx: ! elog = Ns_InfoErrorLog(); ! Tcl_SetResult(interp, elog == NULL ? "STDOUT" : elog, TCL_STATIC); ! return TCL_OK; ! case IPlatformIdx: ! Tcl_SetResult(interp, Ns_InfoPlatform(), TCL_STATIC); ! return TCL_OK; ! case hostINameIdx: ! Tcl_SetResult(interp, Ns_InfoHostname(), TCL_STATIC); ! return TCL_OK; ! case IAddressIdx: ! Tcl_SetResult(interp, Ns_InfoAddress(), TCL_STATIC); ! return TCL_OK; ! case IUptimeIdx: ! Tcl_SetObjResult(interp, Tcl_NewIntObj(Ns_InfoUptime())); ! return TCL_OK; ! case IBoottimeIdx: ! Tcl_SetObjResult(interp, Tcl_NewIntObj(Ns_InfoBootTime())); ! return TCL_OK; ! case IPidIdx: ! Tcl_SetObjResult(interp, Tcl_NewIntObj(Ns_InfoPid())); ! return TCL_OK; ! case IMajorIdx: ! Tcl_SetObjResult(interp, Tcl_NewIntObj(NS_MAJOR_VERSION)); ! return TCL_OK; ! case IMinorIdx: ! Tcl_SetObjResult(interp, Tcl_NewIntObj(NS_MINOR_VERSION)); ! return TCL_OK; ! case IVersionIdx: ! Tcl_SetResult(interp, NS_VERSION, TCL_STATIC); ! return TCL_OK; ! case IPatchLevelIdx: ! Tcl_SetResult(interp, NS_PATCH_LEVEL, TCL_STATIC); ! return TCL_OK; ! case IHomeIdx: ! Tcl_SetResult(interp, Ns_InfoHomePath(), TCL_STATIC); ! return TCL_OK; ! case IWinntIdx: #ifdef _WIN32 ! Tcl_SetResult(interp, "1", TCL_STATIC); #else ! Tcl_SetResult(interp, "0", TCL_STATIC); #endif ! return TCL_OK; ! case IBuilddateIdx: ! Tcl_SetResult(interp, Ns_InfoBuildDate(), TCL_STATIC); ! return TCL_OK; ! case ITagIdx: ! Tcl_SetResult(interp, Ns_InfoTag(), TCL_STATIC); ! return TCL_OK; ! case IServersIdx: ! Tcl_SetResult(interp, nsconf.servers.string, TCL_STATIC); ! return TCL_OK; } ! /* * The following subcommands require a virtual server. */ ! if (itPtr->servPtr == NULL) { ! Tcl_SetResult(interp, "no server", TCL_STATIC); ! return TCL_ERROR; ! } ! server = itPtr->servPtr->server; *************** *** 645,680 **** NsPageRoot(&ds, itPtr->servPtr, NULL); Tcl_DStringResult(interp, &ds); ! break; case IServerIdx: Tcl_SetResult(interp, server, TCL_STATIC); ! break; case ITclLibIdx: Tcl_SetResult(interp, itPtr->servPtr->tcl.library, TCL_STATIC); ! break; case IFiltersIdx: NsGetFilters(&ds, server); Tcl_DStringResult(interp, &ds); ! break; case ITracesIdx: NsGetTraces(&ds, server); Tcl_DStringResult(interp, &ds); ! break; case IRequestProcsIdx: NsGetRequestProcs(&ds, server); Tcl_DStringResult(interp, &ds); ! break; case IUrl2FileIdx: NsGetUrl2FileProcs(&ds, server); Tcl_DStringResult(interp, &ds); ! break; } ! return TCL_OK; } --- 651,688 ---- NsPageRoot(&ds, itPtr->servPtr, NULL); Tcl_DStringResult(interp, &ds); ! return TCL_OK; case IServerIdx: Tcl_SetResult(interp, server, TCL_STATIC); ! return TCL_OK; case ITclLibIdx: Tcl_SetResult(interp, itPtr->servPtr->tcl.library, TCL_STATIC); ! return TCL_OK; case IFiltersIdx: NsGetFilters(&ds, server); Tcl_DStringResult(interp, &ds); ! return TCL_OK; case ITracesIdx: NsGetTraces(&ds, server); Tcl_DStringResult(interp, &ds); ! return TCL_OK; case IRequestProcsIdx: NsGetRequestProcs(&ds, server); Tcl_DStringResult(interp, &ds); ! return TCL_OK; case IUrl2FileIdx: NsGetUrl2FileProcs(&ds, server); Tcl_DStringResult(interp, &ds); ! return TCL_OK; } ! Tcl_SetResult(interp, "unrecognized option", TCL_STATIC); ! ! return TCL_ERROR; } *************** *** 685,695 **** * NsTclLibraryCmd -- * ! * Implements ns_library. * * Results: ! * Tcl result. * * Side effects: ! * See docs. * *---------------------------------------------------------------------- --- 693,703 ---- * NsTclLibraryCmd -- * ! * Implements ns_library. * * Results: ! * Tcl result. * * Side effects: ! * See docs. * *---------------------------------------------------------------------- *************** *** 704,719 **** if (argc != 2 && argc != 3) { ! Tcl_AppendResult(interp, "wrong # args: should be \"", ! argv[0], " library ?module?\"", NULL); ! return TCL_ERROR; } if (STREQ(argv[1], "private")) { ! lib = itPtr->servPtr->tcl.library; } else if (STREQ(argv[1], "shared")) { ! lib = nsconf.tcl.sharedlibrary; } else { ! Tcl_AppendResult(interp, "unknown library \"", ! argv[1], "\": should be private or shared", NULL); ! return TCL_ERROR; } Ns_DStringInit(&ds); --- 712,727 ---- if (argc != 2 && argc != 3) { ! Tcl_AppendResult(interp, "wrong # args: should be \"", ! argv[0], " library ?module?\"", NULL); ! return TCL_ERROR; } if (STREQ(argv[1], "private")) { ! lib = itPtr->servPtr->tcl.library; } else if (STREQ(argv[1], "shared")) { ! lib = nsconf.tcl.sharedlibrary; } else { ! Tcl_AppendResult(interp, "unknown library \"", ! argv[1], "\": should be private or shared", NULL); ! return TCL_ERROR; } Ns_DStringInit(&ds); |