From b6edac21ddfd67b4495c58cd5b2e1f31b5fcd1ef Mon Sep 17 00:00:00 2001 From: Olivier Blin Date: Wed, 25 Apr 2007 14:42:17 +0000 Subject: implement ask_from_list_index() and drop other ask_from_list() functions --- mdk-stage1/newt-frontend.c | 58 +++++++++++++++++----------------------------- 1 file changed, 21 insertions(+), 37 deletions(-) (limited to 'mdk-stage1/newt-frontend.c') diff --git a/mdk-stage1/newt-frontend.c b/mdk-stage1/newt-frontend.c index 4bedda82b..731818a0d 100644 --- a/mdk-stage1/newt-frontend.c +++ b/mdk-stage1/newt-frontend.c @@ -172,55 +172,39 @@ void end_progression_raw(void) } -enum return_type ask_from_list_comments(char *msg, char ** elems, char ** elems_comments, char ** choice) +enum return_type ask_from_list_index(char *msg, char ** elems, char ** elems_comments, int * answer) { char * items[500]; - int answer = 0, rc; - char ** sav_elems = elems; - int i; + int rc; - i = 0; - while (elems && *elems) { - int j = (*elems_comments) ? strlen(*elems_comments) : 0; - items[i] = malloc(sizeof(char) * (strlen(*elems) + j + 4)); - strcpy(items[i], *elems); - if (*elems_comments) { - strcat(items[i], " ("); - strcat(items[i], *elems_comments); - strcat(items[i], ")"); - } - elems_comments++; - i++; - elems++; + if (elems_comments) { + int i; + + i = 0; + while (elems && *elems) { + int j = (*elems_comments) ? strlen(*elems_comments) : 0; + items[i] = malloc(sizeof(char) * (strlen(*elems) + j + 4)); + strcpy(items[i], *elems); + if (*elems_comments) { + strcat(items[i], " ("); + strcat(items[i], *elems_comments); + strcat(items[i], ")"); + } + elems_comments++; + i++; + elems++; + } + items[i] = NULL; } - items[i] = NULL; - rc = newtWinMenu("Please choose...", msg, 52, 5, 5, 7, items, &answer, "Ok", "Cancel", NULL); + rc = newtWinMenu("Please choose...", msg, 52, 5, 5, 7, elems_comments ? items : elems, answer, "Ok", "Cancel", NULL); if (rc == 2) return RETURN_BACK; - *choice = strdup(sav_elems[answer]); - return RETURN_OK; } - -enum return_type ask_from_list(char *msg, char ** elems, char ** choice) -{ - int answer = 0, rc; - - rc = newtWinMenu("Please choose...", msg, 52, 5, 5, 7, elems, &answer, "Ok", "Cancel", NULL); - - if (rc == 2) - return RETURN_BACK; - - *choice = strdup(elems[answer]); - - return RETURN_OK; -} - - enum return_type ask_yes_no(char *msg) { int rc; -- cgit v1.2.1