From: Gonzalo A. <ga...@us...> - 2006-10-10 13:11:30
|
Update of /cvsroot/mod-c/mod_c/src In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv25170 Modified Files: mod_c.c Log Message: * My previous commit was wrong. ap_rflush calls were not needed. The browser skipped some stubs due to '<' & '>' chars in some profile stubs name. Index: mod_c.c =================================================================== RCS file: /cvsroot/mod-c/mod_c/src/mod_c.c,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** mod_c.c 10 Oct 2006 12:37:38 -0000 1.30 --- mod_c.c 10 Oct 2006 13:11:23 -0000 1.31 *************** *** 152,159 **** } static void show_spec(request_rec* r, struct runspec* spec) { ap_rprintf(r, "%20llu %20llu %20lld %20lld %s/%s:%d\n", spec->accum, spec->self, spec->self / spec->ncalls, spec->ncalls, ! spec->name, spec->file, spec->line); } --- 152,187 ---- } + const char* html_quote(request_rec* r, const char* s) { + size_t n = 0; + const char* c = s; + for (; *c; ++c) + if (*c == '<' || *c == '>') ++n; + size_t len = c-s; + if (n == 0) + return s; + char* dev = (char*)apr_palloc(r->pool, len + 4*n + 1); + char* cdev = dev; + c = s; + while (*c) { + if (*c == '<') { + *cdev++ = '&'; *cdev++ = 'l'; *cdev++ = 't'; *cdev++ = ';'; + ++c; + continue; + } + if (*c == '>') { + *cdev++ = '&'; *cdev++ = 'g'; *cdev++ = 't'; *cdev++ = ';'; + ++c; + continue; + } + *cdev++ = *c++; + } + *cdev = '\0'; + return dev; + } + static void show_spec(request_rec* r, struct runspec* spec) { ap_rprintf(r, "%20llu %20llu %20lld %20lld %s/%s:%d\n", spec->accum, spec->self, spec->self / spec->ncalls, spec->ncalls, ! html_quote(r, spec->name), spec->file, spec->line); } *************** *** 201,206 **** show_spec(r, &spec); - ap_rflush(r); - if (v != NULL) free(v); if (p != NULL) free(p); --- 229,232 ---- *************** *** 224,229 **** } - ap_rflush(r); - free(p); free(v); --- 250,253 ---- |