1*61ba55bcSBaptiste Daroussin /*-
2*61ba55bcSBaptiste Daroussin  * SPDX-License-Identifier: CC0-1.0
3*61ba55bcSBaptiste Daroussin  *
4*61ba55bcSBaptiste Daroussin  * Written in 2023 by Alfonso Sabato Siciliano.
5*61ba55bcSBaptiste Daroussin  * To the extent possible under law, the author has dedicated all copyright
6*61ba55bcSBaptiste Daroussin  * and related and neighboring rights to this software to the public domain
7*61ba55bcSBaptiste Daroussin  * worldwide. This software is distributed without any warranty, see:
8*61ba55bcSBaptiste Daroussin  *   <http://creativecommons.org/publicdomain/zero/1.0/>.
9*61ba55bcSBaptiste Daroussin  */
10*61ba55bcSBaptiste Daroussin 
11*61ba55bcSBaptiste Daroussin #include <bsddialog.h>
12*61ba55bcSBaptiste Daroussin #include <stdio.h>
13*61ba55bcSBaptiste Daroussin #include <stdlib.h>
14*61ba55bcSBaptiste Daroussin #include <unistd.h>
15*61ba55bcSBaptiste Daroussin 
sender(int fd)16*61ba55bcSBaptiste Daroussin static void sender(int fd)
17*61ba55bcSBaptiste Daroussin {
18*61ba55bcSBaptiste Daroussin 	int i;
19*61ba55bcSBaptiste Daroussin 
20*61ba55bcSBaptiste Daroussin 	for (i = 1; i <= 10; i++) {
21*61ba55bcSBaptiste Daroussin 		sleep(1);
22*61ba55bcSBaptiste Daroussin 		dprintf(fd, "SEP\n");
23*61ba55bcSBaptiste Daroussin 		dprintf(fd, "%d\n", i * 10);
24*61ba55bcSBaptiste Daroussin 		dprintf(fd, "In Progress... [%d / 10]\n", i);
25*61ba55bcSBaptiste Daroussin 		dprintf(fd, "SEP\n");
26*61ba55bcSBaptiste Daroussin 	}
27*61ba55bcSBaptiste Daroussin 	sleep(1);
28*61ba55bcSBaptiste Daroussin 	dprintf(fd, "EOF\n");
29*61ba55bcSBaptiste Daroussin }
30*61ba55bcSBaptiste Daroussin 
main()31*61ba55bcSBaptiste Daroussin int main()
32*61ba55bcSBaptiste Daroussin {
33*61ba55bcSBaptiste Daroussin 	int rv, fd[2];
34*61ba55bcSBaptiste Daroussin 	struct bsddialog_conf conf;
35*61ba55bcSBaptiste Daroussin 
36*61ba55bcSBaptiste Daroussin 	/* add checks and sync */
37*61ba55bcSBaptiste Daroussin 	pipe(fd);
38*61ba55bcSBaptiste Daroussin 	if (fork() == 0) {
39*61ba55bcSBaptiste Daroussin 		close(fd[0]);
40*61ba55bcSBaptiste Daroussin 		sender(fd[1]);
41*61ba55bcSBaptiste Daroussin 		exit (0);
42*61ba55bcSBaptiste Daroussin 	}
43*61ba55bcSBaptiste Daroussin 	close(fd[1]);
44*61ba55bcSBaptiste Daroussin 
45*61ba55bcSBaptiste Daroussin 	if (bsddialog_init() == BSDDIALOG_ERROR) {
46*61ba55bcSBaptiste Daroussin 		printf("Error: %s\n", bsddialog_geterror());
47*61ba55bcSBaptiste Daroussin 		return (1);
48*61ba55bcSBaptiste Daroussin 	}
49*61ba55bcSBaptiste Daroussin 	bsddialog_initconf(&conf);
50*61ba55bcSBaptiste Daroussin 	conf.title = "gauge";
51*61ba55bcSBaptiste Daroussin 	rv = bsddialog_gauge(&conf, "Example", 7, 30, 0, fd[0], "SEP", "EOF");
52*61ba55bcSBaptiste Daroussin 	bsddialog_end();
53*61ba55bcSBaptiste Daroussin 	if(rv == BSDDIALOG_ERROR)
54*61ba55bcSBaptiste Daroussin 		printf("Error: %s\n", bsddialog_geterror());
55*61ba55bcSBaptiste Daroussin 
56*61ba55bcSBaptiste Daroussin 	return (0);
57*61ba55bcSBaptiste Daroussin }