[asterisk-commits] mjordan: branch mjordan/terrys_parting_shot r379607 - in /team/mjordan/terrys...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sun Jan 20 18:18:01 CST 2013


Author: mjordan
Date: Sun Jan 20 18:17:56 2013
New Revision: 379607

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=379607
Log:
Clean up the last of the documentation

Get the config types to display their match info, clean up the res_xmpp
documentation, chan_motif documentation, and remove some stuff from
the dtd that we probably aren't going to use.


Modified:
    team/mjordan/terrys_parting_shot/apps/confbridge/conf_config_parser.c
    team/mjordan/terrys_parting_shot/channels/chan_motif.c
    team/mjordan/terrys_parting_shot/doc/appdocsxml.dtd
    team/mjordan/terrys_parting_shot/main/config_options.c
    team/mjordan/terrys_parting_shot/main/xmldoc.c
    team/mjordan/terrys_parting_shot/res/res_xmpp.c

Modified: team/mjordan/terrys_parting_shot/apps/confbridge/conf_config_parser.c
URL: http://svnview.digium.com/svn/asterisk/team/mjordan/terrys_parting_shot/apps/confbridge/conf_config_parser.c?view=diff&rev=379607&r1=379606&r2=379607
==============================================================================
--- team/mjordan/terrys_parting_shot/apps/confbridge/conf_config_parser.c (original)
+++ team/mjordan/terrys_parting_shot/apps/confbridge/conf_config_parser.c Sun Jan 20 18:17:56 2013
@@ -43,6 +43,7 @@
 
 /*** DOCUMENTATION
 	<configInfo name="app_confbridge" language="en_US">
+		<synopsis>Conference Bridge Application</synopsis>
 		<configFile name="confbridge.conf">
 			<configObject name="global">
 				<synopsis>Unused, but reserved.</synopsis>
@@ -51,7 +52,7 @@
 				<synopsis>A named profile to apply to specific callers.</synopsis>
 				<description><para>Callers in a ConfBridge have a profile associated with them
 				that determine their options. A configuration section is determined to be a
-				user_profile when the <replaceable>type</replaceable> parameter has a value
+				user_profile when the <literal>type</literal> parameter has a value
 				of <literal>user</literal>.
 				</para></description>
 				<configOption name="type">
@@ -227,7 +228,7 @@
 				<synopsis>A named profile to apply to specific bridges.</synopsis>
 				<description><para>ConfBridge bridges have a profile associated with them
 				that determine their options. A configuration section is determined to be a
-				<literal>bridge_profile</literal> when the <replaceable>type</replaceable> parameter has a value
+				<literal>bridge_profile</literal> when the <literal>type</literal> parameter has a value
 				of <literal>bridge</literal>.
 				</para></description>
 				<configOption name="type">
@@ -383,6 +384,12 @@
 				</configOption>
 			</configObject>
 			<configObject name="menu">
+				<synopsis>A conference user menu</synopsis>
+				<description>
+					<para>Conference users, as defined by a <literal>conf_user</literal>,
+					can have a DTMF menu assigned to their profile when they enter the
+					<literal>ConfBridge</literal> application.</para>
+				</description>
 				<configOption name="type">
 					<synopsis>Define this configuration category as a menu</synopsis>
 					<description><para>The type parameter determines how a context in the

Modified: team/mjordan/terrys_parting_shot/channels/chan_motif.c
URL: http://svnview.digium.com/svn/asterisk/team/mjordan/terrys_parting_shot/channels/chan_motif.c?view=diff&rev=379607&r1=379606&r2=379607
==============================================================================
--- team/mjordan/terrys_parting_shot/channels/chan_motif.c (original)
+++ team/mjordan/terrys_parting_shot/channels/chan_motif.c Sun Jan 20 18:17:56 2013
@@ -79,11 +79,77 @@
 
 /*** DOCUMENTATION
 	<configInfo name="chan_motif" language="en_US">
+		<synopsis>Jingle Channel Driver</synopsis>
+		<description>
+			<para><emphasis>Transports</emphasis></para>
+			<para>There are three different transports and protocol derivatives
+			supported by <literal>chan_motif</literal>. They are in order of
+			preference: Jingle using ICE-UDP, Google Jingle, and Google-V1.</para>
+			<para>Jingle as defined in XEP-0166 supports the widest range of
+			features. It is referred to as <literal>ice-udp</literal>. This is
+			the specification that Jingle clients implement.</para>
+			<para>Google Jingle follows the Jingle specification for signaling
+			but uses a custom transport for media. It is supported by the
+			Google Talk Plug-in in Gmail and by some other Jingle clients. It
+			is referred to as <literal>google</literal> in this file.</para>
+			<para>Google-V1 is the original Google Talk signaling protocol
+			which uses an initial preliminary version of Jingle. It also uses
+			the same custom transport as Google Jingle for media. It is
+			supported by Google Voice, some other Jingle clients, and the
+			Windows Google Talk client. It is referred to as <literal>google-v1</literal>
+			in this file.</para>
+			<para>Incoming sessions will automatically switch to the correct
+			transport once it has been determined.</para>
+			<para>Outgoing sessions are capable of determining if the target
+			is capable of Jingle or a Google transport if the target is in the
+			roster. Unfortunately it is not possible to differentiate between
+			a Google Jingle or Google-V1 capable resource until a session
+			initiate attempt occurs. If a resource is determined to use a
+			Google transport it will initially use Google Jingle but will fall
+			back to Google-V1 if required.</para>
+			<para>If an outgoing session attempt fails due to failure to
+			support the given transport <literal>chan_motif</literal> will
+			fall back in preference order listed previously until all
+			transports have been exhausted.</para>
+			<para><emphasis>Dialing and Resource Selection Strategy</emphasis></para>
+			<para>Placing a call through an endpoint can be accomplished using the
+			following dial string:</para>
+			<para><literal>Motif/[endpoint name]/[target]</literal></para>
+			<para>When placing an outgoing call through an endpoint the requested
+			target is searched for in the roster list. If present the first Jingle
+			or Google Jingle capable resource is specifically targeted. Since the
+			capabilities of the resource are known the outgoing session initiation
+			will disregard the configured transport and use the determined one.</para>
+			<para>If the target is not found in the roster the target will be used
+			as-is and a session will be initiated using the transport specified
+			in this configuration file. If no transport has been specified the
+			endpoint defaults to <literal>ice-udp</literal>.</para>
+			<para><emphasis>Video Support</emphasis></para>
+			<para>Support for video does not need to be explicitly enabled.
+			Configuring any video codec on your endpoint will automatically enable
+			it.</para>
+			<para><emphasis>DTMF</emphasis></para>
+			<para>The only supported method for DTMF is RFC2833. This is always
+			enabled on audio streams and negotiated if possible.</para>
+			<para><emphasis>Incoming Calls</emphasis></para>
+			<para>Incoming calls will first look for the extension matching the
+			name of the endpoint in the configured context. If no such extension
+			exists the call will automatically fall back to the <literal>s</literal> extension.</para>
+			<para><emphasis>CallerID</emphasis></para>
+			<para>The incoming caller id number is populated with the username of
+			the caller and the name is populated with the full identity of the
+			caller. If you would like to perform authentication or filtering
+			of incoming calls it is recommended that you use these fields to do so.</para>
+			<para>Outgoing caller id can <emphasis>not</emphasis> be set.</para>
+			<warning>
+				<para>Multiple endpoints using the
+				same connection is <emphasis>NOT</emphasis> supported. Doing so
+				may result in broken calls.</para>
+			</warning>
+		</description>
 		<configFile name="motif.conf">
 			<configObject name="endpoint">
 				<synopsis>The configuration for an endpoint.</synopsis>
-				<description><para>
-				</para></description>
 				<configOption name="context">
 					<synopsis>Default dialplan context that incoming sessions will be routed to</synopsis>
 				</configOption>
@@ -117,41 +183,25 @@
 				<configOption name="transport">
 					<synopsis>The transport to use for the endpoint.</synopsis>
 					<description>
-						<para>There are three different transports and protocol derivatives supported
-						by <literal>chan_motif</literal>. They are in order of preference:</para>
-						<para>Jingle using ICE-UDP, Google Jingle, and Google-V1.</para>
-						<para>Jingle as defined in XEP-0166 supports the widest range of features.
-						It is referred to as <literal>ice-udp</literal>. This is
-						the specification that Jingle clients implement.</para>
- 	 	 	 	 	 	<para>Google Jingle follows the Jingle specification for signaling but
- 	 	 	 	 	 	uses a custom transport for media. It is supported by the Google Talk Plug-in
- 	 	 	 	 	 	in Gmail and by some other Jingle clients. It is referred to as
- 	 	 	 	 	 	<literal>google</literal> in this file.</para>
-						<para>Google-V1 is the original Google Talk signaling protocol which uses
-						an initial preliminary version of Jingle. It also uses the same
-						custom transport as Google Jingle for media. It is supported by
-						Google Voice, some other Jingle clients, and the Windows Google
-						Talk client. It is referred to as <literal>google-v1</literal>
-						in this file.</para>
-						<para>Incoming sessions will automatically switch to the correct
-						transport once it has been determined.</para>
-						<para>Outgoing sessions are capable of determining if the target
-						is capable of Jingle or a Google transport if the target is
-						in the roster. Unfortunately it is not possible to differentiate
-						between a Google Jingle or Google-V1 capable resource until a
-						session initiate attempt occurs. If a resource is determined to
-						use a Google transport it will initially use Google Jingle but
-						will fall back to Google-V1 if required.</para>
-						<para>If an outgoing session attempt fails due to failure to
-						support the given transport <literal>chan_motif</literal> will
-						fall back in preference order listed previously until all
-						transports have been exhausted.</para>
-						<para>Choose the transport for this endpoint. Allowed transports are
-						 <literal>ice-udp</literal>, <literal>google</literal>, or <literal>google-v1</literal>.</para>
+						<para>The default outbound transport for this endpoint. Inbound
+						messages are inferred. Allowed transports are <literal>ice-udp</literal>,
+						<literal>google</literal>, or <literal>google-v1</literal>. Note
+						that <literal>chan_motif</literal> will fall back to transport
+						preference order if the transport value chosen here fails.</para>
 						<enumlist>
-							<enum name="ice-udp"></enum>
-							<enum name="google"></enum>
-							<enum name="google-v1"></enum>
+							<enum name="ice-udp">
+								<para>The Jingle protocol, as defined in XEP 0166.</para>
+							</enum>
+							<enum name="google">
+								<para>The Google Jingle protocol, which follows the Jingle
+								specification for signaling but uses a custom transport for
+								media.</para>
+							</enum>
+							<enum name="google-v1">
+								<para>Google-V1 is the original Google Talk signaling
+								protocol which uses an initial preliminary version of Jingle.
+								It also uses the same custom transport as <literal>google</literal> for media.</para>
+							</enum>
 						</enumlist>
 					</description>
 				</configOption>

Modified: team/mjordan/terrys_parting_shot/doc/appdocsxml.dtd
URL: http://svnview.digium.com/svn/asterisk/team/mjordan/terrys_parting_shot/doc/appdocsxml.dtd?view=diff&rev=379607&r1=379606&r2=379607
==============================================================================
--- team/mjordan/terrys_parting_shot/doc/appdocsxml.dtd (original)
+++ team/mjordan/terrys_parting_shot/doc/appdocsxml.dtd Sun Jan 20 18:17:56 2013
@@ -39,7 +39,7 @@
   <!ELEMENT managerEventInstance (synopsis?,syntax?,description?,see-also?)*>
   <!ATTLIST managerEventInstance class CDATA #REQUIRED>
 
-  <!ELEMENT configInfo (configFile+)>
+  <!ELEMENT configInfo (synopsis?,description?,configFile+)>
   <!ATTLIST configInfo name CDATA #REQUIRED>
   <!ATTLIST configInfo language CDATA #REQUIRED>
 
@@ -62,11 +62,6 @@
 
   <!ELEMENT field (#PCDATA)>
   <!ATTLIST field name CDATA #REQUIRED>
-
-  <!ELEMENT dataType EMPTY>
-  <!ATTLIST dataType type (string|uint|integer|boolean|float|enum) #REQUIRED>
-  <!ATTLIST dataType max CDATA #IMPLIED>
-  <!ATTLIST dataType min CDATA #IMPLIED>
 
   <!ELEMENT info (para|note|warning|variablelist|enumlist|info|xi:include)*>
   <!ATTLIST info name CDATA #REQUIRED>

Modified: team/mjordan/terrys_parting_shot/main/config_options.c
URL: http://svnview.digium.com/svn/asterisk/team/mjordan/terrys_parting_shot/main/config_options.c?view=diff&rev=379607&r1=379606&r2=379607
==============================================================================
--- team/mjordan/terrys_parting_shot/main/config_options.c (original)
+++ team/mjordan/terrys_parting_shot/main/config_options.c Sun Jan 20 18:17:56 2013
@@ -722,26 +722,6 @@
 	return 0;
 }
 
-#ifdef AST_XML_DOCS
-static void update_runtime_type_docs(const char *module, struct aco_type *type)
-{
-	RAII_VAR(struct ast_xml_doc_item *, config_info, ao2_find(xmldocs, module, OBJ_KEY), ao2_cleanup);
-	struct ast_xml_doc_item *config_type;
-
-	if (!config_info || !(config_type = find_xmldoc_type(config_info, type->name))) {
-		return;
-	}
-	if (ast_str_strlen(config_type->syntax)) {
-		return;
-	}
-
-	ast_str_set(&config_type->syntax, 0, "category %s /%s/\n", type->category_match == ACO_WHITELIST ? "=~" : "!~", type->category);
-	if (!ast_strlen_zero(type->matchfield)) {
-		ast_str_append(&config_type->syntax, 0, "matchfield: %s = %s\n", type->matchfield, type->matchvalue);
-	}
-}
-#endif /* AST_XML_DOCS */
-
 int aco_info_init(struct aco_info *info)
 {
 	size_t x = 0, y = 0;
@@ -761,7 +741,6 @@
 			if (xmldoc_update_config_type(info->module, type->name, type->category, type->matchfield, type->matchvalue, type->category_match == ACO_WHITELIST)) {
 				goto error;
 			}
-			update_runtime_type_docs(info->module, type);
 #endif /* AST_XML_DOCS */
 		}
 	}
