/*- * SPDX-License-Identifier: CC0-1.0 * * Written in 2023 by Alfonso Sabato Siciliano. * To the extent possible under law, the author has dedicated all copyright * and related and neighboring rights to this software to the public domain * worldwide. This software is distributed without any warranty, see: * . */ #include #include #include #include static void sender(int fd) { int i; for (i = 1; i <= 10; i++) { sleep(1); dprintf(fd, "SEP\n"); dprintf(fd, "%d\n", i * 10); dprintf(fd, "In Progress... [%d / 10]\n", i); dprintf(fd, "SEP\n"); } sleep(1); dprintf(fd, "EOF\n"); } int main() { int rv, fd[2]; struct bsddialog_conf conf; /* add checks and sync */ pipe(fd); if (fork() == 0) { close(fd[0]); sender(fd[1]); exit (0); } close(fd[1]); if (bsddialog_init() == BSDDIALOG_ERROR) { printf("Error: %s\n", bsddialog_geterror()); return (1); } bsddialog_initconf(&conf); conf.title = "gauge"; rv = bsddialog_gauge(&conf, "Example", 7, 30, 0, fd[0], "SEP", "EOF"); bsddialog_end(); if (rv == BSDDIALOG_ERROR) printf("Error: %s\n", bsddialog_geterror()); return (0); }