8 static void *load_plugin(const char *name)
10 size_t len = strlen(name);
11 char filename[1 + 1 + 7 + 1 + len + 1 + len + 1 + 2 + 1];
12 sprintf(filename, "./plugins/%s/%s.so", name, name);
14 void *plugin_handle = dlmopen(LM_ID_BASE, filename, RTLD_NOW | RTLD_GLOBAL);
16 if (! plugin_handle) {
17 printf("%s\n", dlerror());
26 void *main_plugin = load_plugin("game");
28 DIR *dir = opendir("plugins");
33 while (dp = readdir(dir)) {
34 if (dp->d_name[0] != '.' && strcmp(dp->d_name, "game") != 0) {
35 load_plugin(dp->d_name);
41 void (*game_func)() = dlsym(main_plugin, "game");