The branch main has been updated by bapt:

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

commit 0a7e19b30fc0e34e7f3536df0fa64aff23955772
Author:     Alfonso Siciliano <alfsicili...@gmail.com>
AuthorDate: 2021-12-13 08:03:40 +0000
Commit:     Baptiste Daroussin <b...@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) {

Reply via email to