1*80f7300dSDevin Teske.\" Copyright (c) 2013-2016 Devin Teske 2041394f3SDevin Teske.\" All rights reserved. 3041394f3SDevin Teske.\" 4041394f3SDevin Teske.\" Redistribution and use in source and binary forms, with or without 5041394f3SDevin Teske.\" modification, are permitted provided that the following conditions 6041394f3SDevin Teske.\" are met: 7041394f3SDevin Teske.\" 1. Redistributions of source code must retain the above copyright 8041394f3SDevin Teske.\" notice, this list of conditions and the following disclaimer. 9041394f3SDevin Teske.\" 2. Redistributions in binary form must reproduce the above copyright 10041394f3SDevin Teske.\" notice, this list of conditions and the following disclaimer in the 11041394f3SDevin Teske.\" documentation and/or other materials provided with the distribution. 12041394f3SDevin Teske.\" 13041394f3SDevin Teske.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14041394f3SDevin Teske.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15041394f3SDevin Teske.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16041394f3SDevin Teske.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17041394f3SDevin Teske.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18041394f3SDevin Teske.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19041394f3SDevin Teske.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20041394f3SDevin Teske.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21041394f3SDevin Teske.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22041394f3SDevin Teske.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23041394f3SDevin Teske.\" SUCH DAMAGE. 24041394f3SDevin Teske.\" 25041394f3SDevin Teske.\" $FreeBSD$ 26041394f3SDevin Teske.\" 27*80f7300dSDevin Teske.Dd Jan 26, 2016 28041394f3SDevin Teske.Dt DPV 3 29041394f3SDevin Teske.Os 30041394f3SDevin Teske.Sh NAME 31041394f3SDevin Teske.Nm dpv 32041394f3SDevin Teske.Nd dialog progress view library 33041394f3SDevin Teske.Sh LIBRARY 34041394f3SDevin Teske.Lb libdpv 35041394f3SDevin Teske.Sh SYNOPSIS 36041394f3SDevin Teske.In dpv.h 37041394f3SDevin Teske.Ft int 38041394f3SDevin Teske.Fo dpv 39041394f3SDevin Teske.Fa "struct dpv_config *config, struct dpv_file_node *file_list" 40041394f3SDevin Teske.Fc 41041394f3SDevin Teske.Ft void 42041394f3SDevin Teske.Fo dpv_free 43041394f3SDevin Teske.Fa "void" 44041394f3SDevin Teske.Fc 45041394f3SDevin Teske.Sh DESCRIPTION 46041394f3SDevin TeskeThe 47041394f3SDevin Teske.Nm 48041394f3SDevin Teskelibrary provides an interface for creating complex 49041394f3SDevin Teske.Dq gauge 50041394f3SDevin Teskewidgets for displaying progress on various actions. 51041394f3SDevin TeskeThe 52041394f3SDevin Teske.Nm 53041394f3SDevin Teskelibrary can display progress with one of 54041394f3SDevin Teske.Xr dialog 3 , 55041394f3SDevin Teske.Xr dialog 1 , 56041394f3SDevin Teskeor 57041394f3SDevin Teske.Xr Xdialog 1 58041394f3SDevin Teske.Pq x11/xdialog from the ports tree . 59041394f3SDevin Teske.Pp 60041394f3SDevin TeskeThe 61041394f3SDevin Teske.Fn dpv 62041394f3SDevin Teske.Fa config 63041394f3SDevin Teskeargument contains the following properties for configuring global display 64041394f3SDevin Teskefeatures: 65041394f3SDevin Teske.Bd -literal -offset indent 66041394f3SDevin Teskestruct dpv_config { 67*80f7300dSDevin Teske uint8_t keep_tite; /* Cleaner exit for scripts */ 68041394f3SDevin Teske enum dpv_display display_type; /* Def. DPV_DISPLAY_LIBDIALOG */ 69041394f3SDevin Teske enum dpv_output output_type; /* Default DPV_OUTPUT_NONE */ 70041394f3SDevin Teske int debug; /* Enable debug on stderr */ 71041394f3SDevin Teske int display_limit; /* Files/page. Default -1 */ 72041394f3SDevin Teske int label_size; /* Label size. Default 28 */ 73041394f3SDevin Teske int pbar_size; /* Mini-progress size */ 74041394f3SDevin Teske int dialog_updates_per_second; /* Default 16 */ 75041394f3SDevin Teske int status_updates_per_second; /* Default 2 */ 76041394f3SDevin Teske uint16_t options; /* Default 0 (none) */ 77041394f3SDevin Teske char *title; /* Widget title */ 78041394f3SDevin Teske char *backtitle; /* Widget backtitle */ 79041394f3SDevin Teske char *aprompt; /* Append. Default NULL */ 80041394f3SDevin Teske char *pprompt; /* Prefix. Default NULL */ 81041394f3SDevin Teske char *msg_done; /* Default `Done' */ 82041394f3SDevin Teske char *msg_fail; /* Default `Fail' */ 83041394f3SDevin Teske char *msg_pending; /* Default `Pending' */ 84041394f3SDevin Teske char *output; /* Output format string */ 85041394f3SDevin Teske const char *status_solo; /* dialog(3) solo-status format. 86041394f3SDevin Teske * Default DPV_STATUS_SOLO */ 87041394f3SDevin Teske const char *status_many; /* dialog(3) many-status format. 88041394f3SDevin Teske * Default DPV_STATUS_MANY */ 89041394f3SDevin Teske 90041394f3SDevin Teske /* 91041394f3SDevin Teske * Function pointer; action to perform data transfer 92041394f3SDevin Teske */ 93041394f3SDevin Teske int (*action)(struct dpv_file_node *file, int out); 94041394f3SDevin Teske}; 95041394f3SDevin Teske 96041394f3SDevin Teskeenum dpv_display { 97041394f3SDevin Teske DPV_DISPLAY_LIBDIALOG = 0, /* Use dialog(3) (default) */ 98041394f3SDevin Teske DPV_DISPLAY_STDOUT, /* Use stdout */ 99041394f3SDevin Teske DPV_DISPLAY_DIALOG, /* Use spawned dialog(1) */ 100041394f3SDevin Teske DPV_DISPLAY_XDIALOG, /* Use spawned Xdialog(1) */ 101041394f3SDevin Teske}; 102041394f3SDevin Teske 103041394f3SDevin Teskeenum dpv_output { 104041394f3SDevin Teske DPV_OUTPUT_NONE = 0, /* No output (default) */ 105041394f3SDevin Teske DPV_OUTPUT_FILE, /* Read `output' member as file path */ 106041394f3SDevin Teske DPV_OUTPUT_SHELL, /* Read `output' member as shell cmd */ 107041394f3SDevin Teske}; 108041394f3SDevin Teske.Ed 109041394f3SDevin Teske.Pp 110041394f3SDevin TeskeThe 111041394f3SDevin Teske.Va options 112041394f3SDevin Teskemember of the 113041394f3SDevin Teske.Fn dpv 114041394f3SDevin Teske.Fa config 115041394f3SDevin Teskeargument is a mask of bit fields indicating various processing options. 116041394f3SDevin TeskePossible flags are as follows: 117041394f3SDevin Teske.Bl -tag -width DPV_NO_OVERRUN 118041394f3SDevin Teske.It Dv DPV_TEST_MODE 119041394f3SDevin TeskeEnable test mode. 120041394f3SDevin TeskeIn test mode, the 121041394f3SDevin Teske.Fn action 122041394f3SDevin Teskecallback of the 123041394f3SDevin Teske.Fa config 124041394f3SDevin Teskeargument is not called but instead simulated-data is used to drive progress. 125041394f3SDevin TeskeAppends 126041394f3SDevin Teske.Dq [TEST MODE] 127041394f3SDevin Tesketo the status line 128041394f3SDevin Teske.Po 129041394f3SDevin Tesketo override, set the 130041394f3SDevin Teske.Va status_format 131041394f3SDevin Teskemember of the 132041394f3SDevin Teske.Fn dpv 133041394f3SDevin Teske.Fa config 134041394f3SDevin Teskeargument; 135041394f3SDevin Teskee.g., to 136041394f3SDevin Teske.Dv DPV_STATUS_DEFAULT 137041394f3SDevin Teske.Pc . 138041394f3SDevin Teske.It Dv DPV_WIDE_MODE 139041394f3SDevin TeskeEnable wide mode. 140041394f3SDevin TeskeIn wide mode, the length of the 141041394f3SDevin Teske.Va aprompt 142041394f3SDevin Teskeand 143041394f3SDevin Teske.Va pprompt 144041394f3SDevin Teskemembers of the 145041394f3SDevin Teske.Fn dpv 146041394f3SDevin Teske.Fa config 147041394f3SDevin Teskeargument will bump the width of the gauge widget. 148041394f3SDevin TeskePrompts wider than the maximum width will wrap 149041394f3SDevin Teske.Po 150041394f3SDevin Teskeunless using 151041394f3SDevin Teske.Xr Xdialog 1 ; 152041394f3SDevin Teskesee BUGS section below 153041394f3SDevin Teske.Pc . 154041394f3SDevin Teske.It Dv DPV_NO_LABELS 155041394f3SDevin TeskeDisables the display of labels associated with each transfer 156041394f3SDevin Teske.Po 157041394f3SDevin Teske.Va label_size 158041394f3SDevin Teskemember of 159041394f3SDevin Teske.Fn dpv 160041394f3SDevin Teske.Fa config 161041394f3SDevin Teskeargument is ignored 162041394f3SDevin Teske.Pc . 163041394f3SDevin Teske.It Dv DPV_USE_COLOR 164041394f3SDevin TeskeForce the use of color even if the 165041394f3SDevin Teske.Va display_type 166041394f3SDevin Teskedoes not support color 167041394f3SDevin Teske.Po 168041394f3SDevin Teske.Ev USE_COLOR 169041394f3SDevin Teskeenvironment variable is ignored 170041394f3SDevin Teske.Pc . 171041394f3SDevin Teske.It Dv DPV_NO_OVERRUN 172041394f3SDevin TeskeWhen enabled, callbacks for the current 173041394f3SDevin Teske.Vt dpv_file_node 174041394f3SDevin Teskeare terminated when 175041394f3SDevin Teske.Fn action 176041394f3SDevin Teskereturns 100 or greater 177041394f3SDevin Teske.Po 178041394f3SDevin Teskealleviates the need to change the 179041394f3SDevin Teske.Va status 180041394f3SDevin Teskeof the current 181041394f3SDevin Teske.Vt dpv_file_node 182041394f3SDevin Teskebut may also cause file truncation if the stream exceeds expected length 183041394f3SDevin Teske.Pc . 184041394f3SDevin Teske.El 185041394f3SDevin Teske.Pp 186041394f3SDevin TeskeThe 187041394f3SDevin Teske.Fa file_list 188041394f3SDevin Teskeargument to 189041394f3SDevin Teske.Fn dpv 190041394f3SDevin Teskeis a pointer to a 191041394f3SDevin Teske.Dq linked-list , 192041394f3SDevin Teskedescribed as follows in 193041394f3SDevin Teske.In dpv.h : 194041394f3SDevin Teske.Bd -literal -offset indent 195041394f3SDevin Teskestruct dpv_file_node { 196041394f3SDevin Teske enum dpv_status status; /* status of read operation */ 197041394f3SDevin Teske char *msg; /* display instead of "Done/Fail" */ 198041394f3SDevin Teske char *name; /* name of file to read */ 199041394f3SDevin Teske char *path; /* path to file */ 200041394f3SDevin Teske long long length; /* expected size */ 201041394f3SDevin Teske long long read; /* number units read (e.g., bytes) */ 202041394f3SDevin Teske struct dpv_file_node *next;/* pointer to next (end with NULL) */ 203041394f3SDevin Teske}; 204041394f3SDevin Teske.Ed 205041394f3SDevin Teske.Pp 206041394f3SDevin TeskeFor each of the items in the 207041394f3SDevin Teske.Fa file_list 208041394f3SDevin Teske.Dq linked-list 209041394f3SDevin Teskeargument, the 210041394f3SDevin Teske.Fn action 211041394f3SDevin Teskecallback member of the 212041394f3SDevin Teske.Fn dpv 213041394f3SDevin Teske.Fa config 214041394f3SDevin Teskeargument is called. 215041394f3SDevin TeskeThe 216041394f3SDevin Teske.Fn action 217041394f3SDevin Teskefunction should perform a 218041394f3SDevin Teske.Dq nominal 219041394f3SDevin Teskeaction on the file and return. 220041394f3SDevin TeskeThe return value of 221041394f3SDevin Teske.Vt int 222041394f3SDevin Teskerepresents the current progress percentage 223041394f3SDevin Teske.Pq 0-100 224041394f3SDevin Teskefor the current file. 225041394f3SDevin Teske.Pp 226041394f3SDevin TeskeThe 227041394f3SDevin Teske.Fn action 228041394f3SDevin Teskecallback provides two variables for each call. 229041394f3SDevin Teske.Fa file 230041394f3SDevin Teskeprovides a reference to the current 231041394f3SDevin Teske.Vt dpv_file_node 232041394f3SDevin Teskebeing processed. 233041394f3SDevin Teske.Fa out 234041394f3SDevin Teskeprovides a file descriptor where the data should go. 235041394f3SDevin Teske.Pp 236041394f3SDevin TeskeIf the 237041394f3SDevin Teske.Va output 238041394f3SDevin Teskemember of the 239041394f3SDevin Teske.Fn dpv 240041394f3SDevin Teske.Fa config 241041394f3SDevin Teskeargument was set to DPV_OUTPUT_NONE 242041394f3SDevin Teske.Pq default ; when invoking Fn dpv , 243041394f3SDevin Teskethe 244041394f3SDevin Teske.Fa out 245041394f3SDevin Teskefile descriptor of 246041394f3SDevin Teske.Fn action 247041394f3SDevin Teskewill be zero and should be ignored. 248041394f3SDevin TeskeIf 249041394f3SDevin Teske.Fa output 250041394f3SDevin Teskewas set to DPV_OUTPUT_FILE, 251041394f3SDevin Teske.Fa out 252041394f3SDevin Teskewill be an open file descriptor to a file. 253041394f3SDevin TeskeIf 254041394f3SDevin Teske.Fa output 255041394f3SDevin Teskewas set to DPV_OUTPUT_SHELL, 256041394f3SDevin Teske.Fa out 257041394f3SDevin Teskewill be an open file descriptor to a pipe for a spawned shell program. 258041394f3SDevin TeskeWhen 259041394f3SDevin Teske.Fa out 260041394f3SDevin Teskeis greater than zero, you should write any data you have read back to 261041394f3SDevin Teske.Fa out . 262041394f3SDevin Teske.Pp 263041394f3SDevin TeskeTo abort 264041394f3SDevin Teske.Fn dpv , 265041394f3SDevin Teskeeither from the 266041394f3SDevin Teske.Fn action 267041394f3SDevin Teskecallback or asynchronously from a signal handler, two globals are provided via 268041394f3SDevin Teske.In dpv.h : 269041394f3SDevin Teske.Bd -literal -offset indent 270041394f3SDevin Teskeextern int dpv_interrupt; /* Set to TRUE in interrupt handler */ 271041394f3SDevin Teskeextern int dpv_abort; /* Set to true in callback to abort */ 272041394f3SDevin Teske.Ed 273041394f3SDevin Teske.Pp 274041394f3SDevin TeskeThese globals are not automatically reset and must be manually maintained. 275041394f3SDevin TeskeDon't forget to reset these globals before subsequent invocations of 276041394f3SDevin Teske.Fn dpv 277041394f3SDevin Teskewhen making multiple calls from the same program. 278041394f3SDevin Teske.Pp 279041394f3SDevin TeskeIn addition, the 280041394f3SDevin Teske.Va status 281041394f3SDevin Teskemember of the 282041394f3SDevin Teske.Fn action 283041394f3SDevin Teske.Fa file 284041394f3SDevin Teskeargument can be used to control callbacks for the current file. 285041394f3SDevin TeskeThe 286041394f3SDevin Teske.Va status 287041394f3SDevin Teskemember can be set to any of the following from 288041394f3SDevin Teske.In dpv.h : 289041394f3SDevin Teske.Bd -literal -offset indent 290041394f3SDevin Teskeenum dpv_status { 291041394f3SDevin Teske DPV_STATUS_RUNNING = 0, /* Running (default) */ 292041394f3SDevin Teske DPV_STATUS_DONE, /* Completed */ 293041394f3SDevin Teske DPV_STATUS_FAILED, /* Oops, something went wrong */ 294041394f3SDevin Teske}; 295041394f3SDevin Teske.Ed 296041394f3SDevin Teske.Pp 297041394f3SDevin TeskeThe default 298041394f3SDevin Teske.Fa status 299041394f3SDevin Teskeis zero, DPV_STATUS_RUNING, which keeps the callbacks coming for the current 300041394f3SDevin Teske.Fn file . 301041394f3SDevin TeskeSetting 302041394f3SDevin Teske.Ql file->status 303041394f3SDevin Tesketo anything other than DPV_STATUS_RUNNING will cause 304041394f3SDevin Teske.Fn dpv 305041394f3SDevin Tesketo loop to the next file, effecting the next callback, if any. 306041394f3SDevin Teske.Pp 307041394f3SDevin TeskeThe 308041394f3SDevin Teske.Fn action 309041394f3SDevin Teskecallback is responsible for calculating percentages and 310041394f3SDevin Teske.Pq recommended 311041394f3SDevin Teskemaintaining a 312041394f3SDevin Teske.Nm 313041394f3SDevin Teskeglobal counter so 314041394f3SDevin Teske.Fn dpv 315041394f3SDevin Teskecan display throughput statistics. 316041394f3SDevin TeskePercentages are reported through the 317041394f3SDevin Teske.Vt int 318041394f3SDevin Teskereturn value of the 319041394f3SDevin Teske.Fn action 320041394f3SDevin Teskecallback. 321041394f3SDevin TeskeThroughput statistics are calculated from the following global 322041394f3SDevin Teske.Vt int 323041394f3SDevin Teskein 324041394f3SDevin Teske.In dpv.h : 325041394f3SDevin Teske.Bd -literal -offset indent 326041394f3SDevin Teskeextern int dpv_overall_read; 327041394f3SDevin Teske.Ed 328041394f3SDevin Teske.Pp 329041394f3SDevin TeskeThis should be set to the number of bytes that have been read for all files. 330041394f3SDevin TeskeThroughput information is displayed in the status line 331041394f3SDevin Teske.Pq only available when using Xr dialog 3 332041394f3SDevin Teskeat the bottom of the screen. 333041394f3SDevin TeskeSee DPV_DISPLAY_LIBDIALOG above. 334041394f3SDevin Teske.Pp 335041394f3SDevin TeskeNote that 336041394f3SDevin Teske.Va dpv_overall_read 337041394f3SDevin Teskedoes not have to represent bytes. 338041394f3SDevin TeskeFor example, you can change the 339041394f3SDevin Teske.Va status_format 340041394f3SDevin Tesketo display something other than 341041394f3SDevin Teske.Dq Li bytes 342041394f3SDevin Teskeand increment 343041394f3SDevin Teske.Va dpv_overall_read 344041394f3SDevin Teskeaccordingly 345041394f3SDevin Teske.Pq e.g., counting lines . 346041394f3SDevin Teske.Pp 347041394f3SDevin TeskeWhen 348041394f3SDevin Teske.Fn dpv 349041394f3SDevin Teskeis processing the current file, the 350041394f3SDevin Teske.Va length 351041394f3SDevin Teskeand 352041394f3SDevin Teske.Va read 353041394f3SDevin Teskemembers of the 354041394f3SDevin Teske.Fn action 355041394f3SDevin Teske.Fa file 356041394f3SDevin Teskeargument are used for calculating the display of mini progress bars 357041394f3SDevin Teske.Po 358041394f3SDevin Teskeif enabled; see 359041394f3SDevin Teske.Va pbar_size 360041394f3SDevin Teskeabove 361041394f3SDevin Teske.Pc . 362041394f3SDevin TeskeIf the 363041394f3SDevin Teske.Va length 364041394f3SDevin Teskemember of the current 365041394f3SDevin Teske.Fa file 366041394f3SDevin Teskeis less than zero 367041394f3SDevin Teske.Pq indicating an unknown file length , 368041394f3SDevin Teskea 369041394f3SDevin Teske.Xr humanize_number 3 370041394f3SDevin Teskeversion of the 371041394f3SDevin Teske.Va read 372041394f3SDevin Teskemember is used instead of a traditional progress bar. 373041394f3SDevin TeskeOtherwise a progress bar is calculated as percentage read to file length. 374041394f3SDevin Teske.Fn action 375041394f3SDevin Teskecallback must maintain these member values for mini-progress bars. 376041394f3SDevin Teske.Pp 377041394f3SDevin TeskeThe 378041394f3SDevin Teske.Fn dpv_free 379041394f3SDevin Teskefunction performs 380041394f3SDevin Teske.Xr free 3 381041394f3SDevin Teskeon private global variables initialized by 382041394f3SDevin Teske.Fn dpv . 383041394f3SDevin Teske.Sh ENVIRONMENT 384041394f3SDevin TeskeThe following environment variables are referenced by 385041394f3SDevin Teske.Nm : 386041394f3SDevin Teske.Bl -tag -width ".Ev USE_COLOR" 387041394f3SDevin Teske.It Ev DIALOG 388041394f3SDevin TeskeOverride command string used to launch 389041394f3SDevin Teske.Xr dialog 1 390041394f3SDevin Teske.Pq requires Dv DPV_DISPLAY_DIALOG 391041394f3SDevin Teskeor 392041394f3SDevin Teske.Xr Xdialog 1 393041394f3SDevin Teske.Pq requires Dv DPV_DISPLAY_XDIALOG ; 394041394f3SDevin Teskedefault is either 395041394f3SDevin Teske.Ql dialog 396041394f3SDevin Teske.Pq for Dv DPV_DISPLAY_DIALOG 397041394f3SDevin Teskeor 398041394f3SDevin Teske.Ql Xdialog 399041394f3SDevin Teske.Pq for Dv DPV_DISPLAY_XDIALOG . 400041394f3SDevin Teske.It Ev DIALOGRC 401041394f3SDevin TeskeIf set and non-NULL, path to 402041394f3SDevin Teske.Ql .dialogrc 403041394f3SDevin Teskefile. 404041394f3SDevin Teske.It Ev HOME 405041394f3SDevin TeskeIf 406041394f3SDevin Teske.Ql Ev $DIALOGRC 407041394f3SDevin Teskeis either not set or NULL, used as a prefix to 408041394f3SDevin Teske.Ql .dialogrc 409041394f3SDevin Teske.Pq i.e., Ql $HOME/.dialogrc . 410041394f3SDevin Teske.It Ev USE_COLOR 411041394f3SDevin TeskeIf set and NULL, disables the use of color when using 412041394f3SDevin Teske.Xr dialog 1 413041394f3SDevin Teske.Pq does not apply to Xr Xdialog 1 . 414041394f3SDevin Teske.It Ev msg_done Ev msg_fail Ev msg_pending 415041394f3SDevin TeskeInternationalization strings for overriding the default English strings 416041394f3SDevin Teske.Ql Done , 417041394f3SDevin Teske.Ql Fail , 418041394f3SDevin Teskeand 419041394f3SDevin Teske.Ql Pending 420041394f3SDevin Teskerespectively. 421041394f3SDevin TeskeTo prevent their usage, explicitly set the 422041394f3SDevin Teske.Va msg_done , 423041394f3SDevin Teske.Va msg_fail , 424041394f3SDevin Teskeand 425041394f3SDevin Teske.Va msg_pending 426041394f3SDevin Teskemembers of 427041394f3SDevin Teske.Fn dpv 428041394f3SDevin Teske.Fa config 429041394f3SDevin Teskeargument to default macros 430041394f3SDevin Teske.Pq DPV_DONE_DEFAULT, DPV_FAIL_DEFAULT, and DPV_PENDING_DEFAULT 431041394f3SDevin Teskeor desired values. 432041394f3SDevin Teske.El 433041394f3SDevin Teske.Sh FILES 434041394f3SDevin Teske.Bl -tag -width ".Pa $HOME/.dialogrc" -compact 435041394f3SDevin Teske.It Pa $HOME/.dialogrc 436041394f3SDevin Teske.El 437041394f3SDevin Teske.Sh SEE ALSO 438041394f3SDevin Teske.Xr dialog 1 , 439c09eb466SJoel Dahl.Xr Xdialog 1 , 440c09eb466SJoel Dahl.Xr dialog 3 441041394f3SDevin Teske.Sh HISTORY 442041394f3SDevin TeskeThe 443041394f3SDevin Teske.Nm 444041394f3SDevin Teskelibrary first appeared in 4451f00a99aSDevin Teske.Fx 10.2 . 446041394f3SDevin Teske.Sh AUTHORS 447041394f3SDevin Teske.An Devin Teske Aq dteske@FreeBSD.org 448041394f3SDevin Teske.Sh BUGS 449041394f3SDevin Teske.Xr Xdialog 1 , 450041394f3SDevin Teskewhen given both 451041394f3SDevin Teske.Ql Fl -title Ar title 452041394f3SDevin Teske.Po 453041394f3SDevin Teskesee above 454041394f3SDevin Teske.Ql Va title 455041394f3SDevin Teskemember of 456041394f3SDevin Teske.Va struct dpv_config 457041394f3SDevin Teske.Pc 458041394f3SDevin Teskeand 459041394f3SDevin Teske.Ql Fl -backtitle Ar backtitle 460041394f3SDevin Teske.Po 461041394f3SDevin Teskesee above 462041394f3SDevin Teske.Ql Va backtitle 463041394f3SDevin Teskemember of 464041394f3SDevin Teske.Va struct dpv_config 465041394f3SDevin Teske.Pc , 466041394f3SDevin Teskedisplays the backtitle in place of the title and vice-versa. 467041394f3SDevin Teske.Pp 468041394f3SDevin Teske.Xr Xdialog 1 469041394f3SDevin Teskedoes not wrap long prompt texts received after initial launch. 470041394f3SDevin TeskeThis is a known issue with the 471041394f3SDevin Teske.Ql --gauge 472041394f3SDevin Teskewidget in 473041394f3SDevin Teske.Xr Xdialog 1 . 474041394f3SDevin TeskeEmbed escaped newlines within prompt text(s) to force line breaks. 475041394f3SDevin Teske.Pp 476041394f3SDevin Teske.Xr dialog 1 477041394f3SDevin Teskedoes not display the first character after a series of escaped escape-sequences 478041394f3SDevin Teske(e.g., ``\\\\n'' produces ``\\'' instead of ``\\n''). 479041394f3SDevin TeskeThis is a known issue with 480041394f3SDevin Teske.Xr dialog 1 481041394f3SDevin Teskeand does not affect 482041394f3SDevin Teske.Xr dialog 3 483041394f3SDevin Teskeor 484041394f3SDevin Teske.Xr Xdialog 1 . 485041394f3SDevin Teske.Pp 486041394f3SDevin TeskeIf your application ignores 487041394f3SDevin Teske.Ev USE_COLOR 488041394f3SDevin Teskewhen set and NULL before calling 489041394f3SDevin Teske.Xr dpv 3 490041394f3SDevin Teskewith color escape sequences anyway, 491041394f3SDevin Teske.Xr dialog 3 492041394f3SDevin Teskeand 493041394f3SDevin Teske.Xr dialog 1 494041394f3SDevin Teskemay not render properly. 495041394f3SDevin TeskeWorkaround is to detect when 496041394f3SDevin Teske.Ev USE_COLOR 497041394f3SDevin Teskeis set and NULL and either not use color escape sequences at that time or use 498041394f3SDevin Teske.Xr unsetenv 3 499041394f3SDevin Tesketo unset 500041394f3SDevin Teske.Ev USE_COLOR , 501041394f3SDevin Teskeforcing interpretation of color sequences. 502041394f3SDevin TeskeThis does not effect 503041394f3SDevin Teske.Xr Xdialog 1 , 504041394f3SDevin Teskewhich renders the color escape sequences as plain text. 505041394f3SDevin TeskeSee 506d4d112e3SJoel Dahl.Do 507041394f3SDevin Teskeembedded "\\Z" sequences 508041394f3SDevin Teske.Dc 509041394f3SDevin Teskein 510041394f3SDevin Teske.Xr dialog 1 511041394f3SDevin Teskefor additional information. 512