[svn-commits] bkruse: branch group/appdocsxml r128563 - in /team/group/appdocsxml: ./ main/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Jul 7 00:56:30 CDT 2008


Author: bkruse
Date: Mon Jul  7 00:56:27 2008
New Revision: 128563

URL: http://svn.digium.com/view/asterisk?view=rev&rev=128563
Log:
Updated the TODO list, ugh, still isn't working.

Have to revert tomorrow and find out what I b0rked.

Modified:
    team/group/appdocsxml/TODO_appdocsxml
    team/group/appdocsxml/main/pbx.c

Modified: team/group/appdocsxml/TODO_appdocsxml
URL: http://svn.digium.com/view/asterisk/team/group/appdocsxml/TODO_appdocsxml?view=diff&rev=128563&r1=128562&r2=128563
==============================================================================
--- team/group/appdocsxml/TODO_appdocsxml (original)
+++ team/group/appdocsxml/TODO_appdocsxml Mon Jul  7 00:56:27 2008
@@ -11,15 +11,6 @@
 One end result usage would be to be able to verify dialplans
 based on arguments/results/types of dialplan applications,
 functions, and anything else that can be regulated to some degree.
-
-
-So far mvanbaak added an example in apps/app_dial.c of 
-an XML tree of the Dial application.
-
-(Added RetryDial as well)
-(Added MeetMe as well)
-
-Multiple Language Support :D
 
 **** Todo ****
 
@@ -45,7 +36,19 @@
 /var/lib/asterisk/documentation.xml
 
 
+Fix the XML parsing, it seems that is not returning the right
+XML blob. I will have to talk to russell....Adding the language
+finding support messed up the accuracy of the parsing.
+
 === DONE ===
 
 Change from iksemel to some other XML
 parsing library (libxml?)
+
+mvanbaak added an example in apps/app_dial.c of 
+an XML tree of the Dial application.
+
+(Added RetryDial as well)
+(Added MeetMe as well)
+
+Multiple Language Support :D

Modified: team/group/appdocsxml/main/pbx.c
URL: http://svn.digium.com/view/asterisk/team/group/appdocsxml/main/pbx.c?view=diff&rev=128563&r1=128562&r2=128563
==============================================================================
--- team/group/appdocsxml/main/pbx.c (original)
+++ team/group/appdocsxml/main/pbx.c Mon Jul  7 00:56:27 2008
@@ -337,7 +337,7 @@
 static unsigned int hashtab_hash_labels(const void *obj);
 static void __ast_internal_context_destroy( struct ast_context *con);
 #ifdef XML_DOCUMENTATION
-mxml_node_t *documentation_tree = NULL;
+mxml_node_t *documentation_tree = NULL, *docs = NULL;
 static char *ast_mxml_get_field(const char *type, const char *name, const char *var); 
 void _mxml_error(const char *cb);
 #endif
@@ -2627,33 +2627,35 @@
 	}
 
 	/* not fully initted yet */
-	if(documentation_tree == NULL) {
+	if(documentation_tree == NULL || docs == NULL) {
 		ast_log(LOG_DEBUG, "Parsing XML Tree Error\n");
 		return fail; 
 	}
 
-	node = mxmlFindElement(documentation_tree, documentation_tree, type, "name", name, MXML_DESCEND);
-
-	if (!node) {
+	ast_log(LOG_WARNING, "Searching For: name:'%s' type:'%s' var:'%s'\n", name, type, var);
+	//ret = mxmlFindElement(docs, docs, type, "name", name, MXML_DESCEND);
+	//ret = mxmlFindElement(documentation_tree, documentation_tree, "application", "name", "Dial", MXML_DESCEND);
+
+	if (!ret) {
 		ast_log(LOG_WARNING, "Cannot find Documentation name:'%s' type:'%s' var:'%s'\n", name, type, var);
 		return fail;
 	}
 
-	lang_node = mxmlFindElement(node, documentation_tree, type, "language", documentation_language, MXML_DESCEND);	
+//	lang_node = mxmlFindElement(node, documentation_tree, type, "language", documentation_language, MXML_DESCEND);	
 	
 	/* Could not find language, use the default one without a language */
-	if (!lang_node) {
-		ret = mxmlFindElement(node, documentation_tree, var, NULL, NULL, MXML_NO_DESCEND);
-	} else {
-		ret = mxmlFindElement(lang_node, documentation_tree, var, NULL, NULL, MXML_NO_DESCEND);
-	}
+//	if (!lang_node) {
+//		ret = mxmlFindElement(node, documentation_tree, var, NULL, NULL, MXML_NO_DESCEND);
+//	} else {
+//		ret = mxmlFindElement(lang_node, documentation_tree, var, NULL, NULL, MXML_NO_DESCEND);
+//	}
 
 	if (!ret || !ret->child) {
 		ast_log(LOG_WARNING, "Cannot find varible '%s' in tree '%s'\n", name, var);
 		return fail;
 	}
 
-	ast_log(LOG_ERROR, "a) '%s' \n\n b) '%s' \n\ntype: '%s', name:'%s', var:'%s'", ret->value.opaque, ret->child->value.opaque, type, name, var);
+	ast_log(LOG_ERROR, "a) '%s' b) '%s' type: '%s', name:'%s', var:'%s'\n", ret->value.opaque, ret->child->value.opaque, type, name, var);
 	/* Dont need fail anymore */
 	free(fail);
 	return ret->child->value.opaque;
@@ -4428,6 +4430,7 @@
 
 	if (!xmldoc) {
 		ast_log(LOG_ERROR, "Could not open XML Doc at '%s'\n", FILE_XML_DOC);
+		documentation_tree = NULL;
 		return 1;
 	}
 
@@ -4435,12 +4438,18 @@
 
 	if (!documentation_tree) {
 		ast_log(LOG_ERROR, "Parsing Problem with Documentation Tree\n");
+		documentation_tree = NULL;
+		return 1;
 	}
 
 	fclose(xmldoc);
 
-	/* Ok, let's now process it. */
-	/* Check for errors in loading the doc */
+	docs = mxmlFindElement(documentation_tree, documentation_tree, "docs", NULL, NULL, MXML_DESCEND);
+
+	if(!docs || !docs->child) {
+		ast_log(LOG_ERROR, "Could not find the docs element in the XML documentation.\n");
+		return 1;
+	}
 
 	return 0;
 }




More information about the svn-commits mailing list