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 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 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 }