git: b319d934379f - main - contrib/bsddialog: Import version 0.3

From: Alfonso S. Siciliano <asiciliano_at_FreeBSD.org>
Date: Sat, 03 Sep 2022 14:42:08 UTC
The branch main has been updated by asiciliano:

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

commit b319d934379f5b819cd195be7e03dbd407566fd4
Merge: b0e86eed27ec 2c9fd7655ba5
Author:     Alfonso S. Siciliano <asiciliano@FreeBSD.org>
AuthorDate: 2022-09-03 14:40:21 +0000
Commit:     Alfonso S. Siciliano <asiciliano@FreeBSD.org>
CommitDate: 2022-09-03 14:41:44 +0000

    contrib/bsddialog: Import version 0.3
    
    New features overview:
     * Unicode. User interface handles multi-column characters. API can
       handle char* like a multibyte character string. Internally wide
       characters are used for keyboard input, to adapt word wrapping and
       dynamic text auto-sizing for multi-column characters.
     * Forms refactoring. Complete rewrite deleting libformw dependency.
     * Theme. New utility options to save and load custom theme at run-time.
     * TUI navigation. Added keys to navigate input components. Changed
       default focus behavior of input dialogs to be LGPL-dialog-like; a new
       option can set the previous whiptail-like behavior.
    
    See /usr/src/contrib/bsddialog/CHANGELOG '2022-08-29 Version 0.3'
    for more detailed information.
    
    Merge commit '2c9fd7655ba54e7239f528e1af9fe09662de9b03'

 contrib/bsddialog/.gitignore                       |    2 +
 contrib/bsddialog/CHANGELOG                        |   77 +-
 contrib/bsddialog/GNUMakefile                      |    2 +-
 contrib/bsddialog/Makefile                         |    2 +-
 contrib/bsddialog/README.md                        |   25 +-
 contrib/bsddialog/bsddialog.1                      |  216 +++-
 contrib/bsddialog/bsddialog.c                      |  259 +++--
 contrib/bsddialog/examples_library/compile         |    4 +-
 contrib/bsddialog/examples_library/datebox.c       |    4 +-
 contrib/bsddialog/examples_library/form.c          |   12 +-
 contrib/bsddialog/examples_library/formw.c         |   61 --
 contrib/bsddialog/examples_library/timebox.c       |    4 +-
 contrib/bsddialog/examples_utility/form.sh         |   10 +-
 contrib/bsddialog/examples_utility/mixedform.sh    |    6 +-
 contrib/bsddialog/examples_utility/passwordform.sh |   10 +-
 contrib/bsddialog/lib/GNUMakefile                  |    6 +-
 contrib/bsddialog/lib/Makefile                     |    4 +-
 contrib/bsddialog/lib/barbox.c                     |   78 +-
 contrib/bsddialog/lib/bsddialog.3                  |  172 ++-
 contrib/bsddialog/lib/bsddialog.h                  |   20 +-
 contrib/bsddialog/lib/bsddialog_theme.h            |   17 +-
 contrib/bsddialog/lib/formbox.c                    | 1145 +++++++++++++-------
 contrib/bsddialog/lib/infobox.c                    |    6 +-
 contrib/bsddialog/lib/lib_util.c                   |  544 +++++++---
 contrib/bsddialog/lib/lib_util.h                   |   16 +-
 contrib/bsddialog/lib/libbsddialog.c               |   19 +-
 contrib/bsddialog/lib/menubox.c                    |  155 +--
 contrib/bsddialog/lib/messagebox.c                 |   63 +-
 contrib/bsddialog/lib/textbox.c                    |  117 +-
 contrib/bsddialog/lib/theme.c                      |  187 ++--
 contrib/bsddialog/lib/timebox.c                    |  190 ++--
 contrib/bsddialog/util_theme.c                     |  356 ++++++
 contrib/bsddialog/util_theme.h                     |   35 +
 usr.bin/bsddialog/Makefile                         |    2 +-
 34 files changed, 2666 insertions(+), 1160 deletions(-)

diff --cc contrib/bsddialog/.gitignore
index 62f7b594a708,000000000000..10a6663fbb47
mode 100644,000000..100644
--- a/contrib/bsddialog/.gitignore
+++ b/contrib/bsddialog/.gitignore
@@@ -1,27 -1,0 +1,29 @@@
 +bsddialog
 +*.o
 +*~
 +*.a
 +examples_library/buildlist
 +examples_library/checklist
 +examples_library/datebox
 +examples_library/form
 +examples_library/formw
