aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreliel <eliel@f38db490-d61c-443f-a65b-d21fe96a405b>2009-05-15 13:42:39 +0000
committereliel <eliel@f38db490-d61c-443f-a65b-d21fe96a405b>2009-05-15 13:42:39 +0000
commit726c0fdefa9f14a0203d94090ba7e6705049efeb (patch)
treee5ef98c2de4390773aad9f620a6dc8d667998700
parentc915fd2580c73e4804ebd6337c9c3258c8f91746 (diff)
Merged revisions 194635 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r194635 | eliel | 2009-05-15 09:23:37 -0400 (Fri, 15 May 2009) | 16 lines 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: http://svn.digium.com/svn/asterisk/branches/1.6.2@194648 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--doc/appdocsxml.dtd2
-rw-r--r--main/xmldoc.c9
2 files changed, 10 insertions, 1 deletions
diff --git a/doc/appdocsxml.dtd b/doc/appdocsxml.dtd
index 8ac6ac587..ba0ef2726 100644
--- a/doc/appdocsxml.dtd
+++ b/doc/appdocsxml.dtd
@@ -41,7 +41,7 @@
<!ATTLIST option hasparams CDATA "">
<!ELEMENT enumlist (enum+)>
- <!ELEMENT enum (para|note|warning|parameter)*>
+ <!ELEMENT enum (para|note|warning|parameter|enumlist)*>
<!ATTLIST enum name CDATA "">
<!ELEMENT argument (para|note|warning|variablelist|argument)*>
diff --git a/main/xmldoc.c b/main/xmldoc.c
index 230b8a4c8..f483f8b0a 100644
--- a/main/xmldoc.c
+++ b/main/xmldoc.c
@@ -58,6 +58,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
@@ -1398,6 +1399,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))) {
@@ -1405,7 +1409,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;
}