[svn-commits] tilghman: trunk r905 - /trunk/menuselect.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Tue Jul 5 16:52:32 CDT 2011


Author: tilghman
Date: Tue Jul  5 16:52:28 2011
New Revision: 905

URL: http://svnview.digium.com/svn/menuselect?view=rev&rev=905
Log:
Allow two types of "use", "external" and "module".

These only matter when autoconf doesn't find support for weak symbols, which
we use internally to Asterisk to allow some modules to be optionally used.

Patches:
	20110702__issue18062__menuselect.diff by tilghman (License #5003)

Tested by: iasgoscouk

Modified:
    trunk/menuselect.c

Modified: trunk/menuselect.c
URL: http://svnview.digium.com/svn/menuselect/trunk/menuselect.c?view=diff&rev=905&r1=904&r2=905
==============================================================================
--- trunk/menuselect.c (original)
+++ trunk/menuselect.c Tue Jul  5 16:52:28 2011
@@ -346,43 +346,49 @@
 			     cur3 = mxmlFindElement(cur3, cur2, "use", NULL, NULL, MXML_NO_DESCEND))
 			{
 #if !defined(HAVE_ATTRIBUTE_weak_import) && !defined(HAVE_ATTRIBUTE_weakref)
-				/* If the compiler won't support the functionality required for "use", then "use" -> "depend" */
-				if (!(dep = calloc(1, sizeof(*dep)))) {
-					free_member(mem);
-					return -1;
-				}
-				if ((tmp = mxmlElementGetAttr(cur3, "name"))) {
-					if (!strlen_zero(tmp)) {
-						dep->name = tmp;
-					}
-				}
-				if (!strlen_zero(cur3->child->value.opaque)) {
-					dep->displayname = cur3->child->value.opaque;
-					if (!dep->name) {
-						dep->name = dep->displayname;
-					}
-					AST_LIST_INSERT_TAIL(&mem->deps, dep, list);
-				} else {
-					free(dep);
-				}
-#else
-				if (!(use = calloc(1, sizeof(*use)))) {
-					free_member(mem);
-					return -1;
-				}
-				if ((tmp = mxmlElementGetAttr(cur3, "name"))) {
-					if (!strlen_zero(tmp)) {
-						use->name = tmp;
-					}
-				}
-				if (!strlen_zero(cur3->child->value.opaque)) {
-					use->displayname = cur3->child->value.opaque;
-					if (!use->name) {
-						use->name = use->displayname;
-					}
-					AST_LIST_INSERT_TAIL(&mem->uses, use, list);
-				} else
-					free(use);
+				const char *usetype;
+				if ((usetype = mxmlElementGetAttr(cur3, "type")) && !strcasecmp(usetype, "module")) {
+					/* If the compiler won't support the functionality required for "use", then "use" -> "depend" */
+					if (!(dep = calloc(1, sizeof(*dep)))) {
+						free_member(mem);
+						return -1;
+					}
+					if ((tmp = mxmlElementGetAttr(cur3, "name"))) {
+						if (!strlen_zero(tmp)) {
+							dep->name = tmp;
+						}
+					}
+					if (!strlen_zero(cur3->child->value.opaque)) {
+						dep->displayname = cur3->child->value.opaque;
+						if (!dep->name) {
+							dep->name = dep->displayname;
+						}
+						AST_LIST_INSERT_TAIL(&mem->deps, dep, list);
+					} else {
+						free(dep);
+					}
+				} else { /* use type != module */
+#endif
+					if (!(use = calloc(1, sizeof(*use)))) {
+						free_member(mem);
+						return -1;
+					}
+					if ((tmp = mxmlElementGetAttr(cur3, "name"))) {
+						if (!strlen_zero(tmp)) {
+							use->name = tmp;
+						}
+					}
+					if (!strlen_zero(cur3->child->value.opaque)) {
+						use->displayname = cur3->child->value.opaque;
+						if (!use->name) {
+							use->name = use->displayname;
+						}
+						AST_LIST_INSERT_TAIL(&mem->uses, use, list);
+					} else {
+						free(use);
+					}
+#if !defined(HAVE_ATTRIBUTE_weak_import) && !defined(HAVE_ATTRIBUTE_weakref)
+				}
 #endif
 			}
 




More information about the svn-commits mailing list