diff options
Diffstat (limited to 'reader.c')
-rw-r--r-- | reader.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/reader.c b/reader.c new file mode 100644 index 0000000..1186800 --- /dev/null +++ b/reader.c @@ -0,0 +1,36 @@ +#include <stdio.h> +#include <limits.h> +#include <dlfcn.h> + +#include "reader.h" +#include "config.h" + +#define MAX_PLUGIN_PATH NAME_MAX +void* reader_module = NULL; + +int reader_init(){ + char plugin[MAX_PLUGIN_PATH] = ""; + char* reader = config_get("nfc", "reader"); + + if(!reader){ + printf("No reader plugin configured\n"); + return -1; + } + + snprintf(plugin, sizeof(plugin), "./reader_%s.so", reader); + reader_module = dlopen(plugin, RTLD_NOW); + + if(!reader_module){ + printf("Failed to load reader plugin %s\n", plugin); + return -1; + } + + return 0; +} + +void reader_free(){ + if(reader_module){ + dlclose(reader_module); + reader_module = NULL; + } +} |