xref: /freebsd/lib/libdpv/dpv.3 (revision 19be69c56f64f2750daa9f33a7c9ed6c7c196df9)
180f7300dSDevin 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*19be69c5SDevin Teske.Dd Mar 13, 2018
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
39*19be69c5SDevin Teske.Fa "struct dpv_config *config"
40*19be69c5SDevin Teske.Fa "struct dpv_file_node *file_list"
41041394f3SDevin Teske.Fc
42041394f3SDevin Teske.Ft void
43041394f3SDevin Teske.Fo dpv_free
44041394f3SDevin Teske.Fa "void"
45041394f3SDevin Teske.Fc
46041394f3SDevin Teske.Sh DESCRIPTION
47041394f3SDevin TeskeThe
48041394f3SDevin Teske.Nm
49041394f3SDevin Teskelibrary provides an interface for creating complex
50041394f3SDevin Teske.Dq gauge
51041394f3SDevin Teskewidgets for displaying progress on various actions.
52041394f3SDevin TeskeThe
53041394f3SDevin Teske.Nm
54041394f3SDevin Teskelibrary can display progress with one of
55041394f3SDevin Teske.Xr dialog 3 ,
56041394f3SDevin Teske.Xr dialog 1 ,
57041394f3SDevin Teskeor
58041394f3SDevin Teske.Xr Xdialog 1
59041394f3SDevin Teske.Pq x11/xdialog from the ports tree .
60041394f3SDevin Teske.Pp
61041394f3SDevin TeskeThe
62041394f3SDevin Teske.Fn dpv
63041394f3SDevin Teske.Fa config
64*19be69c5SDevin Teskeargument properties for configuring global display features:
65041394f3SDevin Teske.Bd -literal -offset indent
66041394f3SDevin Teskestruct dpv_config {
6780f7300dSDevin 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.
116*19be69c5SDevin TeskePossible flags are:
117041394f3SDevin Teske.Bl -tag -width DPV_NO_OVERRUN
118041394f3SDevin Teske.It Dv DPV_TEST_MODE
119041394f3SDevin TeskeEnable test mode.
120*19be69c5SDevin TeskeIn test mode,
121*19be69c5SDevin Teskethe
122041394f3SDevin Teske.Fn action
123041394f3SDevin Teskecallback of the
124041394f3SDevin Teske.Fa config
125041394f3SDevin Teskeargument is not called but instead simulated-data is used to drive progress.
126041394f3SDevin TeskeAppends
127041394f3SDevin Teske.Dq [TEST MODE]
128041394f3SDevin Tesketo the status line
129041394f3SDevin Teske.Po
130*19be69c5SDevin Tesketo override,
131*19be69c5SDevin Teskeset the
132041394f3SDevin Teske.Va status_format
133041394f3SDevin Teskemember of the
134041394f3SDevin Teske.Fn dpv
135041394f3SDevin Teske.Fa config
136041394f3SDevin Teskeargument;
137*19be69c5SDevin Teskefor example,
138*19be69c5SDevin Tesketo
139041394f3SDevin Teske.Dv DPV_STATUS_DEFAULT
140041394f3SDevin Teske.Pc .
141041394f3SDevin Teske.It Dv DPV_WIDE_MODE
142041394f3SDevin TeskeEnable wide mode.
143*19be69c5SDevin TeskeIn wide mode,
144*19be69c5SDevin Teskethe length of the
145041394f3SDevin Teske.Va aprompt
146041394f3SDevin Teskeand
147041394f3SDevin Teske.Va pprompt
148041394f3SDevin Teskemembers of the
149041394f3SDevin Teske.Fn dpv
150041394f3SDevin Teske.Fa config
151041394f3SDevin Teskeargument will bump the width of the gauge widget.
152041394f3SDevin TeskePrompts wider than the maximum width will wrap
153041394f3SDevin Teske.Po
154041394f3SDevin Teskeunless using
155041394f3SDevin Teske.Xr Xdialog 1 ;
156041394f3SDevin Teskesee BUGS section below
157041394f3SDevin Teske.Pc .
158041394f3SDevin Teske.It Dv DPV_NO_LABELS
159041394f3SDevin TeskeDisables the display of labels associated with each transfer
160041394f3SDevin Teske.Po
161041394f3SDevin Teske.Va label_size
162041394f3SDevin Teskemember of
163041394f3SDevin Teske.Fn dpv
164041394f3SDevin Teske.Fa config
165041394f3SDevin Teskeargument is ignored
166041394f3SDevin Teske.Pc .
167041394f3SDevin Teske.It Dv DPV_USE_COLOR
168041394f3SDevin TeskeForce the use of color even if the
169041394f3SDevin Teske.Va display_type
170041394f3SDevin Teskedoes not support color
171041394f3SDevin Teske.Po
172041394f3SDevin Teske.Ev USE_COLOR
173041394f3SDevin Teskeenvironment variable is ignored
174041394f3SDevin Teske.Pc .
175041394f3SDevin Teske.It Dv DPV_NO_OVERRUN
176*19be69c5SDevin TeskeWhen enabled,
177*19be69c5SDevin Teskecallbacks for the current
178041394f3SDevin Teske.Vt dpv_file_node
179041394f3SDevin Teskeare terminated when
180041394f3SDevin Teske.Fn action
181041394f3SDevin Teskereturns 100 or greater
182041394f3SDevin Teske.Po
183041394f3SDevin Teskealleviates the need to change the
184041394f3SDevin Teske.Va status
185041394f3SDevin Teskeof the current
186041394f3SDevin Teske.Vt dpv_file_node
187041394f3SDevin Teskebut may also cause file truncation if the stream exceeds expected length
188041394f3SDevin Teske.Pc .
189041394f3SDevin Teske.El
190041394f3SDevin Teske.Pp
191041394f3SDevin TeskeThe
192041394f3SDevin Teske.Fa file_list
193041394f3SDevin Teskeargument to
194041394f3SDevin Teske.Fn dpv
195041394f3SDevin Teskeis a pointer to a
196041394f3SDevin Teske.Dq linked-list ,
197*19be69c5SDevin Teskedescribed in
198041394f3SDevin Teske.In dpv.h :
199041394f3SDevin Teske.Bd -literal -offset indent
200041394f3SDevin Teskestruct dpv_file_node {
201041394f3SDevin Teske    enum dpv_status    status; /* status of read operation */
202041394f3SDevin Teske    char               *msg;   /* display instead of "Done/Fail" */
203041394f3SDevin Teske    char               *name;  /* name of file to read */
204041394f3SDevin Teske    char               *path;  /* path to file */
205041394f3SDevin Teske    long long          length; /* expected size */
206041394f3SDevin Teske    long long          read;   /* number units read (e.g., bytes) */
207041394f3SDevin Teske    struct dpv_file_node *next;/* pointer to next (end with NULL) */
208041394f3SDevin Teske};
209041394f3SDevin Teske.Ed
210041394f3SDevin Teske.Pp
211041394f3SDevin TeskeFor each of the items in the
212041394f3SDevin Teske.Fa file_list
213041394f3SDevin Teske.Dq linked-list
214*19be69c5SDevin Teskeargument,
215*19be69c5SDevin Teskethe
216041394f3SDevin Teske.Fn action
217041394f3SDevin Teskecallback member of the
218041394f3SDevin Teske.Fn dpv
219041394f3SDevin Teske.Fa config
220041394f3SDevin Teskeargument is called.
221041394f3SDevin TeskeThe
222041394f3SDevin Teske.Fn action
223*19be69c5SDevin Teskefunction performs a
224041394f3SDevin Teske.Dq nominal
225041394f3SDevin Teskeaction on the file and return.
226041394f3SDevin TeskeThe return value of
227041394f3SDevin Teske.Vt int
228041394f3SDevin Teskerepresents the current progress percentage
229041394f3SDevin Teske.Pq 0-100
230041394f3SDevin Teskefor the current file.
231041394f3SDevin Teske.Pp
232041394f3SDevin TeskeThe
233041394f3SDevin Teske.Fn action
234041394f3SDevin Teskecallback provides two variables for each call.
235041394f3SDevin Teske.Fa file
236041394f3SDevin Teskeprovides a reference to the current
237041394f3SDevin Teske.Vt dpv_file_node
238041394f3SDevin Teskebeing processed.
239041394f3SDevin Teske.Fa out
240*19be69c5SDevin Teskeprovides a file descriptor where the data goes.
241041394f3SDevin Teske.Pp
242041394f3SDevin TeskeIf the
243041394f3SDevin Teske.Va output
244041394f3SDevin Teskemember of the
245041394f3SDevin Teske.Fn dpv
246041394f3SDevin Teske.Fa config
247041394f3SDevin Teskeargument was set to DPV_OUTPUT_NONE
248041394f3SDevin Teske.Pq default ; when invoking Fn dpv ,
249041394f3SDevin Teskethe
250041394f3SDevin Teske.Fa out
251041394f3SDevin Teskefile descriptor of
252041394f3SDevin Teske.Fn action
253*19be69c5SDevin Teskewill be zero and can be ignored.
254041394f3SDevin TeskeIf
255041394f3SDevin Teske.Fa output
256041394f3SDevin Teskewas set to DPV_OUTPUT_FILE,
257041394f3SDevin Teske.Fa out
258041394f3SDevin Teskewill be an open file descriptor to a file.
259041394f3SDevin TeskeIf
260041394f3SDevin Teske.Fa output
261041394f3SDevin Teskewas set to DPV_OUTPUT_SHELL,
262041394f3SDevin Teske.Fa out
263041394f3SDevin Teskewill be an open file descriptor to a pipe for a spawned shell program.
264041394f3SDevin TeskeWhen
265041394f3SDevin Teske.Fa out
266*19be69c5SDevin Teskeis greater than zero,
267*19be69c5SDevin Teskewrite data that has been read back to
268041394f3SDevin Teske.Fa out .
269041394f3SDevin Teske.Pp
270041394f3SDevin TeskeTo abort
271041394f3SDevin Teske.Fn dpv ,
272041394f3SDevin Teskeeither from the
273041394f3SDevin Teske.Fn action
274*19be69c5SDevin Teskecallback or asynchronously from a signal handler,
275*19be69c5SDevin Tesketwo globals are provided via
276041394f3SDevin Teske.In dpv.h :
277041394f3SDevin Teske.Bd -literal -offset indent
278041394f3SDevin Teskeextern int dpv_interrupt; /* Set to TRUE in interrupt handler */
279041394f3SDevin Teskeextern int dpv_abort;     /* Set to true in callback to abort */
280041394f3SDevin Teske.Ed
281041394f3SDevin Teske.Pp
282041394f3SDevin TeskeThese globals are not automatically reset and must be manually maintained.
283*19be69c5SDevin TeskeDo not forget to reset these globals before subsequent invocations of
284041394f3SDevin Teske.Fn dpv
285041394f3SDevin Teskewhen making multiple calls from the same program.
286041394f3SDevin Teske.Pp
287*19be69c5SDevin TeskeIn addition,
288*19be69c5SDevin Teskethe
289041394f3SDevin Teske.Va status
290041394f3SDevin Teskemember of the
291041394f3SDevin Teske.Fn action
292041394f3SDevin Teske.Fa file
293041394f3SDevin Teskeargument can be used to control callbacks for the current file.
294041394f3SDevin TeskeThe
295041394f3SDevin Teske.Va status
296*19be69c5SDevin Teskemember can be set to any of the below from
297041394f3SDevin Teske.In dpv.h :
298041394f3SDevin Teske.Bd -literal -offset indent
299041394f3SDevin Teskeenum dpv_status {
300041394f3SDevin Teske	DPV_STATUS_RUNNING = 0, /* Running (default) */
301041394f3SDevin Teske	DPV_STATUS_DONE,        /* Completed */
302041394f3SDevin Teske	DPV_STATUS_FAILED,      /* Oops, something went wrong */
303041394f3SDevin Teske};
304041394f3SDevin Teske.Ed
305041394f3SDevin Teske.Pp
306041394f3SDevin TeskeThe default
307041394f3SDevin Teske.Fa status
308*19be69c5SDevin Teskeis zero,
309*19be69c5SDevin TeskeDPV_STATUS_RUNNING,
310*19be69c5SDevin Teskewhich keeps the callbacks coming for the current
311041394f3SDevin Teske.Fn file .
312041394f3SDevin TeskeSetting
313041394f3SDevin Teske.Ql file->status
314041394f3SDevin Tesketo anything other than DPV_STATUS_RUNNING will cause
315041394f3SDevin Teske.Fn dpv
316*19be69c5SDevin Tesketo loop to the next file,
317*19be69c5SDevin Teskeeffecting the next callback,
318*19be69c5SDevin Teskeif any.
319041394f3SDevin Teske.Pp
320041394f3SDevin TeskeThe
321041394f3SDevin Teske.Fn action
322041394f3SDevin Teskecallback is responsible for calculating percentages and
323041394f3SDevin Teske.Pq recommended
324041394f3SDevin Teskemaintaining a
325041394f3SDevin Teske.Nm
326041394f3SDevin Teskeglobal counter so
327041394f3SDevin Teske.Fn dpv
328041394f3SDevin Teskecan display throughput statistics.
329041394f3SDevin TeskePercentages are reported through the
330041394f3SDevin Teske.Vt int
331041394f3SDevin Teskereturn value of the
332041394f3SDevin Teske.Fn action
333041394f3SDevin Teskecallback.
334*19be69c5SDevin TeskeThroughput statistics are calculated from the below global
335041394f3SDevin Teske.Vt int
336041394f3SDevin Teskein
337041394f3SDevin Teske.In dpv.h :
338041394f3SDevin Teske.Bd -literal -offset indent
339041394f3SDevin Teskeextern int dpv_overall_read;
340041394f3SDevin Teske.Ed
341041394f3SDevin Teske.Pp
342*19be69c5SDevin TeskeSet this to the number of bytes that have been read for all files.
343041394f3SDevin TeskeThroughput information is displayed in the status line
344041394f3SDevin Teske.Pq only available when using Xr dialog 3
345041394f3SDevin Teskeat the bottom of the screen.
346041394f3SDevin TeskeSee DPV_DISPLAY_LIBDIALOG above.
347041394f3SDevin Teske.Pp
348041394f3SDevin TeskeNote that
349041394f3SDevin Teske.Va dpv_overall_read
350041394f3SDevin Teskedoes not have to represent bytes.
351*19be69c5SDevin TeskeFor example,
352*19be69c5SDevin Teskethe
353041394f3SDevin Teske.Va status_format
354*19be69c5SDevin Teskecan be changed to display something other than
355041394f3SDevin Teske.Dq Li bytes
356041394f3SDevin Teskeand increment
357041394f3SDevin Teske.Va dpv_overall_read
358041394f3SDevin Teskeaccordingly
359*19be69c5SDevin Teske.Pq for example, counting lines .
360041394f3SDevin Teske.Pp
361041394f3SDevin TeskeWhen
362041394f3SDevin Teske.Fn dpv
363*19be69c5SDevin Teskeis processing the current file,
364*19be69c5SDevin Teskethe
365041394f3SDevin Teske.Va length
366041394f3SDevin Teskeand
367041394f3SDevin Teske.Va read
368041394f3SDevin Teskemembers of the
369041394f3SDevin Teske.Fn action
370041394f3SDevin Teske.Fa file
371041394f3SDevin Teskeargument are used for calculating the display of mini progress bars
372041394f3SDevin Teske.Po
373*19be69c5SDevin Teskeif enabled;
374*19be69c5SDevin Teskesee
375041394f3SDevin Teske.Va pbar_size
376041394f3SDevin Teskeabove
377041394f3SDevin Teske.Pc .
378041394f3SDevin TeskeIf the
379041394f3SDevin Teske.Va length
380041394f3SDevin Teskemember of the current
381041394f3SDevin Teske.Fa file
382041394f3SDevin Teskeis less than zero
383041394f3SDevin Teske.Pq indicating an unknown file length ,
384041394f3SDevin Teskea
385041394f3SDevin Teske.Xr humanize_number 3
386041394f3SDevin Teskeversion of the
387041394f3SDevin Teske.Va read
388041394f3SDevin Teskemember is used instead of a traditional progress bar.
389041394f3SDevin TeskeOtherwise a progress bar is calculated as percentage read to file length.
390041394f3SDevin Teske.Fn action
391041394f3SDevin Teskecallback must maintain these member values for mini-progress bars.
392041394f3SDevin Teske.Pp
393041394f3SDevin TeskeThe
394041394f3SDevin Teske.Fn dpv_free
395041394f3SDevin Teskefunction performs
396041394f3SDevin Teske.Xr free 3
397041394f3SDevin Teskeon private global variables initialized by
398041394f3SDevin Teske.Fn dpv .
399041394f3SDevin Teske.Sh ENVIRONMENT
400*19be69c5SDevin TeskeThe below environment variables are referenced by
401041394f3SDevin Teske.Nm :
402041394f3SDevin Teske.Bl -tag -width ".Ev USE_COLOR"
403041394f3SDevin Teske.It Ev DIALOG
404041394f3SDevin TeskeOverride command string used to launch
405041394f3SDevin Teske.Xr dialog 1
406041394f3SDevin Teske.Pq requires Dv DPV_DISPLAY_DIALOG
407041394f3SDevin Teskeor
408041394f3SDevin Teske.Xr Xdialog 1
409041394f3SDevin Teske.Pq requires Dv DPV_DISPLAY_XDIALOG ;
410041394f3SDevin Teskedefault is either
411041394f3SDevin Teske.Ql dialog
412041394f3SDevin Teske.Pq for Dv DPV_DISPLAY_DIALOG
413041394f3SDevin Teskeor
414041394f3SDevin Teske.Ql Xdialog
415041394f3SDevin Teske.Pq for Dv DPV_DISPLAY_XDIALOG .
416041394f3SDevin Teske.It Ev DIALOGRC
417*19be69c5SDevin TeskeIf set and non-NULL,
418*19be69c5SDevin Teskepath to
419041394f3SDevin Teske.Ql .dialogrc
420041394f3SDevin Teskefile.
421041394f3SDevin Teske.It Ev HOME
422041394f3SDevin TeskeIf
423041394f3SDevin Teske.Ql Ev $DIALOGRC
424*19be69c5SDevin Teskeis either not set or NULL,
425*19be69c5SDevin Teskeused as a prefix to
426041394f3SDevin Teske.Ql .dialogrc
427*19be69c5SDevin Teske.Pq that is, Ql $HOME/.dialogrc .
428041394f3SDevin Teske.It Ev USE_COLOR
429*19be69c5SDevin TeskeIf set and NULL,
430*19be69c5SDevin Teskedisables the use of color when using
431041394f3SDevin Teske.Xr dialog 1
432041394f3SDevin Teske.Pq does not apply to Xr Xdialog 1 .
433041394f3SDevin Teske.It Ev msg_done Ev msg_fail Ev msg_pending
434041394f3SDevin TeskeInternationalization strings for overriding the default English strings
435041394f3SDevin Teske.Ql Done ,
436041394f3SDevin Teske.Ql Fail ,
437041394f3SDevin Teskeand
438041394f3SDevin Teske.Ql Pending
439041394f3SDevin Teskerespectively.
440*19be69c5SDevin TeskeTo prevent their usage,
441*19be69c5SDevin Teskeexplicitly set the
442041394f3SDevin Teske.Va msg_done ,
443041394f3SDevin Teske.Va msg_fail ,
444041394f3SDevin Teskeand
445041394f3SDevin Teske.Va msg_pending
446041394f3SDevin Teskemembers of
447041394f3SDevin Teske.Fn dpv
448041394f3SDevin Teske.Fa config
449041394f3SDevin Teskeargument to default macros
450041394f3SDevin Teske.Pq DPV_DONE_DEFAULT, DPV_FAIL_DEFAULT, and DPV_PENDING_DEFAULT
451041394f3SDevin Teskeor desired values.
452041394f3SDevin Teske.El
453041394f3SDevin Teske.Sh FILES
454041394f3SDevin Teske.Bl -tag -width ".Pa $HOME/.dialogrc" -compact
455041394f3SDevin Teske.It Pa $HOME/.dialogrc
456041394f3SDevin Teske.El
457041394f3SDevin Teske.Sh SEE ALSO
458041394f3SDevin Teske.Xr dialog 1 ,
459c09eb466SJoel Dahl.Xr Xdialog 1 ,
460c09eb466SJoel Dahl.Xr dialog 3
461041394f3SDevin Teske.Sh HISTORY
462041394f3SDevin TeskeThe
463041394f3SDevin Teske.Nm
464041394f3SDevin Teskelibrary first appeared in
4651f00a99aSDevin Teske.Fx 10.2 .
466041394f3SDevin Teske.Sh AUTHORS
467041394f3SDevin Teske.An Devin Teske Aq dteske@FreeBSD.org
468041394f3SDevin Teske.Sh BUGS
469041394f3SDevin Teske.Xr Xdialog 1 ,
470041394f3SDevin Teskewhen given both
471041394f3SDevin Teske.Ql Fl -title Ar title
472041394f3SDevin Teske.Po
473041394f3SDevin Teskesee above
474041394f3SDevin Teske.Ql Va title
475041394f3SDevin Teskemember of
476041394f3SDevin Teske.Va struct dpv_config
477041394f3SDevin Teske.Pc
478041394f3SDevin Teskeand
479041394f3SDevin Teske.Ql Fl -backtitle Ar backtitle
480041394f3SDevin Teske.Po
481041394f3SDevin Teskesee above
482041394f3SDevin Teske.Ql Va backtitle
483041394f3SDevin Teskemember of
484041394f3SDevin Teske.Va struct dpv_config
485041394f3SDevin Teske.Pc ,
486041394f3SDevin Teskedisplays the backtitle in place of the title and vice-versa.
487041394f3SDevin Teske.Pp
488041394f3SDevin Teske.Xr Xdialog 1
489041394f3SDevin Teskedoes not wrap long prompt texts received after initial launch.
490041394f3SDevin TeskeThis is a known issue with the
491041394f3SDevin Teske.Ql --gauge
492041394f3SDevin Teskewidget in
493041394f3SDevin Teske.Xr Xdialog 1 .
494*19be69c5SDevin TeskeEmbed escaped newlines within prompt text to force line breaks.
495041394f3SDevin Teske.Pp
496041394f3SDevin Teske.Xr dialog 1
497041394f3SDevin Teskedoes not display the first character after a series of escaped escape-sequences
498*19be69c5SDevin Teske(for example, ``\\\\n'' produces ``\\'' instead of ``\\n'').
499041394f3SDevin TeskeThis is a known issue with
500041394f3SDevin Teske.Xr dialog 1
501041394f3SDevin Teskeand does not affect
502041394f3SDevin Teske.Xr dialog 3
503041394f3SDevin Teskeor
504041394f3SDevin Teske.Xr Xdialog 1 .
505041394f3SDevin Teske.Pp
506*19be69c5SDevin TeskeIf an application ignores
507041394f3SDevin Teske.Ev USE_COLOR
508041394f3SDevin Teskewhen set and NULL before calling
509*19be69c5SDevin Teske.Fn dpv
510041394f3SDevin Teskewith color escape sequences anyway,
511041394f3SDevin Teske.Xr dialog 3
512041394f3SDevin Teskeand
513041394f3SDevin Teske.Xr dialog 1
514041394f3SDevin Teskemay not render properly.
515041394f3SDevin TeskeWorkaround is to detect when
516041394f3SDevin Teske.Ev USE_COLOR
517041394f3SDevin Teskeis set and NULL and either not use color escape sequences at that time or use
518041394f3SDevin Teske.Xr unsetenv 3
519041394f3SDevin Tesketo unset
520041394f3SDevin Teske.Ev USE_COLOR ,
521041394f3SDevin Teskeforcing interpretation of color sequences.
522041394f3SDevin TeskeThis does not effect
523041394f3SDevin Teske.Xr Xdialog 1 ,
524041394f3SDevin Teskewhich renders the color escape sequences as plain text.
525041394f3SDevin TeskeSee
526d4d112e3SJoel Dahl.Do
527041394f3SDevin Teskeembedded "\\Z" sequences
528041394f3SDevin Teske.Dc
529041394f3SDevin Teskein
530041394f3SDevin Teske.Xr dialog 1
531041394f3SDevin Teskefor additional information.
532