From d2b18aadb3ed7eb7edf243dce82c8dac58bea2b2 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Thu, 30 Apr 2020 15:43:21 +0200 Subject: [PATCH] WIP: Some small fixes --- meson.build | 10 +++++----- src/database/update.c | 42 ++++++++++++++++++++---------------------- src/mthread/mthread.c | 11 ++++++++--- src/net/downloader.c | 24 ++++++++---------------- 4 files changed, 41 insertions(+), 46 deletions(-) diff --git a/meson.build b/meson.build index 45634813..a66ecdeb 100644 --- a/meson.build +++ b/meson.build @@ -88,7 +88,7 @@ mthread_deps = [ declare_dependency( link_with: static_library( 'mthread' lib = static_library( meson.project_name() , files(core_sources) , include_directories : includes - , dependencies : [ core_deps, libdl, common_deps ] + , dependencies : [ core_deps, libdl, common_deps, mthread_deps ] ) bin_deps = [ declare_dependency( link_with: lib, include_directories: includes) ] @@ -96,7 +96,7 @@ bin_deps = [ declare_dependency( link_with: lib, include_directories: includes) srv = executable( meson.project_name() + 'd' , files('src/main/server.c') , include_directories : includes - , dependencies : [ bin_deps, mthread_deps ] + , dependencies : [ bin_deps ] , install : true ) @@ -104,7 +104,7 @@ srv = executable( meson.project_name() + 'd' metadata = executable( 'lktadm' , files('src/main/lktadm.c', 'src/cmd.c') , include_directories : includes - , dependencies : [ bin_deps, mthread_deps ] + , dependencies : [ bin_deps ] , install : true ) @@ -120,7 +120,7 @@ if dep_x11.found() and dep_mpv.found() lib_mod_x11 = shared_library ( '_module_x11' , files(['src/module/module_x11.c', 'src/module/mpv.c']) , include_directories : includes - , dependencies : [ dep_x11, dep_mpv, mthread_deps ] + , dependencies : [ dep_x11, dep_mpv ] , link_with : lib , install : true , install_dir : 'lib/lektor' @@ -132,7 +132,7 @@ if dep_sdl.found() and dep_mpv.found() lib_mod_sdl = shared_library ( '_module_sdl2' , files(['src/module/module_sdl2.c', 'src/module/mpv.c']) , include_directories : includes - , dependencies : [ dep_sdl, dep_mpv, mthread_deps ] + , dependencies : [ dep_sdl, dep_mpv ] , link_with : lib , install : true , install_dir : 'lib/lektor' diff --git a/src/database/update.c b/src/database/update.c index a3b641a6..2f1f89aa 100644 --- a/src/database/update.c +++ b/src/database/update.c @@ -21,8 +21,7 @@ database_add_kara(sqlite3 *db, const char *filename) "kara (song_name, source_name, category, song_type, language, file_path, is_new, author_name, author_year, song_number)" "SELECT ?, ?, ?, ?, ?, ?, ?, ?, strftime('%s','now'), ?"; sqlite3_stmt *stmt = NULL; - bool status = false; - int code = SQLITE_OK; + int code = SQLITE_OK, status = false; struct kara_metadata data; time_t the_time = time(NULL); struct tm *the_local_time = localtime(&the_time); @@ -37,15 +36,15 @@ database_add_kara(sqlite3 *db, const char *filename) SQLITE_PREPARE(db, stmt, SQL_STMT, error); - if ((sqlite3_bind_text(stmt, 1, data.song_name, -1, 0) != SQLITE_OK) || + if ((sqlite3_bind_text(stmt, 1, data.song_name, -1, 0) != SQLITE_OK) || (sqlite3_bind_text(stmt, 2, data.source_name, -1, 0) != SQLITE_OK) || - (sqlite3_bind_text(stmt, 3, data.category, -1, 0) != SQLITE_OK) || - (sqlite3_bind_text(stmt, 4, data.song_type, -1, 0) != SQLITE_OK) || - (sqlite3_bind_text(stmt, 5, data.language, -1, 0) != SQLITE_OK) || - (sqlite3_bind_text(stmt, 6, filename, -1, 0) != SQLITE_OK) || - (sqlite3_bind_int(stmt, 7, 0) != SQLITE_OK) || + (sqlite3_bind_text(stmt, 3, data.category, -1, 0) != SQLITE_OK) || + (sqlite3_bind_text(stmt, 4, data.song_type, -1, 0) != SQLITE_OK) || + (sqlite3_bind_text(stmt, 5, data.language, -1, 0) != SQLITE_OK) || + (sqlite3_bind_text(stmt, 6, filename, -1, 0) != SQLITE_OK) || + (sqlite3_bind_int (stmt, 7, 0) != SQLITE_OK) || (sqlite3_bind_text(stmt, 8, data.author_name, -1, 0) != SQLITE_OK) || - (sqlite3_bind_int(stmt, 9, data.song_number) != SQLITE_OK) + (sqlite3_bind_int (stmt, 9, data.song_number) != SQLITE_OK) ) { LOG_ERROR_SCT("DB", "Failed to bind for kara %s: %s", filename, sqlite3_errmsg(db)); goto error; @@ -67,8 +66,7 @@ database_update_add(sqlite3 *db, const char *kara_path, struct kara_metadata *md "kara (song_name, source_name, category, song_type, language, file_path, is_new, author_name, author_year, song_number, id, available)" "SELECT ?, ?, ?, ?, ?, ?, ?, ?, strftime('%s','now'), ?, ?, ?"; sqlite3_stmt *stmt = NULL; - int code = SQLITE_OK; - bool ret = false; + int code = SQLITE_OK, ret = false; time_t the_time = time(NULL); struct tm *the_local_time = localtime(&the_time); char year[10]; @@ -79,17 +77,17 @@ database_update_add(sqlite3 *db, const char *kara_path, struct kara_metadata *md SQLITE_PREPARE(db, stmt, SQL_STMT, error); - if ((sqlite3_bind_text(stmt, 1, mdt->song_name, -1, 0) != SQLITE_OK) || - (sqlite3_bind_text(stmt, 2, mdt->source_name, -1, 0) != SQLITE_OK) || - (sqlite3_bind_text(stmt, 3, mdt->category, -1, 0) != SQLITE_OK) || - (sqlite3_bind_text(stmt, 4, mdt->song_type, -1, 0) != SQLITE_OK) || - (sqlite3_bind_text(stmt, 5, mdt->language, -1, 0) != SQLITE_OK) || - (sqlite3_bind_text(stmt, 6, kara_path, -1, 0) != SQLITE_OK) || - (sqlite3_bind_int(stmt, 7, 0) != SQLITE_OK) /* TODO */ || /* No new kara added (TODO). */ - (sqlite3_bind_text(stmt, 8, mdt->author_name, -1, 0) != SQLITE_OK) || - (sqlite3_bind_int(stmt, 9, mdt->song_number) != SQLITE_OK) || - (sqlite3_bind_int(stmt, 10, id) != SQLITE_OK) || - (sqlite3_bind_int(stmt, 11, avail) != SQLITE_OK) + if ((sqlite3_bind_text(stmt, 1, mdt->song_name, -1, 0) != SQLITE_OK) || + (sqlite3_bind_text(stmt, 2, mdt->source_name, -1, 0) != SQLITE_OK) || + (sqlite3_bind_text(stmt, 3, mdt->category, -1, 0) != SQLITE_OK) || + (sqlite3_bind_text(stmt, 4, mdt->song_type, -1, 0) != SQLITE_OK) || + (sqlite3_bind_text(stmt, 5, mdt->language, -1, 0) != SQLITE_OK) || + (sqlite3_bind_text(stmt, 6, kara_path, -1, 0) != SQLITE_OK) || + (sqlite3_bind_int (stmt, 7, 0) != SQLITE_OK) /* TODO */ || /* No new kara added (TODO). */ + (sqlite3_bind_text(stmt, 8, mdt->author_name, -1, 0) != SQLITE_OK) || + (sqlite3_bind_int (stmt, 9, mdt->song_number) != SQLITE_OK) || + (sqlite3_bind_int (stmt, 10, id) != SQLITE_OK) || + (sqlite3_bind_int (stmt, 11, avail) != SQLITE_OK) ) { LOG_ERROR_SCT("DB", "Failed to bind argument for kara %s: %s", kara_path, sqlite3_errmsg(db)); goto error; diff --git a/src/mthread/mthread.c b/src/mthread/mthread.c index 560a0fc3..561a779a 100644 --- a/src/mthread/mthread.c +++ b/src/mthread/mthread.c @@ -20,6 +20,11 @@ __mthread_clear_keys(mthread_t *thread) unsigned int i; struct keys_list *keys = &(*thread)->keys; + if (!keys) { + keys->first_avail = 0; + return; + } + for (i = 0; i < keys->first_avail; ++i) mthread_key_delete(keys->list[i]); @@ -260,8 +265,6 @@ mthread_start_thread(void *arg) if (mctx->detached) { LOG_INFO_SCT("THREAD", "Thread %p (vp: %d) was detached, join it", arg, vp->rank); mthread_join(mctx, NULL); - if (mctx->detached == DETACHED_FREE) - free(mctx); } vp = mthread_get_vp(); __mthread_yield(vp); @@ -320,7 +323,9 @@ mthread_create(mthread_t *__threadp, const mthread_attr_t __attr, void *(*__star mctx->__start_routine = __start_routine; mthread_mctx_set(mctx, mthread_start_thread, stack, MTHREAD_DEFAULT_STACK, mctx); mthread_insert_last(mctx, &(vp->ready_list)); - *__threadp = mctx; + + if (__threadp) + *__threadp = mctx; return 0; } diff --git a/src/net/downloader.c b/src/net/downloader.c index 9ac71ea2..8b02cda6 100644 --- a/src/net/downloader.c +++ b/src/net/downloader.c @@ -108,7 +108,6 @@ safe_json_get_int32(struct json_object *json, const char *key, int32_t *ret) RETURN_UNLESS(json_object_object_get_ex(json, key, &field), "Key not found", 1); errno = 0; *ret = json_object_get_int(field); - RETURN_IF(errno = EINVAL, "Invalid 32bit integer", 1); RETURN_IF(*ret == INT32_MAX || *ret == INT32_MIN, "Out of bound 32bit integer", 1); return 0; } @@ -332,13 +331,7 @@ repo_download_id_async(struct lkt_repo *const repo, const size_t id) kara->id = id; /* Thread */ - mthread_t *th = calloc(1, sizeof(mthread_t)); - if (!th) { - free(arg); - LOG_ERROR_SCT("REPO", "%s", "Out of memory"); - return 1; - } - return mthread_create(th, ATTR_DETACHED_FREE, __repo_download_id_async, arg); + return mthread_create(NULL, ATTR_DETACHED, __repo_download_id_async, arg); } /* Get all the kara, make them unavailable */ @@ -353,6 +346,7 @@ __handle_got_json(volatile sqlite3 *db, struct lkt_repo *repo, struct json_objec int err; RETURN_UNLESS(len > 0 && json_object_get_array(json), "Json invalid or array empty", NOTHING); + LOG_INFO_SCT("REPO", "Starting to process json for repo %s", repo->name); for (i = 0; i < len; ++i) { kara_json = json_object_array_get_idx(json, i); kara = calloc(1, sizeof(struct kara)); @@ -370,7 +364,7 @@ __handle_got_json(volatile sqlite3 *db, struct lkt_repo *repo, struct json_objec strncat(kara->filename, "/", PATH_MAX - 1); kara->filename[++kara_dir_len] = 0; } - integer = snprintf(kara->filename + kara_dir_len, PATH_MAX - kara_dir_len, "%d", integer); + snprintf(kara->filename + kara_dir_len, PATH_MAX - kara_dir_len, "%d.mkv", integer); kara->filename[PATH_MAX - 1] = 0; LOG_INFO("Crafted filename is '%s'", kara->filename); @@ -387,7 +381,7 @@ __handle_got_json(volatile sqlite3 *db, struct lkt_repo *repo, struct json_objec if (database_update_add((sqlite3 *) db, kara->filename, &kara->mdt, kara->id, false)) LOG_ERROR_SCT("REPO", "Could not add unavailable kara %ld to db", kara->id); - goto err; + LOG_INFO_SCT("REPO", "Added kara %ld from repo %s, filepath is %s", kara->id, repo->name, kara->filename); } err: @@ -399,8 +393,11 @@ __repo_get_all_id_async(void *arg) { struct json_object *json; struct lkt_repo *const repo = arg; + LOG_INFO_SCT("REPO", "Download kara list from %s (%s), directory is %s", + repo->name, repo->base_url, repo->kara_dir); repo_get_alljson_sync(repo, &json); __handle_got_json(repo->db, repo, json); + LOG_INFO_SCT("REPO", "%s", "Finished to download and insert kara list"); json_object_put(json); return NULL; } @@ -408,10 +405,5 @@ __repo_get_all_id_async(void *arg) inline int repo_get_allid_async(struct lkt_repo *const repo) { - mthread_t *th = calloc(1, sizeof(mthread_t)); - if (!th) { - LOG_ERROR_SCT("REPO", "%s", "Out of memory"); - return 1; - } - return mthread_create(th, ATTR_DETACHED_FREE, __repo_get_all_id_async, repo); + return mthread_create(NULL, ATTR_DETACHED, __repo_get_all_id_async, repo); } -- GitLab