allow menuselect to display dependencies and conflicts for modules

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@31443 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Russell Bryant 2006-06-01 17:40:50 +00:00
parent 4d17451c55
commit 4508c9fcc0
3 changed files with 39 additions and 20 deletions

View File

@ -40,20 +40,6 @@
#undef MENUSELECT_DEBUG
struct depend {
/*! the name of the dependency */
const char *name;
/*! for linking */
AST_LIST_ENTRY(depend) list;
};
struct conflict {
/*! the name of the conflict */
const char *name;
/*! for linking */
AST_LIST_ENTRY(conflict) list;
};
/*! The list of categories */
struct categories categories = AST_LIST_HEAD_NOLOCK_INIT_VALUE;

View File

@ -31,8 +31,19 @@
#define OUTPUT_MAKEOPTS_DEFAULT "menuselect.makeopts"
#define MENUSELECT_DEPS "build_tools/menuselect-deps"
struct depend;
struct conflict;
struct depend {
/*! the name of the dependency */
const char *name;
/*! for linking */
AST_LIST_ENTRY(depend) list;
};
struct conflict {
/*! the name of the conflict */
const char *name;
/*! for linking */
AST_LIST_ENTRY(conflict) list;
};
struct member {
/*! What will be sent to the makeopts file */

View File

@ -126,7 +126,9 @@ void draw_category_menu(WINDOW *menu, struct category *cat, int start, int end,
{
int i = 0;
int j = 0;
struct member *mem;
struct member *mem, *curmem = NULL;
struct depend *dep;
struct conflict *con;
char buf[64];
const char *desc = NULL;
@ -146,15 +148,35 @@ void draw_category_menu(WINDOW *menu, struct category *cat, int start, int end,
waddstr(menu, buf);
if (curopt + 1 == i)
desc = mem->displayname;
curmem = mem;
if (i == end)
break;
}
if (desc) {
if (curmem->displayname) {
wmove(menu, end - start + 2, max_x / 2 - 16);
waddstr(menu, desc);
waddstr(menu, curmem->displayname);
}
if (!AST_LIST_EMPTY(&curmem->deps)) {
wmove(menu, end - start + 3, max_x / 2 - 16);
snprintf(buf, sizeof(buf), "Depends on: ");
AST_LIST_TRAVERSE(&curmem->deps, dep, list) {
strncat(buf, dep->name, sizeof(buf) - strlen(buf) - 1);
if (AST_LIST_NEXT(dep, list))
strncat(buf, ", ", sizeof(buf) - strlen(buf) - 1);
}
waddstr(menu, buf);
}
if (!AST_LIST_EMPTY(&curmem->conflicts)) {
wmove(menu, end - start + 4, max_x / 2 - 16);
snprintf(buf, sizeof(buf), "Conflicts with: ");
AST_LIST_TRAVERSE(&curmem->conflicts, con, list) {
strncat(buf, con->name, sizeof(buf) - strlen(buf) - 1);
if (AST_LIST_NEXT(con, list))
strncat(buf, ", ", sizeof(buf) - strlen(buf) - 1);
}
waddstr(menu, buf);
}
wmove(menu, curopt - start, max_x / 2 - 9);