mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	Update config framework/sorcery with types/options without documentation
There are times when a configuration option should not have documentation. 1. Some options are registered with a particular object merely as a warning to users. These options aren't even really 'deprecated' - which has its own separate API call - they are actually provided by a different configuration file. The options are merely registered so that the user gets a warning that a different configuration file provides the item. 2. Some object types - most notably some used by modules that use sorcery - are completely internal and should never be shown to the user. 3. Sorcery itself has several 'hidden' fields that should never be shown to a user. This patch updates the configuration framework and sorcery with additional API calls that allow a module to register types as internal and options as not requiring documentation. This bypasses the XML documentation checking. This patch also re-enables the strict XML documentation checking in trunk, as well as updates some documentation that was missing. Review: https://reviewboard.asterisk.org/r/2785/ (closes issue ASTERISK-22359) Reported by: Matt Jordan (closes issue ASTERISK-22112) Reported by: Rusty Newton git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@397524 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -575,7 +575,7 @@ static int sorcery_extended_fields_handler(const void *obj, struct ast_variable | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| int ast_sorcery_object_register(struct ast_sorcery *sorcery, const char *type, aco_type_item_alloc alloc, sorcery_transform_handler transform, sorcery_apply_handler apply) | ||||
| int __ast_sorcery_object_register(struct ast_sorcery *sorcery, const char *type, unsigned int hidden, aco_type_item_alloc alloc, sorcery_transform_handler transform, sorcery_apply_handler apply) | ||||
| { | ||||
| 	RAII_VAR(struct ast_sorcery_object_type *, object_type, ao2_find(sorcery->types, type, OBJ_KEY), ao2_cleanup); | ||||
|  | ||||
| @@ -587,6 +587,7 @@ int ast_sorcery_object_register(struct ast_sorcery *sorcery, const char *type, a | ||||
| 	object_type->type.type = ACO_ITEM; | ||||
| 	object_type->type.category = ".?"; | ||||
| 	object_type->type.item_alloc = alloc; | ||||
| 	object_type->type.hidden = hidden; | ||||
|  | ||||
| 	object_type->transform = transform; | ||||
| 	object_type->apply = apply; | ||||
| @@ -639,13 +640,13 @@ int ast_sorcery_object_fields_register(struct ast_sorcery *sorcery, const char * | ||||
| 	object_field->multiple_handler = sorcery_handler; | ||||
|  | ||||
| 	ao2_link(object_type->fields, object_field); | ||||
| 	__aco_option_register(object_type->info, regex, ACO_REGEX, object_type->file->types, "", OPT_CUSTOM_T, config_handler, 0, 0); | ||||
| 	__aco_option_register(object_type->info, regex, ACO_REGEX, object_type->file->types, "", OPT_CUSTOM_T, config_handler, 0, 1, 0); | ||||
|  | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| int __ast_sorcery_object_field_register(struct ast_sorcery *sorcery, const char *type, const char *name, const char *default_val, enum aco_option_type opt_type, | ||||
| 					aco_option_handler config_handler, sorcery_field_handler sorcery_handler, unsigned int flags, size_t argc, ...) | ||||
| 					aco_option_handler config_handler, sorcery_field_handler sorcery_handler, unsigned int flags, unsigned int no_doc, size_t argc, ...) | ||||
| { | ||||
| 	RAII_VAR(struct ast_sorcery_object_type *, object_type, ao2_find(sorcery->types, type, OBJ_KEY), ao2_cleanup); | ||||
| 	RAII_VAR(struct ast_sorcery_object_field *, object_field, NULL, ao2_cleanup); | ||||
| @@ -677,15 +678,15 @@ int __ast_sorcery_object_field_register(struct ast_sorcery *sorcery, const char | ||||
|  | ||||
| 	/* TODO: Improve this hack */ | ||||
| 	if (!argc) { | ||||
| 		__aco_option_register(object_type->info, name, ACO_EXACT, object_type->file->types, default_val, opt_type, config_handler, flags, argc); | ||||
| 		__aco_option_register(object_type->info, name, ACO_EXACT, object_type->file->types, default_val, opt_type, config_handler, flags, no_doc, argc); | ||||
| 	} else if (argc == 1) { | ||||
| 		__aco_option_register(object_type->info, name, ACO_EXACT, object_type->file->types, default_val, opt_type, config_handler, flags, argc, | ||||
| 		__aco_option_register(object_type->info, name, ACO_EXACT, object_type->file->types, default_val, opt_type, config_handler, flags, no_doc, argc, | ||||
| 				      object_field->args[0]); | ||||
| 	} else if (argc == 2) { | ||||
| 		__aco_option_register(object_type->info, name, ACO_EXACT, object_type->file->types, default_val, opt_type, config_handler, flags, argc, | ||||
| 		__aco_option_register(object_type->info, name, ACO_EXACT, object_type->file->types, default_val, opt_type, config_handler, flags, no_doc, argc, | ||||
| 				      object_field->args[0], object_field->args[1]); | ||||
| 	} else if (argc == 3) { | ||||
| 		__aco_option_register(object_type->info, name, ACO_EXACT, object_type->file->types, default_val, opt_type, config_handler, flags, argc, | ||||
| 		__aco_option_register(object_type->info, name, ACO_EXACT, object_type->file->types, default_val, opt_type, config_handler, flags, no_doc, argc, | ||||
| 				      object_field->args[0], object_field->args[1], object_field->args[2]); | ||||
| 	} else { | ||||
| 		ast_assert(0); /* The hack... she does us no good for this */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user