@@ -895,159 +874,6 @@
 	return c;
 }
 
-
-static char *cli_show_types(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
-{
-	RAII_VAR(struct ast_xml_doc_item *, item, NULL, ao2_cleanup);
-	struct ast_xml_doc_item *tmp;
-
-	switch (cmd) {
-	case CLI_INIT:
-		e->command = "config show types";
-		e->usage =
-			"Usage: config show types <module>\n"
-			"   Lists a module's different config object types.\n";
-		return NULL;
-	case CLI_GENERATE:
-		return complete_config_module(a->word, a->pos, a->n);
-	}
-
-	if (a->argc != 4) {
-		return CLI_SHOWUSAGE;
-	}
-
-	if (!(item = ao2_find(xmldocs, a->argv[3], OBJ_KEY))) {
-		ast_cli(a->fd, "Module %s not found.\n", a->argv[3]);
-		return NULL;
-	}
-
-	tmp = item;
-	ast_cli(a->fd, "Config option types for %s:\n", tmp->name);
-	while ((tmp = tmp->next)) {
-		if (!strcasecmp(tmp->type, "configObject")) {
-			ast_cli(a->fd, "%20.20s: %-78.78s\n", tmp->name, ast_str_buffer(tmp->synopsis));
-		}
-	}
-	return CLI_SUCCESS;
-}
-
-static char *cli_show_type(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
-{
-	RAII_VAR(struct ast_xml_doc_item *, item, NULL, ao2_cleanup);
-	struct ast_xml_doc_item *tmp;
-
-	switch (cmd) {
-	case CLI_INIT:
-		e->command = "config show type";
-		e->usage =
-			"Usage: config show type <module> <type>\n"
-			"   Display detailed information about a config object type.\n";
-		return NULL;
-	case CLI_GENERATE:
-		switch(a->pos) {
-		case 3: return complete_config_module(a->word, a->pos, a->n);
-		case 4: return complete_config_type(a->argv[3], a->word, a->pos, a->n);
-		default: return NULL;
-		}
-	}
-
-	if (a->argc != 5) {
-		return CLI_SHOWUSAGE;
-	}
-
-	if (!(item = ao2_find(xmldocs, a->argv[3], OBJ_KEY))) {
-		return NULL;
-	}
-	tmp = item;
-	while ((tmp = tmp->next)) {
-		if (!strcasecmp(tmp->type, "configObject") && !strcasecmp(tmp->name, a->argv[4])) {
-			ast_cli(a->fd, "%s\n", tmp->name);
-			ast_cli(a->fd, "Synopsis: %s\n", AS_OR(tmp->synopsis, "n/a"));
-			ast_cli(a->fd, "Description:\n\t%s\n", AS_OR(tmp->description, "n/a"));
-			ast_cli(a->fd, "Syntax:\n\t%s\n", AS_OR(tmp->syntax, "n/a"));
-		}
-	}
-
-	return CLI_SUCCESS;
-}
-
-static char *cli_show_options(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
-{
-	RAII_VAR(struct ast_xml_doc_item *, item, NULL, ao2_cleanup);
-	struct ast_xml_doc_item *tmp;
-
-	switch (cmd) {
-	case CLI_INIT:
-		e->command = "config show options";
-		e->usage =
-			"Usage: config show options <module> [<type>]\n"
-			"   Lists a module's different config options.\n";
-		return NULL;
-	case CLI_GENERATE:
-		switch(a->pos) {
-		case 3: return complete_config_module(a->word, a->pos, a->n);
-		case 4: return complete_config_type(a->argv[3], a->word, a->pos, a->n);
-		default: return NULL;
-		}
-	}
-
-	if (a->argc < 4 || a->argc > 5) {
-		return CLI_SHOWUSAGE;
-	}
-
-	if (!(item = ao2_find(xmldocs, a->argv[3], OBJ_KEY))) {
-		return NULL;
-	}
-	tmp = item;
-	while ((tmp = tmp->next)) {
-		if (!strcasecmp(tmp->type, "configOption") && (a->argc == 4 || !strcasecmp(tmp->ref, a->argv[4]))) {
-			ast_cli(a->fd, "<%s> %s\n", tmp->ref, tmp->name);
-		}
-	}
-
-	return CLI_SUCCESS;
-}
-
-static char *cli_show_option(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
-{
-	RAII_VAR(struct ast_xml_doc_item *, item, NULL, ao2_cleanup);
-	struct ast_xml_doc_item *tmp;
-
-	switch (cmd) {
-	case CLI_INIT:
-		e->command = "config show option";
-		e->usage =
-			"Usage: config show option <module> <type> <name>\n"
-			"   Display detailed information about a config option.\n";
-		return NULL;
-	case CLI_GENERATE:
-		switch(a->pos) {
-		case 3: return complete_config_module(a->word, a->pos, a->n);
-		case 4: return complete_config_type(a->argv[3], a->word, a->pos, a->n);
-		case 5: return complete_config_option(a->argv[3], a->argv[4], a->word, a->pos, a->n);
-		default: return NULL;
-		}
-	}
-
-	if (a->argc != 6) {
-		return CLI_SHOWUSAGE;
-	}
-
-	if (!(item = ao2_find(xmldocs, a->argv[3], OBJ_KEY))) {
-		return NULL;
-	}
-	tmp = item;
-	while ((tmp = tmp->next)) {
-		if (!strcasecmp(tmp->type, "configOption") && !strcasecmp(tmp->ref, a->argv[4]) && !strcasecmp(tmp->name, a->argv[5])) {
-			ast_cli(a->fd, "<%s> %s\n", tmp->ref, tmp->name);
-			ast_cli(a->fd, "Syntax:\n\t%s\n", AS_OR(tmp->syntax, "n/a"));
-			ast_cli(a->fd, "Synopsis: %s\n", AS_OR(tmp->synopsis, "n/a"));
-			ast_cli(a->fd, "Description:\n\t%s\n", AS_OR(tmp->description, "n/a"));
-		}
-	}
-	return CLI_SUCCESS;
-}
-
 #ifdef AST_XML_DOCS
 
 #define XMLDOC_STRICT 1
@@ -1055,6 +881,8 @@
 static int xmldoc_update_config_type(const char *module, const char *name, const char *category, const char *matchfield, const char *matchvalue, unsigned int matches)
 {
 	RAII_VAR(struct ast_xml_xpath_results *, results, NULL, ast_xml_xpath_results_free);
+	RAII_VAR(struct ast_xml_doc_item *, config_info, ao2_find(xmldocs, module, OBJ_KEY), ao2_cleanup);
+	struct ast_xml_doc_item *config_type;
 	struct ast_xml_node *type, *syntax, *matchinfo, *tmp;
 
 	/* If we already have a syntax element, bail. This isn't an error, since we may unload a module which
@@ -1075,17 +903,17 @@
 
 	if (!(syntax = ast_xml_new_child(type, "syntax"))) {
 		ast_log(LOG_WARNING, "Could not create syntax node for type '%s' in module '%s'\n", name, module);
-		return -1;
+		return XMLDOC_STRICT ? -1 : 0;
 	}
 
 	if (!(matchinfo = ast_xml_new_child(syntax, "matchInfo"))) {
 		ast_log(LOG_WARNING, "Could not create matchInfo node for type '%s' in module '%s'\n", name, module);
-		return -1;
+		return XMLDOC_STRICT ? -1 : 0;
 	}
 
 	if (!(tmp = ast_xml_new_child(matchinfo, "category"))) {
 		ast_log(LOG_WARNING, "Could not create category node for type '%s' in module '%s'\n", name, module);
-		return -1;
+		return XMLDOC_STRICT ? -1 : 0;
 	}
 
 	ast_xml_set_text(tmp, category);
@@ -1093,11 +921,21 @@
 
 	if (!ast_strlen_zero(matchfield) && !(tmp = ast_xml_new_child(matchinfo, "field"))) {
 		ast_log(LOG_WARNING, "Could not add %s attribute for type '%s' in module '%s'\n", matchfield, name, module);
-		return -1;
+		return XMLDOC_STRICT ? -1 : 0;
 	}
 
 	ast_xml_set_attribute(tmp, "name", matchfield);
 	ast_xml_set_text(tmp, matchvalue);
+
+	if (!config_info || !(config_type = find_xmldoc_type(config_info, name))) {
+		ast_log(LOG_WARNING, "Could not obtain XML documentation item for config type %s\n", name);
+		return XMLDOC_STRICT ? -1 : 0;
+	}
+
+	if (ast_xmldoc_regenerate_doc_item(config_type)) {
+		ast_log(LOG_WARNING, "Could not update type '%s' with values from config type registration\n", name);
+		return XMLDOC_STRICT ? -1 : 0;
+	}
 
 	return 0;
 }
@@ -1172,6 +1010,13 @@
 		return;
 	}
 
+	if (ast_str_strlen(item->synopsis)) {
+		ast_cli(a->fd, "%s\n\n", ast_xmldoc_printable(ast_str_buffer(item->synopsis), 1));
+	}
+	if (ast_str_strlen(item->description)) {
+		ast_cli(a->fd, "%s\n\n", ast_xmldoc_printable(ast_str_buffer(item->description), 1));
+	}
+
 	tmp = item;
 	ast_cli(a->fd, "Configuration option types for %s:\n", tmp->name);
 	while ((tmp = tmp->next)) {
@@ -1185,6 +1030,7 @@
 {
 	RAII_VAR(struct ast_xml_doc_item *, item, NULL, ao2_cleanup);
 	struct ast_xml_doc_item *tmp;
+	char option_type[64];
 	int match = 0;
 
 	ast_assert(a->argc == 5);
@@ -1198,8 +1044,16 @@
 	while ((tmp = tmp->next)) {
 		if (!strcasecmp(tmp->type, "configObject") && !strcasecmp(tmp->name, a->argv[4])) {
 			match = 1;
-			ast_cli(a->fd, "[%s]\n\n", tmp->name);
-			ast_cli(a->fd, "%s\n\n", AS_OR(tmp->synopsis, "No information available"));
+			term_color(option_type, tmp->name, COLOR_MAGENTA, COLOR_BLACK, sizeof(option_type));
+			ast_cli(a->fd, "%s", option_type);
+			if (ast_str_strlen(tmp->syntax)) {
+				ast_cli(a->fd, ": [%s]\n\n", ast_xmldoc_printable(ast_str_buffer(tmp->syntax), 1));
+			} else {
+				ast_cli(a->fd, "\n\n");
+			}
+			if (ast_str_strlen(tmp->synopsis)) {
+				ast_cli(a->fd, "%s\n\n", ast_xmldoc_printable(ast_str_buffer(tmp->synopsis), 1));
+			}
 			if (ast_str_strlen(tmp->description)) {
 				ast_cli(a->fd, "%s\n\n", ast_xmldoc_printable(ast_str_buffer(tmp->description), 1));
 			}
@@ -1307,14 +1161,8 @@
 	return CLI_SUCCESS;
 }
 
-
-
 static struct ast_cli_entry cli_aco[] = {
 	AST_CLI_DEFINE(cli_show_help, "Show configuration help for a module"),
-	AST_CLI_DEFINE(cli_show_types, "List a module's config object types"),
-	AST_CLI_DEFINE(cli_show_type, "Display detailed information about a config object type"),
-	AST_CLI_DEFINE(cli_show_options, "List a module's config options"),
-	AST_CLI_DEFINE(cli_show_option, "Display detailed information about a config option"),
 };
 
 static void aco_deinit(void)

Modified: team/mjordan/terrys_parting_shot/main/xmldoc.c
URL: http://svnview.digium.com/svn/asterisk/team/mjordan/terrys_parting_shot/main/xmldoc.c?view=diff&rev=379607&r1=379606&r2=379607
==============================================================================
--- team/mjordan/terrys_parting_shot/main/xmldoc.c (original)
+++ team/mjordan/terrys_parting_shot/main/xmldoc.c Sun Jan 20 18:17:56 2013
@@ -1148,14 +1148,14 @@
 	if (attr_value) {
 		match = ast_true(attr_value);
 		text = ast_xml_get_text(tmp);
-		ast_str_set(&syntax, 0, "category %s /%s/\n", match ? "=~" : "!~", text);
+		ast_str_set(&syntax, 0, "category %s /%s/", match ? "=~" : "!~", text);
 		ast_xml_free_attr(attr_value);
 	}
 
 	if ((tmp = ast_xml_find_element(ast_xml_node_get_children(matchinfo), "field", NULL, NULL))) {
 		text = ast_xml_get_text(tmp);
 		attr_value = ast_xml_get_attribute(tmp, "name");
-		ast_str_append(&syntax, 0, "matchfield: %s = %s\n", S_OR(attr_value, "Unknown"), text);
+		ast_str_append(&syntax, 0, " matchfield: %s = %s", S_OR(attr_value, "Unknown"), text);
 		ast_xml_free_attr(attr_value);
 	}
 	return ast_strdup(ast_str_buffer(syntax));
@@ -1194,6 +1194,7 @@
 	MANAGER_SYNTAX,
 	MANAGER_EVENT_SYNTAX,
 	CONFIG_INFO_SYNTAX,
+	CONFIG_FILE_SYNTAX,
 	CONFIG_OPTION_SYNTAX,
 	CONFIG_OBJECT_SYNTAX,
 	COMMAND_SYNTAX
@@ -1209,6 +1210,7 @@
     { "manager",      MANAGER_SYNTAX       },
     { "managerEvent", MANAGER_EVENT_SYNTAX },
     { "configInfo",   CONFIG_INFO_SYNTAX   },
+    { "configFile",   CONFIG_FILE_SYNTAX   },
     { "configOption", CONFIG_OPTION_SYNTAX },
     { "configObject", CONFIG_OBJECT_SYNTAX },
     { "agi",          COMMAND_SYNTAX       },

Modified: team/mjordan/terrys_parting_shot/res/res_xmpp.c
URL: http://svnview.digium.com/svn/asterisk/team/mjordan/terrys_parting_shot/res/res_xmpp.c?view=diff&rev=379607&r1=379606&r2=379607
==============================================================================
--- team/mjordan/terrys_parting_shot/res/res_xmpp.c (original)
+++ team/mjordan/terrys_parting_shot/res/res_xmpp.c Sun Jan 20 18:17:56 2013
@@ -289,10 +289,12 @@
 		Note that this field is required for XMPP messages.</para>
 	</info>
 	<configInfo name="res_xmpp" language="en_US">
+		<synopsis>XMPP Messaging</synopsis>
 		<configFile name="xmpp.conf">
 			<configObject name="global">
+				<synopsis>Global configuration settings</synopsis>
 				<configOption name="debug">
-					<synopsis>Enable debugging</synopsis>
+					<synopsis>Enable/disable XMPP message debugging</synopsis>
 				</configOption>
 				<configOption name="autoprune">
 					<synopsis>Auto-remove users from buddy list.</synopsis>
@@ -302,7 +304,7 @@
 					</para></description>
 				</configOption>
 				<configOption name="autoregister">
-					<synopsis>Auto-register users bfrom buddy list</synopsis>
+					<synopsis>Auto-register users from buddy list</synopsis>
 				</configOption>
 				<configOption name="collection_nodes">
 					<synopsis>Enable support for XEP-0248 for use with distributed device state</synopsis>
@@ -315,6 +317,7 @@
 				</configOption>
 			</configObject>
 			<configObject name="client">
+				<synopsis>Configuration options for an XMPP client</synopsis>
 				<configOption name="username">
 					<synopsis>XMPP username with optional resource</synopsis>
 				</configOption>
@@ -343,7 +346,7 @@
 					<synopsis>Timeout in seconds to hold incoming messages</synopsis>
 					<description><para>Timeout (in seconds) on the message stack. Messages stored longer
 					than this value will be deleted by Asterisk. This option applies to incoming messages only
-					which are intended to be processed by the JABBER_RECEIVE dialplan function.
+					which are intended to be processed by the <literal>JABBER_RECEIVE</literal> dialplan function.
 					</para></description>
 				</configOption>
 				<configOption name="debug">
@@ -365,7 +368,7 @@
 					<synopsis>Force the use of old-style SSL for the connection</synopsis>
 				</configOption>
 				<configOption name="keepalive">
-					<synopsis></synopsis>
+					<synopsis>If enabled, periodically send an XMPP message from this client with an empty message</synopsis>
 				</configOption>
 				<configOption name="autoprune">
 					<synopsis>Auto-remove users from buddy list.</synopsis>
@@ -384,7 +387,16 @@
 					<synopsis>Send incoming messages into the dialplan</synopsis>
 				</configOption>
 				<configOption name="status">
-					<synopsis>XMPP status-chat, available, away, xaway, or dnd</synopsis>
+					<synopsis>Default XMPP status for the client</synopsis>
+					<description><para>Can be one of the following XMPP statuses:</para>
+						<enumlist>
+							<enum name="chat"/>
+							<enum name="available"/>
+							<enum name="away"/>
+							<enum name="xaway"/>
+							<enum name="dnd"/>
+						</enumlist>
+					</description>
 				</configOption>
 				<configOption name="buddy">
 					<synopsis>Manual addition of buddy to list</synopsis>




More information about the asterisk-commits mailing list