git: f2d966f6c13d - main - contrib/bsddialog: import 1.1
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 03 Nov 2025 20:19:23 UTC
The branch main has been updated by asiciliano:
URL: https://cgit.FreeBSD.org/src/commit/?id=f2d966f6c13d93cccceb8e594a69d1a50471d314
commit f2d966f6c13d93cccceb8e594a69d1a50471d314
Merge: e8449c0e0fcb 5a70558d32b9
Author: Alfonso S. Siciliano <asiciliano@FreeBSD.org>
AuthorDate: 2025-11-03 20:17:27 +0000
Commit: Alfonso S. Siciliano <asiciliano@FreeBSD.org>
CommitDate: 2025-11-03 20:18:46 +0000
contrib/bsddialog: import 1.1
Add: slider dialog.
Imported to enable testing and to complete the geomman(8) utility.
Developed as part of the "Full Disk Administration Tool for FreeBSD"
project, Braulio Rivas (brauliorivas@), Google Summer of Code 2025.
Sponsored by: Google LLC (GSoC 2025)
Merge commit '5a70558d32b9680c10ab579c7491652e0838cee4'
contrib/bsddialog/CHANGELOG | 10 +
contrib/bsddialog/Makefile | 2 +-
contrib/bsddialog/README.md | 7 +-
contrib/bsddialog/examples_library/compile | 2 +-
contrib/bsddialog/examples_library/slider.c | 44 ++
contrib/bsddialog/examples_utility/slider.sh | 34 ++
contrib/bsddialog/lib/Makefile | 2 +-
contrib/bsddialog/lib/bsddialog.h | 8 +-
contrib/bsddialog/lib/slider.c | 670 +++++++++++++++++++++++++++
contrib/bsddialog/utility/bsddialog.1 | 6 +-
contrib/bsddialog/utility/util.h | 1 +
contrib/bsddialog/utility/util_builders.c | 90 ++--
contrib/bsddialog/utility/util_cli.c | 11 +-
lib/libbsddialog/Makefile | 1 +
14 files changed, 854 insertions(+), 34 deletions(-)
diff --cc contrib/bsddialog/Makefile
index 335b693470e6,000000000000..7eb5938ff291
mode 100644,000000..100644
--- a/contrib/bsddialog/Makefile
+++ b/contrib/bsddialog/Makefile
@@@ -1,47 -1,0 +1,47 @@@
+# PUBLIC DOMAIN - NO WARRANTY, see:
+# <http://creativecommons.org/publicdomain/zero/1.0/>
+#
+# Written in 2023 by Alfonso Sabato Siciliano
+
+OUTPUT = bsddialog
- export VERSION=1.0.5
++export VERSION=1.1
+.CURDIR ?= ${CURDIR}
+LIBPATH = ${.CURDIR}/lib
+LIBBSDDIALOG = ${LIBPATH}/libbsddialog.so
+UTILITYPATH = ${.CURDIR}/utility
+
+RM= rm -f
+LN = ln -s -f
+
+### command-line options ###
+# FreeBSD port Makefile: 'MAKE_ARGS = -DNORPATH'
+NORPATH ?=
+export DISABLERPATH=${NORPATH}
+# Debug: `make -DDEBUG` or `gmake DEBUG=1`
+DEBUG ?=
+export ENABLEDEBUG=${DEBUG}
+###################
+
+all: ${OUTPUT}
+
+install: all
+ ${MAKE} -C ${LIBPATH} install
+ ${MAKE} -C ${UTILITYPATH} install
+
+uninstall:
+ ${MAKE} -C ${UTILITYPATH} uninstall
+ ${MAKE} -C ${LIBPATH} uninstall
+
+${OUTPUT}: ${LIBBSDDIALOG}
+ ${MAKE} -C ${UTILITYPATH} LIBPATH=${LIBPATH}
+ ${LN} ${UTILITYPATH}/${OUTPUT} ${.CURDIR}/${OUTPUT}
+
+${LIBBSDDIALOG}:
+ ${MAKE} -C ${LIBPATH}
+
+clean:
+ ${MAKE} -C ${LIBPATH} clean
+ ${MAKE} -C ${UTILITYPATH} clean
+ ${RM} ${OUTPUT} *.core
+
+.PHONY: all install uninstall clean
diff --cc contrib/bsddialog/README.md
index 5a25109775fe,000000000000..f7552c303c09
mode 100644,000000..100644
--- a/contrib/bsddialog/README.md
+++ b/contrib/bsddialog/README.md
@@@ -1,141 -1,0 +1,144 @@@
- # BSDDialog 1.0.5
++# BSDDialog 1.1
+
+This project provides **bsddialog** and **libbsddialog**, an utility
+and a library to build scripts and tools with TUI dialogs and widgets.
+
+
+## Demo
+
+[Screenshots](https://www.flickr.com/photos/alfonsosiciliano/albums/72157720215006074).
+
+
+## Getting Started
+
+FreeBSD and Linux:
+
+```
+% git clone https://gitlab.com/alfix/bsddialog.git
+% cd bsddialog
+% make
+% ./bsddialog --msgbox "Hello World!" 8 20
+```
+
+Output:
+
+
+
+
+## Utility
+
+**Dialogs:**
+
+--calendar, --checklist, --datebox, --form, --gauge, --infobox, --inputbox,
+--menu, --mixedform, --mixedgauge, --msgbox, --passwordbox, --passwordform,
- --pause, --radiolist, --rangebox, --textbox, --timebox, --treeview, --yesno.
++--pause, --radiolist, --rangebox, --slider, --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/calendar.sh
+% sh ./examples_utility/checklist.sh
+% sh ./examples_utility/datebox.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/rangebox.sh
++% sh ./examples_utility/slider.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
+% ./calendar
+% ./checklist
+% ./datebox
+% ./form
+% ./gauge
+% ./infobox
+% ./menu
+% ./mixedgauge
+% ./mixedlist
+% ./msgbox
+% ./pause
+% ./radiolist
+% ./rangebox
++% ./slider
+% ./theme
+% ./timebox
+% ./yesno
+```
+
+
+## TODO and Ideas
+
+ - menubar feature.
+ - key callback.
+ - Right-To-Left text.
+ - some terminal does not hide the cursor, move it bottom-right before to getch.
+ - refactor backtitle: add WINDOW \*dialog.backtitle for multiline and fix expanding screen.
+ - refactor bottomdesc: add WINDOW \*dialog.bottomdesc to fix expandig screen.
+ - accessibility https://wiki.freebsd.org/Accessibility/Wishlist/Base.
+ - add bool conf.menu.depthlines.
+ - implement custom getopt\_long().
+ - refactor/redesign gauge().
+ - improve grey lines expanding terminal (maybe redrawwin() in hide\_dialog()).
+ - more restrictive strtol() and strtoul().
+ - implement global buttons handler.
+ - doc: external tutorial, theming guide.
+ - implement menutype.min\_on.
+ - add debug API: bsddialog\_debug(y,x,refresh,"fmt",...).
+ - add mouse support.
+ - use alarm(2) for bsddialog\_pause.
+ - delete form fieldlen constraint, hide or truncate long field in little screens.
+ - improve --inputbox autosizing, consider also input length.
+ - fix --form "" 0 0 0 Label 1 0 Init 1 12 0 0 (with 0 editable field).
+ - fix --mixedform "" 0 0 0 Label 1 0 Init 1 12 0 0 2 (with 0 editable field).
+ - add *text* customization to --hmsg *help-message*
+ - check --passwordform *fieldlen* like --form and --mixedform.
+ - add manuals to Makefiles installe and uninstall targets.
diff --cc contrib/bsddialog/examples_library/slider.c
index 000000000000,2292f0e8efed..2292f0e8efed
mode 000000,100644..100644
--- a/contrib/bsddialog/examples_library/slider.c
+++ b/contrib/bsddialog/examples_library/slider.c
diff --cc contrib/bsddialog/examples_utility/slider.sh
index 000000000000,bd037e13c977..bd037e13c977
mode 000000,100644..100644
--- a/contrib/bsddialog/examples_utility/slider.sh
+++ b/contrib/bsddialog/examples_utility/slider.sh
diff --cc contrib/bsddialog/lib/Makefile
index c728541a9f7a,000000000000..b5a3c1a8afc4
mode 100644,000000..100644
--- a/contrib/bsddialog/lib/Makefile
+++ b/contrib/bsddialog/lib/Makefile
@@@ -1,63 -1,0 +1,63 @@@
+# PUBLIC DOMAIN - NO WARRANTY, see:
+# <http://creativecommons.org/publicdomain/zero/1.0/>
+#
+# Written in 2021 by Alfonso Sabato Siciliano
+
+LIBRARY = bsddialog
+LIBRARY_SO = lib${LIBRARY:=.so}
+LIBRARY_A = lib${LIBRARY:=.a}
+HEADERS = bsddialog.h bsddialog_theme.h bsddialog_progressview.h
+SOURCES = barbox.c datebox.c formbox.c libbsddialog.c lib_util.c \
- menubox.c messagebox.c textbox.c theme.c timebox.c
++ menubox.c messagebox.c slider.c textbox.c theme.c timebox.c
+OBJECTS = ${SOURCES:.c=.o}
+PREFIX = /usr/local
+
+.if defined(DEBUG)
+CFLAGS += -g
+.endif
+CFLAGS += -D_XOPEN_SOURCE_EXTENDED -fPIC -Wall -Wextra -std=gnu99 \
+ -fstack-protector-strong
+LDFLAGS += -fstack-protector-strong -shared -Wl,-x -Wl,--fatal-warnings \
+ -Wl,--warn-shared-textrel -Wl,-soname,${LIBRARY_SO}.${VERSION} \
+ -L/usr/lib -lncursesw -ltinfow
+
+LN = ln -s -f
+RM = rm -f
+
+all: ${LIBRARY}
+
+install: all
+ ${INSTALL} -m 0644 bsddialog.h ${DESTDIR}${PREFIX}/include/bsddialog.h
+ ${INSTALL} -m 0644 bsddialog_progressview.h ${DESTDIR}${PREFIX}/include/bsddialog_progressview.h
+ ${INSTALL} -m 0644 bsddialog_theme.h ${DESTDIR}${PREFIX}/include/bsddialog_theme.h
+ ${INSTALL} -m 0644 ${LIBRARY_A} ${DESTDIR}${PREFIX}/lib/${LIBRARY_A}
+ ${INSTALL} -m 0755 ${LIBRARY_SO}.${VERSION} ${DESTDIR}${PREFIX}/lib/${LIBRARY_SO}.${VERSION}
+ ${LN} ${LIBRARY_SO}.${VERSION} ${DESTDIR}${PREFIX}/lib/${LIBRARY_SO}
+
+uninstall:
+ ${RM} ${DESTDIR}${PREFIX}/include/bsddialog.h
+ ${RM} ${DESTDIR}${PREFIX}/include/bsddialog_progressview.h
+ ${RM} ${DESTDIR}${PREFIX}/include/bsddialog_theme.h
+ ${RM} ${DESTDIR}${PREFIX}/lib/${LIBRARY_A}
+ ${RM} ${DESTDIR}${PREFIX}/lib/${LIBRARY_SO}.${VERSION}
+ ${RM} ${DESTDIR}${PREFIX}/lib/${LIBRARY_SO}
+
+${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}
+
+clean:
+ ${RM} ${LIBRARY_SO}* *.o *~ *.gz ${LIBRARY_A}
+
+.PHONY: all install uninstall ${LIBRARY} clean
diff --cc contrib/bsddialog/lib/slider.c
index 000000000000,534253470849..534253470849
mode 000000,100644..100644
--- a/contrib/bsddialog/lib/slider.c
+++ b/contrib/bsddialog/lib/slider.c
diff --cc lib/libbsddialog/Makefile
index 2ec633b25147,000000000000..54390cf87f71
mode 100644,000000..100644
--- a/lib/libbsddialog/Makefile
+++ b/lib/libbsddialog/Makefile
@@@ -1,27 -1,0 +1,28 @@@
+BSDDIALOG= ${SRCTOP}/contrib/bsddialog
+
+.PATH: ${BSDDIALOG}/lib
+
+LIB= bsddialog
+PRIVATELIB= yes
+SHLIB_MAJOR= 0
+SRCS= barbox.c \
+ datebox.c \
+ formbox.c \
+ lib_util.c \
+ lib_util.h \
+ libbsddialog.c \
+ menubox.c \
+ messagebox.c \
++ slider.c \
+ textbox.c \
+ theme.c \
+ timebox.c
+INCS= bsddialog.h \
+ bsddialog_theme.h \
+ bsddialog_progressview.h
+MAN= bsddialog.3
+
+LIBADD= ncursesw tinfow
+CFLAGS+= -D_XOPEN_SOURCE_EXTENDED
+
+.include <bsd.lib.mk>