Bug#781439: cdebconf-text-udeb: should allow text shortcuts
Control: tags -1 + patch
Hello,
Samuel Thibault, le Sun 29 Mar 2015 12:17:16 +0200, a écrit :
> When using the vocalized installer, the first question (language) is
> quite tedious: there are 50 choices, which means that on average the
> user will have to listen to 25 choices before hearing what he wants. And
> he has to, to know which number he has to type, unless knowing by heart
> the number (which is different from release to release since we add
> languages). It would be useful that cdebconf-text-udeb accept not only
> numbers, but also shortcuts, for instance fr or French. The former will
> probably be easier to implement since that's the Choices-C.
The attached patch is doing it quite easily indeed. Would it be OK for
Jessie?
Samuel
diff --git a/src/modules/frontend/text/text.c b/src/modules/frontend/text/text.c
index 9bae514..e90b837 100644
--- a/src/modules/frontend/text/text.c
+++ b/src/modules/frontend/text/text.c
@@ -590,7 +590,7 @@ static int text_handler_multiselect(struct frontend *obj, struct question *q)
static int text_handler_select(struct frontend *obj, struct question *q)
{
struct choices *choices = NULL;
- char answer[10];
+ char answer[128];
int i, choice, def = -1;
const char *defval;
int ret = DC_OK;
@@ -640,8 +640,19 @@ static int text_handler_select(struct frontend *obj, struct question *q)
}
if (ISEMPTY(answer))
choice = def;
- else
+ else {
choice = atoi(answer) - 1;
+ if (choice == -1) {
+ /* Not a number, perhaps the value */
+ for (i = 0; i < choices->count; i++) {
+ if (strcasecmp(choices->choices[choices->tindex[i]], answer) == 0) {
+ /* Yes */
+ choice = i;
+ break;
+ }
+ }
+ }
+ }
} while (choice < 0 || choice >= choices->count);
question_setvalue(q, choices->choices[choices->tindex[choice]]);
Reply to: