blob: c0965fc4a840427b0dadc5ece03cce8d5b3daf9a [file] [log] [blame]
/* Copyright 2000-2005 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "mod_perl.h"
char *modperl_server_desc(server_rec *s, apr_pool_t *p)
{
return apr_psprintf(p, "%s:%u", s->server_hostname, s->port);
}
/* used in debug traces */
MP_INLINE char *modperl_pid_tid(apr_pool_t *p)
{
if (modperl_threaded_mpm()) {
return apr_psprintf(p, "%lu"
#if APR_HAS_THREADS
"/%lu"
#endif /* APR_HAS_THREADS */
, (unsigned long)getpid()
#if APR_HAS_THREADS
, modperl_threads_started()
? (unsigned long)apr_os_thread_current()
: 0
#endif /* APR_HAS_THREADS */
);
}
else {
return apr_psprintf(p, "%lu", (unsigned long)getpid());
}
}
#ifdef MP_TRACE
void modperl_apr_table_dump(pTHX_ apr_table_t *table, char *name)
{
int i, tmp_len, len = 0;
char *fmt;
const apr_array_header_t *array = apr_table_elts(table);
apr_table_entry_t *elts = (apr_table_entry_t *)array->elts;
modperl_trace(MP_FUNC, "*** Contents of table '%s' ***", name);
for (i = 0; i < array->nelts; i++) {
if (elts[i].key && elts[i].val) {
tmp_len = strlen(elts[i].key);
if (tmp_len > len) {
len = tmp_len;
}
}
}
/* dump the table with keys aligned */
fmt = Perl_form(aTHX_ "%%-%ds => %%s", len);
for (i = 0; i < array->nelts; i++) {
if (!elts[i].key || !elts[i].val) {
continue;
}
modperl_trace(MP_FUNC, fmt, elts[i].key, elts[i].val);
}
modperl_trace(MP_FUNC, "");
}
#endif
#ifdef MP_TRACE
void modperl_perl_modglobal_dump(pTHX)
{
HV *hv = PL_modglobal;
AV *val;
char *key;
I32 klen;
hv_iterinit(hv);
MP_TRACE_g(MP_FUNC, "|-------- PL_modglobal --------");
#ifdef USE_ITHREADS
MP_TRACE_g(MP_FUNC, "| perl 0x%lx", (unsigned long)aTHX);
#endif
MP_TRACE_g(MP_FUNC, "| PL_modglobal 0x%lx",
(unsigned long)PL_modglobal);
while ((val = (AV*)hv_iternextsv(hv, &key, &klen))) {
MP_TRACE_g(MP_FUNC, "| %s => 0x%lx", key, val);
}
MP_TRACE_g(MP_FUNC, "|-------- PL_modglobal --------\n");
}
#endif