CTRACE(tfp, "%s `%s' %s\n",
CTRACE((tfp, "%s `%s' %s\n",
PRIVATE HTAASetup *HTAASetup_lookup ARGS4(	CONST char *,	hostname,	int,		portnumber,	CONST char *,	docname,	BOOL,		IsProxy){    HTAAServer *server;    HTAASetup *setup;    if (portnumber <= 0)        portnumber = 80;    if (hostname && docname && *hostname && *docname &&	NULL != (server = HTAAServer_lookup(hostname,					    portnumber,					    IsProxy))) {	HTList *cur = server->setups;	CTRACE(tfp, "%s %s (%s:%d:%s)\n",		    "HTAASetup_lookup: resolving setup for",		    (IsProxy ? "proxy" : "server"),		    hostname, portnumber, docname);	while (NULL != (setup = (HTAASetup*)HTList_nextObject(cur))) {	    if (HTAA_templateMatch(setup->template, docname)) {		CTRACE(tfp, "%s `%s' %s `%s'\n",			    "HTAASetup_lookup:", docname,			    "matched template", setup->template);		return setup;	    } else {	        CTRACE(tfp, "%s `%s' %s `%s'\n",			    "HTAASetup_lookup:", docname,			    "did NOT match template", setup->template);	    }	} /* while setups remain */    } /* if valid parameters and server found */    CTRACE(tfp, "%s `%s' %s\n",		 "HTAASetup_lookup: No template matched",		 (docname ? docname : "(null)"),		 "(so probably not protected)");    return NULL;	/* NULL in parameters, or not found */}