rem: NsAppendConn(Tcl_DString *dsPtr, Ns_Time *nowPtr, Conn *connPtr, char *state)
add: NsAppendConn(Tcl_DString *dsPtr, Conn *connPtr, char *state)
context: NsAppendConn(Tcl_DString *dsPtr, Ns_Time *nowPtr, Conn *connPtr, char *state){    char buf[100];    char  *p;    Ns_Time now, diff;    if (nowPtr == NULL) {	Ns_GetTime(&now);	nowPtr = &now;    }    Tcl_DStringStartSublist(dsPtr);    /*     * An annoying race condition can be lethal here.     */    if (connPtr != NULL) {	sprintf(buf, "%d", connPtr->id);	Tcl_DStringAppendElement(dsPtr, buf);	Tcl_DStringAppendElement(dsPtr, Ns_ConnPeer((Ns_Conn *) connPtr));	Tcl_DStringAppendElement(dsPtr, state);		/*	 * Carefully copy the bytes to avoid chasing a pointer	 * which may be changing in the connection thread.  This	 * is not entirely safe but acceptible for a seldom-used	 * admin command.	 */		p = (connPtr->request && connPtr->request->method) ?	    connPtr->request->method : "?";	Tcl_DStringAppendElement(dsPtr, strncpy(buf, p, sizeof(buf)));	p = (connPtr->request && connPtr->request->url) ?	    connPtr->request->url : "?";	Tcl_DStringAppendElement(dsPtr, strncpy(buf, p, sizeof(buf)));	Ns_DiffTime(nowPtr, &connPtr->times.queue, &diff);	sprintf(buf, "%ld.%ld", diff.sec, diff.usec);	Tcl_DStringAppendElement(dsPtr, buf);	sprintf(buf, "%d", connPtr->nContentSent);	Tcl_DStringAppendElement(dsPtr, buf);    }    Tcl_DStringEndSublist(dsPtr);}