1 /*
2 * This file and its contents are supplied under the terms of the
3 * Common Development and Distribution License ("CDDL"), version 1.0.
4 * You may only use this file in accordance with the terms of version
5 * 1.0 of the CDDL.
6 *
7 * A full copy of the text of the CDDL should have accompanied this
8 * source. A copy of the CDDL is also available via the Internet at
9 * http://www.illumos.org/license/CDDL.
10 */
11
12 /*
13 * Copyright 2025 Oxide Computer Company
14 */
15
16 /*
17 * Use libzoneinfo to print a list of timezones for additional inspection. This
18 * is paired with some of the DTrace script wrappers.
19 */
20
21 #include <stdio.h>
22 #include <err.h>
23 #include <libzoneinfo.h>
24 #include <stdlib.h>
25 #include <sys/debug.h>
26
27 int
main(void)28 main(void)
29 {
30 struct tz_continent *conts;
31
32 if (get_tz_continents(&conts) < 0) {
33 err(EXIT_FAILURE, "failed to get continent list");
34 }
35
36 for (struct tz_continent *ctnt = conts; ctnt != NULL;
37 ctnt = ctnt->ctnt_next) {
38 struct tz_country *countries;
39
40 if (get_tz_countries(&countries, ctnt) < 0) {
41 err(EXIT_FAILURE, "failed to get countries for %s",
42 ctnt->ctnt_name);
43 }
44
45 for (struct tz_country *ctry = countries; ctry != NULL;
46 ctry = ctry->ctry_next) {
47 struct tz_timezone *zones;
48
49 if (get_timezones_by_country(&zones, ctry) < 0) {
50 err(EXIT_FAILURE, "failed to get timezones for "
51 "%s/%s", ctnt->ctnt_name, ctry->ctry_code);
52 }
53
54 for (struct tz_timezone *tz = zones; tz != NULL;
55 tz = tz->tz_next) {
56 (void) printf("%s\n", tz->tz_name);
57 }
58
59 VERIFY0(free_timezones(zones));
60 }
61
62 VERIFY0(free_tz_countries(countries));
63 }
64
65 VERIFY0(free_tz_continents(conts));
66 return (0);
67 }
68