Merge "config: Allow options to register when documentation is unavailable." into 13

changes/25/2125/2
Mark Michelson 9 years ago committed by Gerrit Code Review
commit afdf8e5d5c

@ -71,6 +71,9 @@ struct aco_option {
aco_option_handler handler;
unsigned int flags;
unsigned int no_doc:1;
#ifdef AST_DEVMODE
unsigned int doc_unavailable:1;
#endif
unsigned char deprecated:1;
size_t argc;
intptr_t args[0];
@ -183,18 +186,20 @@ static int link_option_to_types(struct aco_info *info, struct aco_type **types,
ast_log(LOG_ERROR, "Attempting to register option using uninitialized type\n");
return -1;
}
if (!ao2_link(type->internal->opts, opt)
#ifdef AST_XML_DOCS
|| (!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 */
) {
if (!ao2_link(type->internal->opts, opt)) {
do {
ao2_unlink(types[idx - 1]->internal->opts, opt);
} while (--idx);
return -1;
}
#ifdef AST_XML_DOCS
if (!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)) {
#ifdef AST_DEVMODE
opt->doc_unavailable = 1;
#endif
#endif
}
}
/* The container(s) should hold the only ref to opt */
ao2_ref(opt, -1);
@ -716,6 +721,14 @@ int aco_process_var(struct aco_type *type, const char *cat, struct ast_variable
ast_log(LOG_ERROR, "BUG! Somehow a config option for %s/%s was created with no handler!\n", cat, var->name);
return -1;
}
#ifdef AST_DEVMODE
if (opt->doc_unavailable) {
ast_log(LOG_ERROR, "Config option '%s' of type '%s' is not completely documented and can not be set\n", var->name, type->name);
return -1;
}
#endif
if (opt->handler(opt, var, obj)) {
ast_log(LOG_ERROR, "Error parsing %s=%s at line %d of %s\n", var->name, var->value, var->lineno, var->file);
return -1;

Loading…
Cancel
Save