1e66f31c5Sopenharmony_ci#include <stdio.h>
2e66f31c5Sopenharmony_ci#include <string.h>
3e66f31c5Sopenharmony_ci#include <stdlib.h>
4e66f31c5Sopenharmony_ci
5e66f31c5Sopenharmony_ci#include <uv.h>
6e66f31c5Sopenharmony_ci
7e66f31c5Sopenharmony_ci#include "plugin.h"
8e66f31c5Sopenharmony_ci
9e66f31c5Sopenharmony_citypedef void (*init_plugin_function)();
10e66f31c5Sopenharmony_ci
11e66f31c5Sopenharmony_civoid mfp_register(const char *name) {
12e66f31c5Sopenharmony_ci    fprintf(stderr, "Registered plugin \"%s\"\n", name);
13e66f31c5Sopenharmony_ci}
14e66f31c5Sopenharmony_ci
15e66f31c5Sopenharmony_ciint main(int argc, char **argv) {
16e66f31c5Sopenharmony_ci    if (argc == 1) {
17e66f31c5Sopenharmony_ci        fprintf(stderr, "Usage: %s [plugin1] [plugin2] ...\n", argv[0]);
18e66f31c5Sopenharmony_ci        return 0;
19e66f31c5Sopenharmony_ci    }
20e66f31c5Sopenharmony_ci
21e66f31c5Sopenharmony_ci    uv_lib_t *lib = (uv_lib_t*) malloc(sizeof(uv_lib_t));
22e66f31c5Sopenharmony_ci    while (--argc) {
23e66f31c5Sopenharmony_ci        fprintf(stderr, "Loading %s\n", argv[argc]);
24e66f31c5Sopenharmony_ci        if (uv_dlopen(argv[argc], lib)) {
25e66f31c5Sopenharmony_ci            fprintf(stderr, "Error: %s\n", uv_dlerror(lib));
26e66f31c5Sopenharmony_ci            continue;
27e66f31c5Sopenharmony_ci        }
28e66f31c5Sopenharmony_ci
29e66f31c5Sopenharmony_ci        init_plugin_function init_plugin;
30e66f31c5Sopenharmony_ci        if (uv_dlsym(lib, "initialize", (void **) &init_plugin)) {
31e66f31c5Sopenharmony_ci            fprintf(stderr, "dlsym error: %s\n", uv_dlerror(lib));
32e66f31c5Sopenharmony_ci            continue;
33e66f31c5Sopenharmony_ci        }
34e66f31c5Sopenharmony_ci
35e66f31c5Sopenharmony_ci        init_plugin();
36e66f31c5Sopenharmony_ci    }
37e66f31c5Sopenharmony_ci
38e66f31c5Sopenharmony_ci    return 0;
39e66f31c5Sopenharmony_ci}
40