kconfig/lxdialog/yesno.c
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Thu Mar 26 18:47:34 2009 +0000 (2009-03-26)
changeset 1268 5594b05bc2d8
parent 1 eeea35fbf182
permissions -rw-r--r--
Add support for building toolchains with gcc-4.4 snapshots.
Initial patch by Dmitry PLOTNIKOV: http://sourceware.org/ml/crossgcc/2009-03/msg00053.html
It [the toolchain] uses current ct-ng (nightly snapshot 20090324, latest
release 1.3.2 work also), glibc 2.9 (from CVS), binutils 2.19 and latest
snapshot of GCC 4.4.0 (as of March 20, 2009).

We have successfully built linux kernel 2.6.29 and a lot of other stuff
with this toolchain.

Here's the patch that adds GCC 4.4.0 to the ct-ng menu and enables it to
download a 4.4.0 snapshot from ftp.

Patch was adpated by me, mostly to better fit the configuration layout.

/trunk/scripts/build/cc/gcc.sh | 34 22 12 0 ++++++++++++++++++++++------------
/trunk/config/cc/gcc.in | 35 30 5 0 ++++++++++++++++++++++++++++++-----
2 files changed, 52 insertions(+), 17 deletions(-)
     1 /*
     2  *  yesno.c -- implements the yes/no box
     3  *
     4  *  ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
     5  *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
     6  *
     7  *  This program is free software; you can redistribute it and/or
     8  *  modify it under the terms of the GNU General Public License
     9  *  as published by the Free Software Foundation; either version 2
    10  *  of the License, or (at your option) any later version.
    11  *
    12  *  This program is distributed in the hope that it will be useful,
    13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
    14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15  *  GNU General Public License for more details.
    16  *
    17  *  You should have received a copy of the GNU General Public License
    18  *  along with this program; if not, write to the Free Software
    19  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    20  */
    21 
    22 #include "dialog.h"
    23 
    24 /*
    25  * Display termination buttons
    26  */
    27 static void print_buttons(WINDOW * dialog, int height, int width, int selected)
    28 {
    29 	int x = width / 2 - 10;
    30 	int y = height - 2;
    31 
    32 	print_button(dialog, gettext(" Yes "), y, x, selected == 0);
    33 	print_button(dialog, gettext("  No  "), y, x + 13, selected == 1);
    34 
    35 	wmove(dialog, y, x + 1 + 13 * selected);
    36 	wrefresh(dialog);
    37 }
    38 
    39 /*
    40  * Display a dialog box with two buttons - Yes and No
    41  */
    42 int dialog_yesno(const char *title, const char *prompt, int height, int width)
    43 {
    44 	int i, x, y, key = 0, button = 0;
    45 	WINDOW *dialog;
    46 
    47 do_resize:
    48 	if (getmaxy(stdscr) < (height + 4))
    49 		return -ERRDISPLAYTOOSMALL;
    50 	if (getmaxx(stdscr) < (width + 4))
    51 		return -ERRDISPLAYTOOSMALL;
    52 
    53 	/* center dialog box on screen */
    54 	x = (COLS - width) / 2;
    55 	y = (LINES - height) / 2;
    56 
    57 	draw_shadow(stdscr, y, x, height, width);
    58 
    59 	dialog = newwin(height, width, y, x);
    60 	keypad(dialog, TRUE);
    61 
    62 	draw_box(dialog, 0, 0, height, width,
    63 		 dlg.dialog.atr, dlg.border.atr);
    64 	wattrset(dialog, dlg.border.atr);
    65 	mvwaddch(dialog, height - 3, 0, ACS_LTEE);
    66 	for (i = 0; i < width - 2; i++)
    67 		waddch(dialog, ACS_HLINE);
    68 	wattrset(dialog, dlg.dialog.atr);
    69 	waddch(dialog, ACS_RTEE);
    70 
    71 	print_title(dialog, title, width);
    72 
    73 	wattrset(dialog, dlg.dialog.atr);
    74 	print_autowrap(dialog, prompt, width - 2, 1, 3);
    75 
    76 	print_buttons(dialog, height, width, 0);
    77 
    78 	while (key != KEY_ESC) {
    79 		key = wgetch(dialog);
    80 		switch (key) {
    81 		case 'Y':
    82 		case 'y':
    83 			delwin(dialog);
    84 			return 0;
    85 		case 'N':
    86 		case 'n':
    87 			delwin(dialog);
    88 			return 1;
    89 
    90 		case TAB:
    91 		case KEY_LEFT:
    92 		case KEY_RIGHT:
    93 			button = ((key == KEY_LEFT ? --button : ++button) < 0) ? 1 : (button > 1 ? 0 : button);
    94 
    95 			print_buttons(dialog, height, width, button);
    96 			wrefresh(dialog);
    97 			break;
    98 		case ' ':
    99 		case '\n':
   100 			delwin(dialog);
   101 			return button;
   102 		case KEY_ESC:
   103 			key = on_key_esc(dialog);
   104 			break;
   105 		case KEY_RESIZE:
   106 			delwin(dialog);
   107 			on_key_resize();
   108 			goto do_resize;
   109 		}
   110 	}
   111 
   112 	delwin(dialog);
   113 	return key;		/* ESC pressed */
   114 }