char **,	choices)
CONST char **,	choices)
PRIVATE int boolean_choice ARGS4(	int,		cur_choice,	int,		line,	int,		column,	char **,	choices){    int response = 0;    int cmd = 0;    int number = 0;    int col = (column >= 0 ? column : COL_OPTION_VALUES);    int orig_choice = cur_choice;    /*     *	Get the number of choices and then make     *	number zero-based.     */    for (number = 0; choices[number] != NULL; number++)	;  /* empty loop body */    number--;    /*     *	Update the statusline.     */    _statusline(ANY_KEY_CHANGE_RET_ACCEPT);    /*     *	Highlight the current choice.     */    move(line, col);    start_reverse();    addstr(choices[cur_choice]);    if (LYShowCursor)	move(line, (col - 1));    refresh();    /*     *	Get the keyboard entry, and leave the     *	cursor at the choice, to indicate that     *	it can be changed, until the user accepts     *	the current choice.     */    term_options = FALSE;    while (1) {	move(line, col);	if (term_options == FALSE) {	    response = LYgetch();	}	if (term_options || response == 7 || response == 3) {	     /*	      *  Control-C or Control-G.	      */	    response = '\n';	    term_options = TRUE;	    cur_choice = orig_choice;	}#ifdef VMS	if (HadVMSInterrupt) {	    HadVMSInterrupt = FALSE;	    response = '\n';	    term_options = TRUE;	    cur_choice = orig_choice;	}#endif /* VMS */	if ((response != '\n' && response != '\r') &&	    (cmd = keymap[response+1]) != LYK_ACTIVATE) {	    switch (cmd) {		case LYK_HOME:		    cur_choice = 0;		    break;		case LYK_END:		    cur_choice = number;		    break;		case LYK_REFRESH:		    lynx_force_repaint();		    refresh();		    break;		case LYK_QUIT:		case LYK_ABORT:		case LYK_PREV_DOC:		    cur_choice = orig_choice;		    term_options = TRUE;		    break;		case LYK_PREV_PAGE:		case LYK_UP_HALF:		case LYK_UP_TWO:		case LYK_PREV_LINK:		case LYK_FASTBACKW_LINK:		case LYK_UP_LINK:		case LYK_LEFT_LINK:		    if (cur_choice == 0)			cur_choice = number;  /* go back to end */		    else			cur_choice--;		    break;		case LYK_1:		case LYK_2:		case LYK_3:		case LYK_4:		case LYK_5:		case LYK_6:		case LYK_7:		case LYK_8:		case LYK_9:		    if((cmd - LYK_1 + 1) <= number) {			cur_choice = cmd -LYK_1 + 1;			break;		    }  /* else fall through! */		default:		    if (cur_choice == number)			cur_choice = 0;  /* go over the top and around */		    else			cur_choice++;	    }  /* end of switch */	    addstr(choices[cur_choice]);	    if (LYShowCursor)		move(line, (col - 1));	    refresh();	} else {	    /*	     *	Unhighlight choice.	     */	    move(line, col);	    stop_reverse();	    addstr(choices[cur_choice]);	    if (term_options) {		term_options = FALSE;		HTInfoMsg(CANCELLED);		HTInfoMsg("");	    } else {		_statusline(VALUE_ACCEPTED);	    }	    return(cur_choice);	}    }}