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 2013 (c) Joyent, Inc. All rights reserved.
14 */
15
16/*
17 * This test takes data from the current binary which is basically running in a
18 * loop between two functions and our goal is to have two unique types that they
19 * contain which we can print.
20 */
21
22#include <unistd.h>
23
24typedef struct zelda_info {
25	char	*zi_gamename;
26	int	zi_ndungeons;
27	char	*zi_villain;
28	int	zi_haszelda;
29} zelda_info_t;
30
31static int
32has_princess(zelda_info_t *z)
33{
34	return (z->zi_haszelda);
35}
36
37static int
38has_dungeons(zelda_info_t *z)
39{
40	return (z->zi_ndungeons != 0);
41}
42
43static const char *
44has_villain(zelda_info_t *z)
45{
46	return (z->zi_villain);
47}
48
49int
50main(void)
51{
52	zelda_info_t oot;
53	zelda_info_t la;
54	zelda_info_t lttp;
55
56	oot.zi_gamename = "Ocarina of Time";
57	oot.zi_ndungeons = 10;
58	oot.zi_villain = "Ganondorf";
59	oot.zi_haszelda = 1;
60
61	la.zi_gamename = "Link's Awakening";
62	la.zi_ndungeons = 9;
63	la.zi_villain = "Nightmare";
64	la.zi_haszelda = 0;
65
66	lttp.zi_gamename = "A Link to the Past";
67	lttp.zi_ndungeons = 12;
68	lttp.zi_villain = "Ganon";
69	lttp.zi_haszelda = 1;
70
71	for (;;) {
72		(void) has_princess(&oot);
73		(void) has_dungeons(&la);
74		(void) has_villain(&lttp);
75		sleep(1);
76	}
77
78	return (0);
79}
80