++examples_library/margin
 +examples_library/menu
 +examples_library/mixedlist
 +examples_library/radiolist
 +examples_library/theme
 +examples_library/treeview
 +examples_library/infobox
 +examples_library/msgbox
 +examples_library/pause
 +examples_library/rangebox
 +examples_library/sade
 +examples_library/timebox
 +examples_library/yesno
++examples_library/u_msgbox
 +*.gz
 +lib/libbsddialog.so*
 +BSDDIALOG.geany
 +BSDDIALOG.tags
 +*.core
 +freebsd-lab/
diff --cc contrib/bsddialog/Makefile
index 5d5d0cc923a5,000000000000..344233581d30
mode 100644,000000..100644
--- a/contrib/bsddialog/Makefile
+++ b/contrib/bsddialog/Makefile
@@@ -1,50 -1,0 +1,50 @@@
 +# PUBLIC DOMAIN - NO WARRANTY, see:
 +#     <http://creativecommons.org/publicdomain/zero/1.0/>
 +#
 +# Written in 2021 by Alfonso Sabato Siciliano
 +
 +OUTPUT=  bsddialog
- SOURCES= bsddialog.c
++SOURCES= bsddialog.c util_theme.c
 +OBJECTS= ${SOURCES:.c=.o}
 +LIBPATH= ${.CURDIR}/lib
 +LIBBSDDIALOG= ${LIBPATH}/libbsddialog.so
 +
 +CFLAGS+= -I${LIBPATH} -std=gnu99 -Wall -Wextra -Werror -Wno-unused-parameter
 +# `make -DDEBUG`
 +.if defined(DEBUG)
 +CFLAGS= -g -Wall -I${LIBPATH}
 +LIBDEBUG= -DDEBUG
 +.endif
 +LDFLAGS+= -Wl,-rpath=${LIBPATH} -L${LIBPATH} -lbsddialog
 +
 +BINDIR= /usr/local/bin
 +MAN= ${OUTPUT}.1
 +GZIP= gzip -cn
 +MANDIR= /usr/local/share/man/man1
 +
 +INSTALL= install
 +RM= rm -f
 +
 +all : ${OUTPUT}
 +
 +${OUTPUT}: ${LIBBSDDIALOG} ${OBJECTS}
 +	${CC} ${LDFLAGS} ${OBJECTS} -o ${.PREFIX}
 +
 +${LIBBSDDIALOG}:
 +	make -C ${LIBPATH} ${LIBDEBUG}
 +
 +.c.o:
 +	${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
 +
 +install:
 +	${INSTALL} -s -m 555 ${OUTPUT} ${BINDIR}
 +	${GZIP} ${MAN} > ${MAN}.gz
 +	${INSTALL} -m 444 ${MAN}.gz ${MANDIR}
 +
 +unistall:
 +	${RM} ${BINDIR}/${OUTPUT}
 +	${RM} ${MANDIR}/${MAN}.gz
 +
 +clean:
 +	make -C ${LIBPATH} clean
 +	${RM} ${OUTPUT} *.o *~ *.core ${MAN}.gz
diff --cc contrib/bsddialog/README.md
index 3a814b38ddb4,000000000000..016995b232ae
mode 100644,000000..100644
--- a/contrib/bsddialog/README.md
+++ b/contrib/bsddialog/README.md
@@@ -1,117 -1,0 +1,132 @@@
- # BSDDialog 0.2
++# BSDDialog 0.3
 +
- 
- This project provides **bsddialog** and **libbsddialog**, an utility and a
- library to build scripts and tools with TUI dialogs and widgets.
++This project provides **bsddialog** and **libbsddialog**, an utility
++and a library to build scripts and tools with TUI dialogs and widgets.
 +
 +
 +## Intro
 +
 +Briefly:
- <https://www.freebsd.org/status/report-2021-04-2021-06/#_bsddialog_tui_widgets>
++<https://www.freebsd.org/status/report-2021-04-2021-06/bsddialog/>
 +
 +Utility:
 +<https://alfonsosiciliano.gitlab.io/posts/2021-12-07-bsddialog.html>
 +
 +Library:
 +<https://alfonsosiciliano.gitlab.io/posts/2022-01-16-libbsddialog.html>
 +
 +Screenshots:
 +<https://www.flickr.com/photos/alfonsosiciliano/albums/72157720215006074>
 +
 +
 +## Getting Started
 +
 +FreeBSD:
 +
 +```
 +% git clone https://gitlab.com/alfix/bsddialog.git
 +% cd bsddialog
 +% make
 +% ./bsddialog --msgbox "Hello World!" 8 20
 +```
 +
++Linux:
++
++```
++% git clone https://gitlab.com/alfix/bsddialog.git
++% cd bsddialog
++% make -f GNUMakefile
++% ./bsddialog --msgbox "Hello World!" 8 20
++```
++
 +Output:
 +
 +![screenshot](screenshot.png)
 +
 +
 +## Utility
 +
 +**Dialogs:**
 +
 +--checklist, --datebox, --form, --gauge, --inputbox, --menu, --mixedform,
 +--mixedgauge, --msgbox, --passwordbox, --passwordform, --pause, --radiolist,
 +--rangebox, --textbox, --timebox, --treeview, --yesno.
 +
 +**Manual**
 +
 + - [bsddialog(1)](https://alfonsosiciliano.gitlab.io/posts/2022-01-26-manual-bsddialog.html)
 +
 +
 +**Examples**:
 +
 +```
 +% ./bsddialog --backtitle "TITLE" --title msgbox --msgbox "Hello World!" 5 30
 +% ./bsddialog --theme blackwhite --title msgbox --msgbox "Hello World!" 5 30
 +% ./bsddialog --begin-y 2 --default-no --title yesno --yesno "Hello World!" 5 30
 +% ./bsddialog --ascii-lines --pause "Hello World!" 8 50 10
 +% ./bsddialog --checklist "Space to select" 0 0 0 Name1 Desc1 off Name2 Desc2 on
 +% ./bsddialog --title yesno --hline "bsddialog" --yesno "Hello World!" 5 25
 +% ./bsddialog --extra-button --help-button --yesno "Hello World!" 0 0
 +```
 +
 +and [Examples](https://gitlab.com/alfix/bsddialog/-/tree/main/examples_utility)
 +in the _Public Domain_ to build new projects:
 +```
 +% sh ./examples_utility/checklist.sh
 +% sh ./examples_utility/form.sh
 +% sh ./examples_utility/gauge.sh
 +% sh ./examples_utility/infobox.sh
 +% sh ./examples_utility/inputbox.sh
 +% sh ./examples_utility/menu.sh
 +% sh ./examples_utility/mixedform.sh
 +% sh ./examples_utility/mixedgauge.sh
 +% sh ./examples_utility/msgbox.sh
 +% sh ./examples_utility/passwordbox.sh
 +% sh ./examples_utility/passwordform.sh
 +% sh ./examples_utility/pause.sh
 +% sh ./examples_utility/radiolist.sh
 +% sh ./examples_utility/timebox.sh
 +% sh ./examples_utility/yesno.sh
 +```
 +
 +## Library
 +
 +**API**
 +
 + - [bsddialog.h](https://gitlab.com/alfix/bsddialog/-/blob/main/lib/bsddialog.h)
 + - [bsddialog\_theme.h](https://gitlab.com/alfix/bsddialog/-/blob/main/lib/bsddialog_theme.h)
 +
 +
 +**Manual**
 +
 + - [bsddialog(3)](https://alfonsosiciliano.gitlab.io/posts/2022-01-15-manual-libbsddialog.html)
 +
 +
 +**Examples**:
 +
 +[Examples](https://gitlab.com/alfix/bsddialog/-/tree/main/examples_library)
 +in the _Public Domain_ to build new projects:
 +```
 +% cd examples_library
 +% sh compile
++% ./checklist
 +% ./datebox
 +% ./form
 +% ./infobox
 +% ./menu
 +% ./mixedlist
 +% ./msgbox
 +% ./pause
 +% ./radiolist
 +% ./rangebox
 +% ./theme
 +% ./timebox
 +% ./yesno
 +```
++
++
++## TODO and Ideas
 + 
++ - menubar feature
++ - key callback
++ - Right-To-Left text
diff --cc contrib/bsddialog/lib/Makefile
index 962b059b3e03,000000000000..5c535c5483f1
mode 100644,000000..100644
--- a/contrib/bsddialog/lib/Makefile
+++ b/contrib/bsddialog/lib/Makefile
@@@ -1,75 -1,0 +1,75 @@@
 +# PUBLIC DOMAIN - NO WARRANTY, see:
 +#     <http://creativecommons.org/publicdomain/zero/1.0/>
 +#
 +# Written in 2021 by Alfonso Sabato Siciliano
 +
- VERSION = 0.2
++VERSION = 0.3
 +LIBRARY = bsddialog
 +LIBRARY_SO = lib${LIBRARY:=.so}
 +LIBRARY_A = lib${LIBRARY:=.a}
 +HEADERS = bsddialog.h bsddialog_theme.h bsddialog_progressview.h
 +SOURCES = barbox.c formbox.c infobox.c libbsddialog.c lib_util.c menubox.c \
 +	messagebox.c textbox.c theme.c timebox.c
 +OBJECTS = ${SOURCES:.c=.o}
 +CFLAGS += -D_XOPEN_SOURCE_EXTENDED -fPIC -Wall -Wextra
 +LDFLAGS += -fstack-protector-strong -shared -Wl,-x -Wl,--fatal-warnings \
 +	-Wl,--warn-shared-textrel -Wl,-soname,${LIBRARY_SO}.${VERSION} \
- 	-L/usr/lib -lformw -lncursesw -ltinfow
++	-L/usr/lib -lncursesw -ltinfow
 +
 +.if defined(DEBUG)
 +# `make -DDEBUG`
 +CFLAGS = -g -D_XOPEN_SOURCE_EXTENDED -fPIC -Wall -Wextra
 +.else
 +CFLAGS += -std=gnu99 -fstack-protector-strong
 +.endif
 +
 +LOCALBASE = /usr/local
 +LN = ln -s -f
 +RM = rm -f
 +CP = cp
 +GZIP = gzip -cn
 +LDCONFIG = /sbin/ldconfig -m
 +MAN = ${OUTPUT}.3
 +GZIP = gzip -cn
 +MANDIR = ${LOCALBASE}/share/man/man3
 +INSTALL = install
 +RM = rm -f
 +
 +all : man ${LIBRARY}
 +
 +${LIBRARY}: ${LIBRARY_SO} ${LIBRARY_A}
 +
 +${LIBRARY_SO}.${VERSION}: ${OBJECTS}
 +	${CC} ${LDFLAGS} ${.ALLSRC} -o ${LIBRARY_SO}.${VERSION}
 +
 +${LIBRARY_SO}: ${LIBRARY_SO}.${VERSION}
 +	${LN} ${LIBRARY_SO}.${VERSION} ${LIBRARY_SO}
 +
 +${LIBRARY_A}: ${OBJECTS}
 +	${AR} cr ${.TARGET} ${OBJECTS}
 +	${RANLIB} ${.TARGET}
 +
 +.c.o:
 +	${CC} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
 +
 +man:
 +	${GZIP} ${LIBRARY}.3 > ${LIBRARY}.3.gz
 +
 +clean:
 +	${RM} ${LIBRARY_SO}* *.o *~ *.gz ${LIBRARY_A}
 +
 +
 +install:
 +	${INSTALL} -m 644 ${HEADERS} ${LOCALBASE}/include
 +	${INSTALL} -m 644 -s ${LIBRARY_SO}.${VERSION} ${LOCALBASE}/lib/
 +	${INSTALL} -l rs ${LOCALBASE}/lib/${LIBRARY_SO}.${VERSION} ${LOCALBASE}/lib/${LIBRARY_SO}
 +	${INSTALL} -m 644 ${LIBRARY_A} ${LOCALBASE}/lib
 +	${LDCONFIG} ${LOCALBASE}/lib
 +	${INSTALL} -m 644 ${LIBRARY}.3.gz ${MANDIR}
 +
 +unistall:
 +	${RM} ${LOCALBASE}/include/${LIBRARY}*.h
 +	${RM} ${LOCALBASE}/lib/${LIBRARY_SO}
 +	${RM} ${LOCALBASE}/lib/${LIBRARY_SO}.${VERSION}
 +	${LDCONFIG} ${LOCALBASE}/lib
 +	${RM} ${MANDIR}/${LIBRARY}.3.gz
diff --cc contrib/bsddialog/util_theme.c
index 000000000000,e003e2c3d05f..e003e2c3d05f
mode 000000,100644..100644
--- a/contrib/bsddialog/util_theme.c
+++ b/contrib/bsddialog/util_theme.c
diff --cc contrib/bsddialog/util_theme.h
index 000000000000,fd9b32db1204..fd9b32db1204
mode 000000,100644..100644
--- a/contrib/bsddialog/util_theme.h
+++ b/contrib/bsddialog/util_theme.h
diff --cc usr.bin/bsddialog/Makefile
index 66d94ec19533,000000000000..5b10f1ea0451
mode 100644,000000..100644
--- a/usr.bin/bsddialog/Makefile
+++ b/usr.bin/bsddialog/Makefile
@@@ -1,12 -1,0 +1,12 @@@
 +BSDDIALOG=	${SRCTOP}/contrib/bsddialog
 +.PATH:	${BSDDIALOG}
 +
 +PROG=	bsddialog
 +SRCS=	bsddialog.c
- MAN=	bsddialog.1
++MAN=	bsddialog.1 util_theme.c
 +CFLAGS+=	-I${BSDDIALOG}/lib
 +LIBADD=	bsddialog
 +
 +WARNS=	3
 +
 +.include <bsd.prog.mk>