aboutsummaryrefslogtreecommitdiff
path: root/src/harness/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/harness/main.c')
-rw-r--r--src/harness/main.c13
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();
}