1*6822f9c8Santon /* $OpenBSD: foo.c,v 1.4 2024/08/23 12:56:26 anton Exp $ */ 220dfae25Smatthieu /* Public domain. 2008, Matthieu Herrb */ 320dfae25Smatthieu 420dfae25Smatthieu #include <dlfcn.h> 520dfae25Smatthieu #include <stdio.h> 69ae1fb7fSjsg #include <err.h> 720dfae25Smatthieu 820dfae25Smatthieu static void *h = NULL; 920dfae25Smatthieu 1059f68d03Sbluhm extern int bar(void); 1159f68d03Sbluhm 1220dfae25Smatthieu void foo_init(void)1320dfae25Smatthieufoo_init(void) 1420dfae25Smatthieu { 1520dfae25Smatthieu printf("loading %s\n", BAR); 1620dfae25Smatthieu h = dlopen(BAR, RTLD_LAZY|RTLD_GLOBAL); 1720dfae25Smatthieu if (h == NULL) 18*6822f9c8Santon errx(1, "dlopen %s: %s", BAR, dlerror()); 1920dfae25Smatthieu printf("loaded: %s\n", BAR); 2020dfae25Smatthieu } 2120dfae25Smatthieu 2220dfae25Smatthieu int foo(void)2320dfae25Smatthieufoo(void) 2420dfae25Smatthieu { 2520dfae25Smatthieu if (h == NULL) 2620dfae25Smatthieu foo_init(); 2720dfae25Smatthieu 2820dfae25Smatthieu return bar(); 2920dfae25Smatthieu } 30