diff --git a/meson.build b/meson.build index 965c48258c6ace6ed6fb4c5543bc2576477c3a2c..7a1ea671d22e459994ebe782e6dd2e727de9442c 100644 --- a/meson.build +++ b/meson.build @@ -62,7 +62,7 @@ core_sources = [ 'src/mkv/write.c' , 'src/net/command.c' , 'src/net/listen.c' , 'src/net/message.c' - , 'src/net/downloader.c' + , 'src/module/repo.c' , 'src/config.c' , 'src/uri.c' , 'src/thread.c' diff --git a/src/config.c b/src/config.c index 7fd842ed029fc4f5b8416fff4f72962d1ccb3fe0..f22b715677ae69231627144f4af144c635ef4347 100644 --- a/src/config.c +++ b/src/config.c @@ -127,12 +127,14 @@ load_so(const char *const mod_path, const char *const mod_init, void *mod, struc *(void **) (&module_set_function) = reg_pick(mod_path, &handle, mod_init); if (module_set_function) - return ! module_set_function(mod, srv, handle); - else + return module_set_function(mod, srv, handle); + else { + LOG_ERROR_SCT("LOAD", "Failed to find init symbol %s", mod_init); return 1; + } } -inline int +int load_module_by_name(struct lkt_state *srv, const char *name, void *mod) { char mod_path[PATH_MAX], mod_load[INI_MAX_LINE_LEN]; diff --git a/src/module/module_sdl2.c b/src/module/module_sdl2.c index 885229bc46299e92f992442fe6676f8b34c741cd..1f1001ad20bc3f25c9da510eaf786f28c2cb1651 100644 --- a/src/module/module_sdl2.c +++ b/src/module/module_sdl2.c @@ -260,7 +260,7 @@ module_set_function(void *arg__, struct lkt_state *srv, void *handle__) { RETURN_UNLESS(arg__ && handle__, "Invalid argument", 1); struct lkt_win *win = (struct lkt_win *) arg__; - win->srv = srv; + win->srv = srv; win->new = module_sdl2_new; win->close = module_sdl2_close; @@ -274,7 +274,7 @@ module_set_function(void *arg__, struct lkt_state *srv, void *handle__) win->attach = module_sdl2_attach; win->handle = handle__; - return 0; + return !module_sdl2_new(&srv->win); } bool diff --git a/src/module/module_x11.c b/src/module/module_x11.c index c6db99e04a0be31e57f98fb9dc0b760db98774c8..d0fc16d5eef5a311a0f161e4ecd16d4a044c8344 100644 --- a/src/module/module_x11.c +++ b/src/module/module_x11.c @@ -47,7 +47,7 @@ module_set_function(void *arg__, struct lkt_state *srv, void *handle__) { RETURN_UNLESS(arg__ && handle__, "Invalid arguments", 1); struct lkt_win *win = (struct lkt_win *) arg__; - win->srv = srv; + win->srv = srv; win->new = module_x11_new; win->close = module_x11_close; @@ -61,7 +61,7 @@ module_set_function(void *arg__, struct lkt_state *srv, void *handle__) win->attach = module_x11_attach; win->handle = handle__; - return 0; + return !module_x11_new(&srv->win); } /* diff --git a/src/net/downloader.c b/src/module/repo.c similarity index 99% rename from src/net/downloader.c rename to src/module/repo.c index 37ec6716755ec1992c9a889b6f323e1d90b21896..48e240df5447cb0481d3a54e8bf07895ca685419 100644 --- a/src/net/downloader.c +++ b/src/module/repo.c @@ -90,7 +90,8 @@ repo_new(struct lkt_repo *const repo_, struct lkt_state *srv) int load_repo_https(void *mod, struct lkt_state *srv, void *handle) { - RETURN_UNLESS(mod && handle, "Invalid argument", 1); + UNUSED(handle); + RETURN_UNLESS(mod, "Invalid argument", 1); struct lkt_repo *repo = mod; return repo_new(repo, srv); } diff --git a/src/net/listen.c b/src/net/listen.c index 0e6a55c93a74826e3d9128bc76997299c92b98b0..a0ab1f1f0e7c96de18db6e17d5377f388d5523bf 100644 --- a/src/net/listen.c +++ b/src/net/listen.c @@ -701,7 +701,7 @@ lkt_listen(void) char *const kara_dir = memory + PATH_MAX + 1; /* Size is PATH_MAX. */ char *const host = kara_dir + PATH_MAX + 1; /* Size is HOST_NAME_MAX. */ char port[7]; /* Maximal port number is 65535, +2 for '\n' and '\0' */ - char player_mod[INI_MAX_LINE_LEN]; + char mod[INI_MAX_LINE_LEN]; char conf_file[PATH_MAX]; memset(&srv, 0, sizeof(struct lkt_state)); @@ -715,11 +715,11 @@ lkt_listen(void) RETURN_UNLESS(database_open(srv.db, db_path), "Can't open database", 1); /* Read the configuration. */ - RETURN_UNLESS(database_config_get_int (srv.db, "player", "autoclear", &autoclear), "Cfg error", 2); - RETURN_UNLESS(database_config_get_text(srv.db, "database", "kara_dir", kara_dir, PATH_MAX), "Cfg error", 2); - RETURN_UNLESS(database_config_get_text(srv.db, "server", "host", host, HOST_NAME_MAX), "Cfg error", 2); - RETURN_UNLESS(database_config_get_text(srv.db, "server", "port", port, 5), "Cfg error", 2); - RETURN_UNLESS(database_config_get_text(srv.db, "player", "module", player_mod, INI_MAX_LINE_LEN), "Cfg error", 2); + RETURN_UNLESS(database_config_get_int (srv.db, "player", "autoclear", &autoclear), "Cfg error", 2); + RETURN_UNLESS(database_config_get_text(srv.db, "database", "kara_dir", kara_dir, PATH_MAX), "Cfg error", 2); + RETURN_UNLESS(database_config_get_text(srv.db, "server", "host", host, HOST_NAME_MAX), "Cfg error", 2); + RETURN_UNLESS(database_config_get_text(srv.db, "server", "port", port, 5), "Cfg error", 2); + RETURN_UNLESS(database_config_get_text(srv.db, "player", "module", mod, INI_MAX_LINE_LEN), "Cfg error", 2); if (kara_dir[strlen(kara_dir) - 1] != '/') strncat(kara_dir, "/", PATH_MAX - 1); @@ -741,10 +741,8 @@ lkt_listen(void) if (autoclear) database_queue_clear(srv.db); - RETURN_IF (repo_new(&srv.repo, &srv), "Failed to create repo", 4); - RETURN_UNLESS(load_module_by_name(&srv, player_mod, &srv.win), "Can't load module", 3); - RETURN_UNLESS(srv.win.new(&srv.win), "Can't create window", 3); - srv.win.attach(&srv.win, &srv); + RETURN_IF(load_module_by_name(&srv, mod, &srv.win), "Can't load module player", 3); + RETURN_IF(load_module_by_name(&srv, "repo", &srv.repo), "Can't load module repo", 3); for (;;) { if (handle_network_events(&srv) < 0)