@@ -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+
364378static 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