Cleanup init.

This commit is contained in:
Jari Vetoniemi 2014-10-25 22:16:09 +03:00
parent 2294ff46e5
commit 660f832fad

View File

@ -43,9 +43,13 @@ load(const char *file, struct bm_renderer *renderer)
if (strcmp(renderer->api.version, BM_PLUGIN_VERSION)) if (strcmp(renderer->api.version, BM_PLUGIN_VERSION))
goto mismatch_fail; goto mismatch_fail;
if (!renderer->name)
renderer->name = bm_strdup(name);
if (!renderer->file)
renderer->file = bm_strdup(file);
renderer->handle = handle; renderer->handle = handle;
renderer->name = bm_strdup(name);
renderer->file = bm_strdup(file);
return true; return true;
load_fail: load_fail:
@ -77,6 +81,7 @@ load_to_list(const char *file)
goto fail; goto fail;
chckDlUnload(renderer->handle); chckDlUnload(renderer->handle);
renderer->handle = NULL;
if (!list_add_item(&renderers, renderer)) if (!list_add_item(&renderers, renderer))
goto fail; goto fail;
@ -114,8 +119,10 @@ fail:
bool bool
bm_init(void) bm_init(void)
{ {
static const char *rpath = INSTALL_PREFIX "/lib/bemenu"; if (renderers.count > 0)
return true;
static const char *rpath = INSTALL_PREFIX "/lib/bemenu";
const char *path = getenv("BEMENU_RENDERER"); const char *path = getenv("BEMENU_RENDERER");
if (path) if (path)
@ -130,7 +137,6 @@ bm_init(void)
if (tinydir_open(&dir, path) == -1) if (tinydir_open(&dir, path) == -1)
goto fail; goto fail;
size_t registered = 0;
while (dir.has_next) { while (dir.has_next) {
tinydir_file file; tinydir_file file;
memset(&file, 0, sizeof(file)); memset(&file, 0, sizeof(file));
@ -139,9 +145,7 @@ bm_init(void)
if (!file.is_dir && !strncmp(file.name, "bemenu-renderer-", strlen("bemenu-renderer-"))) { if (!file.is_dir && !strncmp(file.name, "bemenu-renderer-", strlen("bemenu-renderer-"))) {
char *fpath; char *fpath;
if ((fpath = bm_dprintf("%s/%s", path, file.name))) { if ((fpath = bm_dprintf("%s/%s", path, file.name))) {
if (load_to_list(fpath)) load_to_list(fpath);
registered++;
free(fpath); free(fpath);
} }
} }
@ -150,7 +154,7 @@ bm_init(void)
} }
tinydir_close(&dir); tinydir_close(&dir);
return (registered > 0 ? true : false); return (renderers.count > 0 ? true : false);
fail: fail:
return false; return false;