summaryrefslogtreecommitdiff
path: root/main/xmldoc.c
diff options
context:
space:
mode:
authorEliel C. Sardanons <eliels@gmail.com>2009-05-15 13:23:37 +0000
committerEliel C. Sardanons <eliels@gmail.com>2009-05-15 13:23:37 +0000
commit77c41d700eb96bb2e977020467f6a7d15698b669 (patch)
treeb9653187c3ba04da9f13fe662d1cc996ac8986d4 /main/xmldoc.c
parentd1e0b113433ec90a9b6057b3b425a9ad67e57a0a (diff)
Allow to specify an enumlist inside an enum.
It was not possible to use an enumlist inside an enum: <enumlist> <enum name="aa"> <enumlist> ... </enumlist> </enum> </enumlist> Now we will be able to insert as many levels as we want. (closes issue #15112) Reported by: lmadsen git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@194635 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/xmldoc.c')
-rw-r--r--main/xmldoc.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/main/xmldoc.c b/main/xmldoc.c
index 2ddb20179..29d951ac5 100644
--- a/main/xmldoc.c
+++ b/main/xmldoc.c
@@ -60,6 +60,7 @@ struct documentation_tree {
};
static char *xmldoc_get_syntax_cmd(struct ast_xml_node *fixnode, const char *name, int printname);
+static int xmldoc_parse_enumlist(struct ast_xml_node *fixnode, const char *tabs, struct ast_str **buffer);
/*!
* \brief Container of documentation trees
@@ -1400,6 +1401,9 @@ static int xmldoc_parse_enum(struct ast_xml_node *fixnode, const char *tabs, str
{
struct ast_xml_node *node = fixnode;
int ret = 0;
+ char *optiontabs;
+
+ ast_asprintf(&optiontabs, "%s ", tabs);
for (node = ast_xml_node_get_children(node); node; node = ast_xml_node_get_next(node)) {
if ((xmldoc_parse_para(node, (ret ? tabs : " - "), "\n", buffer))) {
@@ -1407,7 +1411,12 @@ static int xmldoc_parse_enum(struct ast_xml_node *fixnode, const char *tabs, str
} else if ((xmldoc_parse_specialtags(node, (ret ? tabs : " - "), "\n", buffer))) {
ret = 1;
}
+
+ xmldoc_parse_enumlist(node, optiontabs, buffer);
}
+
+ ast_free(optiontabs);
+
return ret;
}