git: 0a7e19b30fc0 - main - tzsetup: adapt for libbsddialog 0.0.1

From: Baptiste Daroussin <bapt_at_FreeBSD.org>
Date: Mon, 13 Dec 2021 08:10:41 UTC
The branch main has been updated by bapt:

URL: https://cgit.FreeBSD.org/src/commit/?id=0a7e19b30fc0e34e7f3536df0fa64aff23955772

commit 0a7e19b30fc0e34e7f3536df0fa64aff23955772
Author:     Alfonso Siciliano <alfsiciliano@gmail.com>
AuthorDate: 2021-12-13 08:03:40 +0000
Commit:     Baptiste Daroussin <bapt@FreeBSD.org>
CommitDate: 2021-12-13 08:07:47 +0000

    tzsetup: adapt for libbsddialog 0.0.1
    
    libbsdialog 0.0.1 provides:
    * bsddialog_conf.auto_minwidth:
    * menurows is variable with autosize (properly defines max menurows)
    
    Then tzsetup can use BSDDIALOG_AUTOSIZE keeping the dialog behavior:
    min 24 cols, max 16 menurows
    
    Differential revision:  https://reviews.freebsd.org/D33397
---
 usr.sbin/tzsetup/tzsetup.c | 63 +++++-----------------------------------------
 1 file changed, 6 insertions(+), 57 deletions(-)

diff --git a/usr.sbin/tzsetup/tzsetup.c b/usr.sbin/tzsetup/tzsetup.c
index 89623293e5ea..d271d6377347 100644
--- a/usr.sbin/tzsetup/tzsetup.c
+++ b/usr.sbin/tzsetup/tzsetup.c
@@ -97,38 +97,6 @@ typedef struct dialogMenuItem {
 	void *data;
 } dialogMenuItem;
 
-static int
-xdialog_count_rows(const char *p)
-{
-	int rows = 0;
-
-	while ((p = strchr(p, '\n')) != NULL) {
-		p++;
-		if (*p == '\0')
-			break;
-		rows++;
-	}
-
-	return (rows ? rows : 1);
-}
-
-static int
-xdialog_count_columns(const char *p)
-{
-	int len;
-	int max_len = 0;
-	const char *q;
-
-	for (; (q = strchr(p, '\n')) != NULL; p = q + 1) {
-		len = q - p;
-		max_len = MAX(max_len, len);
-	}
-
-	len = strlen(p);
-	max_len = MAX(max_len, len);
-	return (max_len);
-}
-
 static int
 xdialog_menu(char *title, char *cprompt, int height, int width,
 	     int menu_height, int item_no, dialogMenuItem *ditems)
@@ -149,32 +117,13 @@ xdialog_menu(char *title, char *cprompt, int height, int width,
 		listitems[i].desc = ditems[i].title;
 	}
 
-	/* calculate height */
 	if (height < 0)
-		height = xdialog_count_rows(cprompt) + menu_height + 4 + 2;
-	if (height > bsddialog_terminalheight())
-		height = bsddialog_terminalheight() - 2;
+		height = BSDDIALOG_AUTOSIZE;
 
-	/* calculate width */
 	if (width < 0) {
-		int tag_x = 0;
-
-		for (i = 0; i < item_no; i++) {
-			int j, l;
-
-			l = strlen(listitems[i].name);
-			for (j = 0; j < item_no; j++) {
-				int k = strlen(listitems[j].desc);
-				tag_x = MAX(tag_x, l + k + 2);
-			}
-		}
-		width = MAX(xdialog_count_columns(cprompt), title != NULL ?
-		    xdialog_count_columns(title) : 0);
-		width = MAX(width, tag_x + 4) + 4;
+		width = BSDDIALOG_AUTOSIZE;
+		conf.auto_minwidth = 24;
 	}
-	width = MAX(width, 24);
-	if (width > bsddialog_terminalwidth())
-		width = bsddialog_terminalwidth() - 3;
 
 again:
 	conf.menu.default_item = listitems[choice].name;
@@ -188,7 +137,7 @@ again:
 	case BSDDIALOG_ESC:
 		result = -1;
 		break;
-	case BSDDIALOG_YESOK:
+	case BSDDIALOG_OK:
 		if (ditems[choice].fire != NULL) {
 			int status;
 
@@ -199,7 +148,7 @@ again:
 		}
 		result = 0;
 		break;
-	case BSDDIALOG_NOCANCEL:
+	case BSDDIALOG_CANCEL:
 	default:
 		result = 1;
 		break;
@@ -1028,7 +977,7 @@ main(int argc, char **argv)
 		    "If it is set to local time,\n"
 		    "or you don't know, please choose NO here!");
 
-		conf.button.defaultno = false;
+		conf.button.default_cancel = false;
 		conf.title = "Select local or UTC (Greenwich Mean Time) clock";
 		yesno = bsddialog_yesno(&conf, prompt, 7, 73);
 		if (!yesno) {