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