Skip to content

Commit f21ba26

Browse files
committed
mod_so: Add -D DUMP_MODULE_DATA to print module data in structured
format (TOML) including MMN information. * modules/core/mod_so.c (print_mod_data): New function. (dump_loaded_modules): Use it if DUMP_MODULE_DATA is defined.
1 parent a54b377 commit f21ba26

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

modules/core/mod_so.c

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -361,12 +361,26 @@ static module *ap_find_loaded_module_symbol(server_rec *s, const char *modname)
361361
return NULL;
362362
}
363363

364+
/* Print structured module data in TOML format for -D DUMP_MODULE_DATA
365+
* output. */
366+
static void print_mod_data(apr_file_t *out, int is_static,
367+
const ap_module_symbol_t *modsym)
368+
{
369+
const char *name = modsym->name;
370+
const module *mod = modsym->modp;
371+
372+
apr_file_printf(out, "%s.static = %d\n", name, is_static);
373+
apr_file_printf(out, "%s.source = \"%s\"\n", name, mod->name);
374+
apr_file_printf(out, "%s.major = %d\n", name, mod->version);
375+
apr_file_printf(out, "%s.minor = %d\n", name, mod->minor_version);
376+
}
377+
364378
static void dump_loaded_modules(apr_pool_t *p, server_rec *s)
365379
{
366380
ap_module_symbol_t *modie;
367381
ap_module_symbol_t *modi;
368382
so_server_conf *sconf;
369-
int i;
383+
int i, toml = ap_exists_config_define("DUMP_MODULE_DATA");
370384
apr_file_t *out = NULL;
371385

372386
if (!ap_exists_config_define("DUMP_MODULES")) {
@@ -375,14 +389,17 @@ static void dump_loaded_modules(apr_pool_t *p, server_rec *s)
375389

376390
apr_file_open_stdout(&out, p);
377391

378-
apr_file_printf(out, "Loaded Modules:\n");
392+
if (!toml) apr_file_printf(out, "Loaded Modules:\n");
379393

380394
sconf = (so_server_conf *)ap_get_module_config(s->module_config,
381395
&so_module);
382396
for (i = 0; ; i++) {
383397
modi = &ap_prelinked_module_symbols[i];
384398
if (modi->name != NULL) {
385-
apr_file_printf(out, " %s (static)\n", modi->name);
399+
if (toml)
400+
print_mod_data(out, 1, modi);
401+
else
402+
apr_file_printf(out, " %s (static)\n", modi->name);
386403
}
387404
else {
388405
break;
@@ -393,7 +410,10 @@ static void dump_loaded_modules(apr_pool_t *p, server_rec *s)
393410
for (i = 0; i < sconf->loaded_modules->nelts; i++) {
394411
modi = &modie[i];
395412
if (modi->name != NULL) {
396-
apr_file_printf(out, " %s (shared)\n", modi->name);
413+
if (toml)
414+
print_mod_data(out, 0, modi);
415+
else
416+
apr_file_printf(out, " %s (shared)\n", modi->name);
397417
}
398418
}
399419
}

0 commit comments

Comments
 (0)