xref: /freebsd-src/contrib/bsddialog/examples_library/calendar.c (revision 84823cc70824c8d842f503d8c2e6d7b0c2d95b61)
1*84823cc7SAlfonso S. Siciliano /*-
2*84823cc7SAlfonso S. Siciliano  * SPDX-License-Identifier: CC0-1.0
3*84823cc7SAlfonso S. Siciliano  *
4*84823cc7SAlfonso S. Siciliano  * Written in 2022 by Alfonso Sabato Siciliano.
5*84823cc7SAlfonso S. Siciliano  * To the extent possible under law, the author has dedicated all copyright
6*84823cc7SAlfonso S. Siciliano  * and related and neighboring rights to this software to the public domain
7*84823cc7SAlfonso S. Siciliano  * worldwide. This software is distributed without any warranty, see:
8*84823cc7SAlfonso S. Siciliano  *   <http://creativecommons.org/publicdomain/zero/1.0/>.
9*84823cc7SAlfonso S. Siciliano  */
10*84823cc7SAlfonso S. Siciliano 
11*84823cc7SAlfonso S. Siciliano #include <bsddialog.h>
12*84823cc7SAlfonso S. Siciliano #include <stdio.h>
13*84823cc7SAlfonso S. Siciliano #include <string.h>
14*84823cc7SAlfonso S. Siciliano #include <time.h>
15*84823cc7SAlfonso S. Siciliano 
16*84823cc7SAlfonso S. Siciliano int main()
17*84823cc7SAlfonso S. Siciliano {
18*84823cc7SAlfonso S. Siciliano 	int output;
19*84823cc7SAlfonso S. Siciliano 	unsigned int yy, mm, dd;
20*84823cc7SAlfonso S. Siciliano 	struct bsddialog_conf conf;
21*84823cc7SAlfonso S. Siciliano 	time_t cal;
22*84823cc7SAlfonso S. Siciliano 	struct tm *localtm;
23*84823cc7SAlfonso S. Siciliano 
24*84823cc7SAlfonso S. Siciliano 	time(&cal);
25*84823cc7SAlfonso S. Siciliano 	localtm = localtime(&cal);
26*84823cc7SAlfonso S. Siciliano 	yy = localtm->tm_year + 1900;
27*84823cc7SAlfonso S. Siciliano 	mm = localtm->tm_mon + 1;
28*84823cc7SAlfonso S. Siciliano 	dd = localtm->tm_mday;
29*84823cc7SAlfonso S. Siciliano 
30*84823cc7SAlfonso S. Siciliano 	if (bsddialog_init() == BSDDIALOG_ERROR) {
31*84823cc7SAlfonso S. Siciliano 		printf("Error: %s\n", bsddialog_geterror());
32*84823cc7SAlfonso S. Siciliano 		return (1);
33*84823cc7SAlfonso S. Siciliano 	}
34*84823cc7SAlfonso S. Siciliano 
35*84823cc7SAlfonso S. Siciliano 	bsddialog_initconf(&conf);
36*84823cc7SAlfonso S. Siciliano 	conf.title = "calendar";
37*84823cc7SAlfonso S. Siciliano 	output = bsddialog_calendar(&conf, "Example", 18, 40, &yy, &mm, &dd);
38*84823cc7SAlfonso S. Siciliano 
39*84823cc7SAlfonso S. Siciliano 	bsddialog_end();
40*84823cc7SAlfonso S. Siciliano 
41*84823cc7SAlfonso S. Siciliano 	switch (output) {
42*84823cc7SAlfonso S. Siciliano 	case BSDDIALOG_OK:
43*84823cc7SAlfonso S. Siciliano 		printf("Date: %u/%u/%u", yy, mm, dd);
44*84823cc7SAlfonso S. Siciliano 		break;
45*84823cc7SAlfonso S. Siciliano 	case BSDDIALOG_CANCEL:
46*84823cc7SAlfonso S. Siciliano 		printf("Cancel");
47*84823cc7SAlfonso S. Siciliano 		break;
48*84823cc7SAlfonso S. Siciliano 	case BSDDIALOG_ERROR:
49*84823cc7SAlfonso S. Siciliano 		printf("Error: %s", bsddialog_geterror());
50*84823cc7SAlfonso S. Siciliano 		break;
51*84823cc7SAlfonso S. Siciliano 	}
52*84823cc7SAlfonso S. Siciliano 	printf("\n");
53*84823cc7SAlfonso S. Siciliano 
54*84823cc7SAlfonso S. Siciliano 	return (output);
55*84823cc7SAlfonso S. Siciliano }