mirror of
https://github.com/feather-wallet/feather.git
synced 2024-11-01 09:57:46 +00:00
64 lines
1.5 KiB
Diff
64 lines
1.5 KiB
Diff
diff --git a/lib/fuse.c b/lib/fuse.c
|
|
index 2a88918..34a46c3 100644
|
|
--- a/lib/fuse.c
|
|
+++ b/lib/fuse.c
|
|
@@ -242,50 +242,7 @@ static void fuse_unregister_module(struct fuse_module *m)
|
|
|
|
static int fuse_load_so_module(const char *module)
|
|
{
|
|
- int ret = -1;
|
|
- char *tmp;
|
|
- struct fusemod_so *so;
|
|
- fuse_module_factory_t *factory;
|
|
-
|
|
- tmp = malloc(strlen(module) + 64);
|
|
- if (!tmp) {
|
|
- fuse_log(FUSE_LOG_ERR, "fuse: memory allocation failed\n");
|
|
- return -1;
|
|
- }
|
|
- sprintf(tmp, "libfusemod_%s.so", module);
|
|
- so = calloc(1, sizeof(struct fusemod_so));
|
|
- if (!so) {
|
|
- fuse_log(FUSE_LOG_ERR, "fuse: failed to allocate module so\n");
|
|
- goto out;
|
|
- }
|
|
-
|
|
- so->handle = dlopen(tmp, RTLD_NOW);
|
|
- if (so->handle == NULL) {
|
|
- fuse_log(FUSE_LOG_ERR, "fuse: dlopen(%s) failed: %s\n",
|
|
- tmp, dlerror());
|
|
- goto out_free_so;
|
|
- }
|
|
-
|
|
- sprintf(tmp, "fuse_module_%s_factory", module);
|
|
- factory = (fuse_module_factory_t*)dlsym(so->handle, tmp);
|
|
- if (factory == NULL) {
|
|
- fuse_log(FUSE_LOG_ERR, "fuse: symbol <%s> not found in module: %s\n",
|
|
- tmp, dlerror());
|
|
- goto out_dlclose;
|
|
- }
|
|
- ret = fuse_register_module(module, *factory, so);
|
|
- if (ret)
|
|
- goto out_dlclose;
|
|
-
|
|
-out:
|
|
- free(tmp);
|
|
- return ret;
|
|
-
|
|
-out_dlclose:
|
|
- dlclose(so->handle);
|
|
-out_free_so:
|
|
- free(so);
|
|
- goto out;
|
|
+ return -1;
|
|
}
|
|
|
|
static struct fuse_module *fuse_find_module(const char *module)
|
|
@@ -335,7 +292,6 @@ static void fuse_put_module(struct fuse_module *m)
|
|
else
|
|
mp = &(*mp)->next;
|
|
}
|
|
- dlclose(so->handle);
|
|
free(so);
|
|
}
|
|
} else if (!m->ctr) {
|