[asterisk-commits] branch russell/menuselect_buildoptions r34130 -
/team/russell/menuselect_buil...
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Wed Jun 14 08:54:29 MST 2006
Author: russell
Date: Wed Jun 14 10:54:28 2006
New Revision: 34130
URL: http://svn.digium.com/view/asterisk?rev=34130&view=rev
Log:
add support for saving build options to the makeopts output file and reading
them back from existing files
Modified:
team/russell/menuselect_buildoptions/build_tools/menuselect.c
Modified: team/russell/menuselect_buildoptions/build_tools/menuselect.c
URL: http://svn.digium.com/view/asterisk/team/russell/menuselect_buildoptions/build_tools/menuselect.c?rev=34130&r1=34129&r2=34130&view=diff
==============================================================================
--- team/russell/menuselect_buildoptions/build_tools/menuselect.c (original)
+++ team/russell/menuselect_buildoptions/build_tools/menuselect.c Wed Jun 14 10:54:28 2006
@@ -471,6 +471,39 @@
fprintf(stderr, "Unable to find '%s' in category '%s'\n", mem_name, cat_name);
}
+static void process_buildopt(char *buf)
+{
+ const char *bop_name, *mem_name;
+ struct category *cat;
+ struct member *mem;
+ struct buildopt *bop;
+
+ mem_name = strsep(&buf, "=");
+ bop_name = strsep(&buf, "\n");
+
+ if (!bop_name || !mem_name)
+ return;
+
+ AST_LIST_TRAVERSE(&categories, cat, list) {
+ AST_LIST_TRAVERSE(&cat->members, mem, list) {
+ if (strcasecmp(mem->name, mem_name))
+ continue;
+ AST_LIST_TRAVERSE(&mem->buildopts, bop, list) {
+ if (strcasecmp(bop->name, bop_name))
+ continue;
+ bop->enabled = 1;
+ break;
+ }
+ break;
+ }
+ if (bop)
+ break;
+ }
+
+ if (!bop || !mem)
+ fprintf(stderr, "Unable to find '%s' for member '%s'\n", bop_name, mem_name);
+}
+
/*! \brief Parse an existing output makeopts file and enable members previously selected */
static int parse_existing_config(const char *infile)
{
@@ -515,7 +548,12 @@
process_prev_failed_deps(parse);
continue;
}
-
+
+ if (!strcasecmp(category, "MENUSELECT_BUILDOPT")) {
+ process_buildopt(parse);
+ continue;
+ }
+
while ((member = strsep(&parse, " \n"))) {
member = skip_blanks(member);
if (strlen_zero(member))
@@ -535,6 +573,7 @@
FILE *f;
struct category *cat;
struct member *mem;
+ struct buildopt *bop;
if (!(f = fopen(output_makeopts, "w"))) {
fprintf(stderr, "Unable to open build configuration file (%s) for writing!\n", output_makeopts);
@@ -557,6 +596,10 @@
AST_LIST_TRAVERSE(&cat->members, mem, list) {
if (mem->depsfailed || mem->conflictsfailed)
fprintf(f, "MENUSELECT_DEPSFAILED=%s=%s\n", cat->name, mem->name);
+ AST_LIST_TRAVERSE(&mem->buildopts, bop, list) {
+ if (bop->enabled)
+ fprintf(f, "MENUSELECT_BUILDOPT=%s=%s\n", mem->name, bop->name);
+ }
}
}
@@ -588,7 +631,7 @@
if (!AST_LIST_EMPTY(&mem->conflicts))
fprintf(stderr, " --> Conflicts Found: %s\n", mem->conflictsfailed ? "Yes" : "No");
AST_LIST_TRAVERSE(&mem->buildopts, bop, list)
- fprintf(stderr, " --> Build Option: %s\n", bop->name);
+ fprintf(stderr, " --> Build Option: %s (%s)\n", bop->name, bop->enabled ? "Enabled" : "Disabled");
}
}
}
More information about the asterisk-commits
mailing list