From 4508c9fcc036d1888f6b650e9adbe4f78c7a5377 Mon Sep 17 00:00:00 2001 From: Russell Bryant <russell@russellbryant.com> Date: Thu, 1 Jun 2006 17:40:50 +0000 Subject: [PATCH] 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 --- build_tools/menuselect.c | 14 -------------- build_tools/menuselect.h | 15 +++++++++++++-- build_tools/menuselect_curses.c | 30 ++++++++++++++++++++++++++---- 3 files changed, 39 insertions(+), 20 deletions(-) diff --git a/build_tools/menuselect.c b/build_tools/menuselect.c index 51f31b6385..ca23caf112 100644 --- a/build_tools/menuselect.c +++ b/build_tools/menuselect.c @@ -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; diff --git a/build_tools/menuselect.h b/build_tools/menuselect.h index 5fc34d0494..fbb76333b8 100644 --- a/build_tools/menuselect.h +++ b/build_tools/menuselect.h @@ -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 */ diff --git a/build_tools/menuselect_curses.c b/build_tools/menuselect_curses.c index bdb6cf93f9..7c684bd49d 100644 --- a/build_tools/menuselect_curses.c +++ b/build_tools/menuselect_curses.c @@ -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); -- GitLab