diff options
Diffstat (limited to 'src/harness/main.c')
-rw-r--r-- | src/harness/main.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/harness/main.c b/src/harness/main.c index 6666e5e..fd70e5f 100644 --- a/src/harness/main.c +++ b/src/harness/main.c @@ -4,6 +4,8 @@ typedef void* dllib_t; +typedef void* opqst_t; + dllib_t open_library(const char* library, int* err) { dllib_t lib = dlopen(library, RTLD_LAZY); @@ -31,18 +33,17 @@ void use_library(int argc, char** argv, dllib_t lib, int* err) { *err = 0; - void (*init)(int* argc, char*** argv) = getsym(lib, "plugin_init", err); + opqst_t (*init)(int* argc, char*** argv) = getsym(lib, "plugin_init", err); void (*teardown)() = getsym(lib, "plugin_teardown", err); - void (*sym)() = getsym(lib, "call_in", err); + opqst_t (*sym)(opqst_t) = getsym(lib, "handle_thing", err); - if (!sym) { - *err = 1; + if (*err) { fprintf(stderr, "Unable to find symbol call_in.\n"); return; } - init(&argc, &argv); - sym(); + opqst_t st = init(&argc, &argv); + st = sym(st); teardown(); } |