Re: git: 18f20d5d967a - main - bsddialog: convert bsdinstall/distextract
Date: Sat, 01 Jan 2022 21:35:50 UTC
On 1 Jan 2022, at 20:52, Baptiste Daroussin <bapt@FreeBSD.org> wrote: > > The branch main has been updated by bapt: > > URL: https://cgit.FreeBSD.org/src/commit/?id=18f20d5d967ae790f121963e1fcee68d729a529e > > commit 18f20d5d967ae790f121963e1fcee68d729a529e > Author: Alfonso Siciliano <alfsiciliano@gmail.com> > AuthorDate: 2022-01-01 20:50:44 +0000 > Commit: Baptiste Daroussin <bapt@FreeBSD.org> > CommitDate: 2022-01-01 20:51:23 +0000 > > bsddialog: convert bsdinstall/distextract > > Differential Revision: https://reviews.freebsd.org/D33581 > --- > usr.sbin/bsdinstall/distextract/Makefile | 3 +- > usr.sbin/bsdinstall/distextract/distextract.c | 180 +++++++++++++------------- > 2 files changed, 92 insertions(+), 91 deletions(-) > > diff --git a/usr.sbin/bsdinstall/distextract/Makefile b/usr.sbin/bsdinstall/distextract/Makefile > index 2b7180e28ea0..5e9f2b9e1473 100644 > --- a/usr.sbin/bsdinstall/distextract/Makefile > +++ b/usr.sbin/bsdinstall/distextract/Makefile > @@ -2,7 +2,8 @@ > > BINDIR= ${LIBEXECDIR}/bsdinstall > PROG= distextract > -LIBADD= archive dpv dialog m > +CFLAGS+= -I${SRCTOP}/contrib/bsddialog/lib > +LIBADD= archive bsddialog m > > MAN= > > diff --git a/usr.sbin/bsdinstall/distextract/distextract.c b/usr.sbin/bsdinstall/distextract/distextract.c > index 8ad6c7b2c64b..df10c299ab7f 100644 > --- a/usr.sbin/bsdinstall/distextract/distextract.c > +++ b/usr.sbin/bsdinstall/distextract/distextract.c > @@ -33,11 +33,12 @@ __FBSDID("$FreeBSD$"); > #include <sys/param.h> > #include <archive.h> > #include <ctype.h> > -#include <dialog.h> > -#include <dpv.h> > +#include <bsddialog.h> > +#include <bsddialog_progressview.h> > #include <err.h> > #include <errno.h> > #include <limits.h> > +#include <signal.h> > #include <stdio.h> > #include <stdlib.h> > #include <string.h> > @@ -46,30 +47,27 @@ __FBSDID("$FreeBSD$"); > /* Data to process */ > static char *distdir = NULL; > static struct archive *archive = NULL; > -static struct dpv_file_node *dists = NULL; > > /* Function prototypes */ > static void sig_int(int sig); > static int count_files(const char *file); > -static int extract_files(struct dpv_file_node *file, int out); > +static int extract_files(struct bsddialog_fileminibar *file); > > -#define _errx(...) (end_dialog(), errx(__VA_ARGS__)) > +#define _errx(...) (bsddialog_end(), errx(__VA_ARGS__)) > > int > main(void) > { > char *chrootdir; > char *distributions; > + unsigned int i; > int retval; > - size_t config_size = sizeof(struct dpv_config); > - size_t file_node_size = sizeof(struct dpv_file_node); > + size_t minibar_size = sizeof(struct bsddialog_fileminibar); > size_t span; > - struct dpv_config *config; > - struct dpv_file_node *dist = dists; > - static char backtitle[] = "FreeBSD Installer"; > - static char title[] = "Archive Extraction"; > - static char aprompt[] = "\n Overall Progress:"; > - static char pprompt[] = "Extracting distribution files...\n"; > + unsigned int nminibars; > + struct bsddialog_fileminibar *dists; > + struct bsddialog_progviewconf pvconf; > + struct bsddialog_conf conf; > struct sigaction act; > char error[PATH_MAX + 512]; > > @@ -78,17 +76,17 @@ main(void) > if ((distdir = getenv("BSDINSTALL_DISTDIR")) == NULL) > distdir = __DECONST(char *, ""); > > - /* Initialize dialog(3) */ > - init_dialog(stdin, stdout); > - dialog_vars.backtitle = backtitle; > - dlg_put_backtitle(); > - > - dialog_msgbox("", > - "Checking distribution archives.\nPlease wait...", 4, 35, FALSE); > - > - /* > - * Parse $DISTRIBUTIONS into dpv(3) linked-list > - */ > + if (bsddialog_init() == BSDDIALOG_ERROR) > + errx(EXIT_FAILURE, "Cannot init libbsdialog"); > + bsddialog_initconf(&conf); > + bsddialog_backtitle(&conf, __DECONST(char *, "FreeBSD Installer")); Can all these interfaces really not just use a const char * rather than having to scatter __DECONST everywhere if you want to pass a string literal to functions like this? There are quite a few __DECONST’s of string literals in this patch alone... Jess