From 2bb5907f9e92cdeab69dee43a47aabe94d109f03 Mon Sep 17 00:00:00 2001 From: dteske Date: Tue, 26 Jan 2016 23:56:27 +0000 Subject: [PATCH] Add keep_tite configuration option Similar to dialog(3) keep_tite option used to prevent visually disturbing initialization or exit that could occur when run from a script using dpv(3) by way of dpv(1) in sequence with other dialog(1) invocations. --- lib/libdpv/dpv.3 | 5 +++-- lib/libdpv/dpv.c | 5 ++++- lib/libdpv/dpv.h | 1 + lib/libdpv/dpv_private.h | 1 + sys/sys/param.h | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/libdpv/dpv.3 b/lib/libdpv/dpv.3 index 8581279e1dc6..011ab8208d14 100644 --- a/lib/libdpv/dpv.3 +++ b/lib/libdpv/dpv.3 @@ -1,4 +1,4 @@ -.\" Copyright (c) 2013-2015 Devin Teske +.\" Copyright (c) 2013-2016 Devin Teske .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd Oct 22, 2015 +.Dd Jan 26, 2016 .Dt DPV 3 .Os .Sh NAME @@ -64,6 +64,7 @@ argument contains the following properties for configuring global display features: .Bd -literal -offset indent struct dpv_config { + uint8_t keep_tite; /* Cleaner exit for scripts */ enum dpv_display display_type; /* Def. DPV_DISPLAY_LIBDIALOG */ enum dpv_output output_type; /* Default DPV_OUTPUT_NONE */ int debug; /* Enable debug on stderr */ diff --git a/lib/libdpv/dpv.c b/lib/libdpv/dpv.c index d3506ca9d82d..edf75bd1dfe7 100644 --- a/lib/libdpv/dpv.c +++ b/lib/libdpv/dpv.c @@ -69,6 +69,7 @@ long long dpv_overall_read = 0; static char pathbuf[PATH_MAX]; /* Extra display information */ +uint8_t keep_tite = FALSE; /* dpv_config.keep_tite */ uint8_t no_labels = FALSE; /* dpv_config.options & DPV_NO_LABELS */ uint8_t wide = FALSE; /* dpv_config.options & DPV_WIDE_MODE */ char *aprompt = NULL; /* dpv_config.aprompt */ @@ -150,6 +151,7 @@ dpv(struct dpv_config *config, struct dpv_file_node *file_list) dialog_updates_per_second = DIALOG_UPDATES_PER_SEC; display_limit = DISPLAY_LIMIT_DEFAULT; display_type = DPV_DISPLAY_LIBDIALOG; + keep_tite = FALSE; label_size = LABEL_SIZE_DEFAULT; msg_done = NULL; msg_fail = NULL; @@ -193,6 +195,7 @@ dpv(struct dpv_config *config, struct dpv_file_node *file_list) dialog_updates_per_second = config->dialog_updates_per_second; display_limit = config->display_limit; display_type = config->display_type; + keep_tite = config->keep_tite; label_size = config->label_size; msg_done = (char *)config->msg_done; msg_fail = (char *)config->msg_fail; @@ -695,7 +698,7 @@ dpv(struct dpv_config *config, struct dpv_file_node *file_list) close(dialog_out); waitpid(pid, (int *)NULL, 0); } - if (!dpv_interrupt) + if (!keep_tite && !dpv_interrupt) printf("\n"); } else warnx("%s: %lli overall read", __func__, dpv_overall_read); diff --git a/lib/libdpv/dpv.h b/lib/libdpv/dpv.h index 03768a7ced40..67d7bc11e9a8 100644 --- a/lib/libdpv/dpv.h +++ b/lib/libdpv/dpv.h @@ -97,6 +97,7 @@ struct dpv_file_node { * Anatomy of config option to pass as dpv() config argument */ struct dpv_config { + uint8_t keep_tite; /* Prevent visually distracting exit */ enum dpv_display display_type; /* Display (default TYPE_LIBDIALOG) */ enum dpv_output output_type; /* Output (default TYPE_NONE) */ int debug; /* Enable debugging output on stderr */ diff --git a/lib/libdpv/dpv_private.h b/lib/libdpv/dpv_private.h index 5164eb321ed2..1bebba643f18 100644 --- a/lib/libdpv/dpv_private.h +++ b/lib/libdpv/dpv_private.h @@ -38,6 +38,7 @@ extern uint8_t debug; extern unsigned int dpv_nfiles; /* Extra display information */ +extern uint8_t keep_tite; extern uint8_t no_labels; extern uint8_t wide; extern char *msg_done, *msg_fail, *msg_pending; diff --git a/sys/sys/param.h b/sys/sys/param.h index 7c03f3374d4c..c383c432e43f 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -58,7 +58,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 1100096 /* Master, propagated to newvers */ +#define __FreeBSD_version 1100097 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,