xref: /freebsd-src/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/tst.chasestrings.c (revision c6989859ae9388eeb46a24fe88f9b8d07101c710)
18e648814SRui Paulo /*
28e648814SRui Paulo  * This file and its contents are supplied under the terms of the
38e648814SRui Paulo  * Common Development and Distribution License ("CDDL"), version 1.0.
48e648814SRui Paulo  * You may only use this file in accordance with the terms of version
58e648814SRui Paulo  * 1.0 of the CDDL.
68e648814SRui Paulo  *
78e648814SRui Paulo  * A full copy of the text of the CDDL should have accompanied this
88e648814SRui Paulo  * source.  A copy of the CDDL is also available via the Internet at
98e648814SRui Paulo  * http://www.illumos.org/license/CDDL.
108e648814SRui Paulo  */
118e648814SRui Paulo 
128e648814SRui Paulo /*
138e648814SRui Paulo  * Copyright 2013 (c) Joyent, Inc. All rights reserved.
148e648814SRui Paulo  */
158e648814SRui Paulo 
168e648814SRui Paulo /*
178e648814SRui Paulo  * This test takes data from the current binary which is basically running in a
188e648814SRui Paulo  * loop between two functions and our goal is to have two unique types that they
198e648814SRui Paulo  * contain which we can print.
208e648814SRui Paulo  */
218e648814SRui Paulo 
228e648814SRui Paulo #include <unistd.h>
238e648814SRui Paulo 
248e648814SRui Paulo typedef struct zelda_info {
25*c6989859SMark Johnston 	const char *zi_gamename;
268e648814SRui Paulo 	int	zi_ndungeons;
27*c6989859SMark Johnston 	const char *zi_villain;
288e648814SRui Paulo 	int	zi_haszelda;
298e648814SRui Paulo } zelda_info_t;
308e648814SRui Paulo 
318e648814SRui Paulo static int
has_princess(zelda_info_t * z)328e648814SRui Paulo has_princess(zelda_info_t *z)
338e648814SRui Paulo {
348e648814SRui Paulo 	return (z->zi_haszelda);
358e648814SRui Paulo }
368e648814SRui Paulo 
378e648814SRui Paulo static int
has_dungeons(zelda_info_t * z)388e648814SRui Paulo has_dungeons(zelda_info_t *z)
398e648814SRui Paulo {
408e648814SRui Paulo 	return (z->zi_ndungeons != 0);
418e648814SRui Paulo }
428e648814SRui Paulo 
438e648814SRui Paulo static const char *
has_villain(zelda_info_t * z)448e648814SRui Paulo has_villain(zelda_info_t *z)
458e648814SRui Paulo {
468e648814SRui Paulo 	return (z->zi_villain);
478e648814SRui Paulo }
488e648814SRui Paulo 
498e648814SRui Paulo int
main(void)508e648814SRui Paulo main(void)
518e648814SRui Paulo {
528e648814SRui Paulo 	zelda_info_t oot;
538e648814SRui Paulo 	zelda_info_t la;
548e648814SRui Paulo 	zelda_info_t lttp;
558e648814SRui Paulo 
568e648814SRui Paulo 	oot.zi_gamename = "Ocarina of Time";
578e648814SRui Paulo 	oot.zi_ndungeons = 10;
588e648814SRui Paulo 	oot.zi_villain = "Ganondorf";
598e648814SRui Paulo 	oot.zi_haszelda = 1;
608e648814SRui Paulo 
618e648814SRui Paulo 	la.zi_gamename = "Link's Awakening";
628e648814SRui Paulo 	la.zi_ndungeons = 9;
638e648814SRui Paulo 	la.zi_villain = "Nightmare";
648e648814SRui Paulo 	la.zi_haszelda = 0;
658e648814SRui Paulo 
668e648814SRui Paulo 	lttp.zi_gamename = "A Link to the Past";
678e648814SRui Paulo 	lttp.zi_ndungeons = 12;
688e648814SRui Paulo 	lttp.zi_villain = "Ganon";
698e648814SRui Paulo 	lttp.zi_haszelda = 1;
708e648814SRui Paulo 
718e648814SRui Paulo 	for (;;) {
728e648814SRui Paulo 		(void) has_princess(&oot);
738e648814SRui Paulo 		(void) has_dungeons(&la);
748e648814SRui Paulo 		(void) has_villain(&lttp);
758e648814SRui Paulo 		sleep(1);
768e648814SRui Paulo 	}
778e648814SRui Paulo 
788e648814SRui Paulo 	return (0);
798e648814SRui Paulo }
80