diff options
-rw-r--r-- | include/asterisk/config_options.h | 10 | ||||
-rw-r--r-- | main/config_options.c | 8 | ||||
-rw-r--r-- | tests/test_config.c | 2 |
3 files changed, 17 insertions, 3 deletions
diff --git a/include/asterisk/config_options.h b/include/asterisk/config_options.h index 55e40ad8a..11a8c5bf9 100644 --- a/include/asterisk/config_options.h +++ b/include/asterisk/config_options.h @@ -156,6 +156,7 @@ struct aco_file { struct aco_info { const char *module; /*!< The name of the module whose config is being processed */ + int hidden:1; /*!< If enabled, this config item is hidden from users */ aco_pre_apply_config pre_apply_config; /*!< A callback called after processing, but before changes are applied */ aco_post_apply_config post_apply_config;/*!< A callback called after changes are applied */ aco_snapshot_alloc snapshot_alloc; /*!< Allocate an object to hold all global configs and item containers */ @@ -213,6 +214,15 @@ static struct aco_info name = { \ __VA_ARGS__ \ }; +#define CONFIG_INFO_TEST(name, arr, alloc, ...) \ +static struct aco_info name = { \ + .module = AST_MODULE, \ + .global_obj = &arr, \ + .snapshot_alloc = alloc, \ + .hidden = 1, \ + __VA_ARGS__ \ +}; + /*! \brief Initialize an aco_info structure * \note aco_info_destroy must be called if this succeeds * \param info The address of an aco_info struct to initialize diff --git a/main/config_options.c b/main/config_options.c index e789c1cfc..0d869b960 100644 --- a/main/config_options.c +++ b/main/config_options.c @@ -184,7 +184,9 @@ static int link_option_to_types(struct aco_info *info, struct aco_type **types, } if (!ao2_link(type->internal->opts, opt) #ifdef AST_XML_DOCS - || (!opt->no_doc && xmldoc_update_config_option(types, info->module, opt->name, type->name, opt->default_val, opt->match_type == ACO_REGEX, opt->type)) + || (!info->hidden && + !opt->no_doc && + xmldoc_update_config_option(types, info->module, opt->name, type->name, opt->default_val, opt->match_type == ACO_REGEX, opt->type)) #endif /* AST_XML_DOCS */ ) { do { @@ -773,7 +775,9 @@ int aco_info_init(struct aco_info *info) goto error; } #ifdef AST_XML_DOCS - if (!type->hidden && xmldoc_update_config_type(info->module, type->name, type->category, type->matchfield, type->matchvalue, type->category_match == ACO_WHITELIST)) { + if (!info->hidden && + !type->hidden && + xmldoc_update_config_type(info->module, type->name, type->category, type->matchfield, type->matchvalue, type->category_match == ACO_WHITELIST)) { goto error; } #endif /* AST_XML_DOCS */ diff --git a/tests/test_config.c b/tests/test_config.c index 8eeb9f8a9..6b1a8e420 100644 --- a/tests/test_config.c +++ b/tests/test_config.c @@ -749,7 +749,7 @@ struct aco_file config_test_conf = { }; static AO2_GLOBAL_OBJ_STATIC(global_obj); -CONFIG_INFO_STANDARD(cfg_info, global_obj, test_config_alloc, +CONFIG_INFO_TEST(cfg_info, global_obj, test_config_alloc, .files = ACO_FILES(&config_test_conf), ); |