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