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 Paulohas_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 Paulohas_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 Paulohas_villain(zelda_info_t *z) 458e648814SRui Paulo { 468e648814SRui Paulo return (z->zi_villain); 478e648814SRui Paulo } 488e648814SRui Paulo 498e648814SRui Paulo int main(void)508e648814SRui Paulomain(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(<tp); 758e648814SRui Paulo sleep(1); 768e648814SRui Paulo } 778e648814SRui Paulo 788e648814SRui Paulo return (0); 798e648814SRui Paulo } 80