kconfig/lxdialog: support resize

In all dialogs now properly catch KEY_RESIZE and take proper action.
In mconf try to behave sensibly when a dialog routine returns
-ERRDISPLAYTOOSMALL.

The original check for a screnn size of 80x19 is kept for now.
It may make sense to remove it later, but thats anyway what
much text is adjusted for.

Signed-off-by: Sam Ravnborg <[email protected]>
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c
index ef75d6c..f7abca4 100644
--- a/scripts/kconfig/mconf.c
+++ b/scripts/kconfig/mconf.c
@@ -606,9 +606,8 @@
 		reset_dialog();
 		res = dialog_menu(prompt ? prompt : _("Main Menu"),
 				  _(menu_instructions),
-				  rows, cols, rows - 10,
 				  active_menu, &s_scroll);
-		if (res == 1 || res == KEY_ESC)
+		if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL)
 			break;
 		if (!item_activate_selected())
 			continue;
@@ -617,7 +616,10 @@
 
 		submenu = item_data();
 		active_menu = item_data();
-		sym = submenu->sym;
+		if (submenu)
+			sym = submenu->sym;
+		else
+			sym = NULL;
 
 		switch (res) {
 		case 0:
@@ -683,7 +685,7 @@
 static void show_textbox(const char *title, const char *text, int r, int c)
 {
 	reset_dialog();
-	dialog_textbox(title, text, r ? r : rows, c ? c : cols);
+	dialog_textbox(title, text, r, c);
 }
 
 static void show_helptext(const char *title, const char *text)
@@ -756,6 +758,8 @@
 			break;
 		case KEY_ESC:
 			return;
+		case -ERRDISPLAYTOOSMALL:
+			return;
 		}
 	}
 }