diff --git a/inc/lektor/common.h b/inc/lektor/common.h index eb1f91cc1544104be12df5acbb480b111463ab27..d49085cd46c9f0cfa8900f7a84ff58c505769090 100644 --- a/inc/lektor/common.h +++ b/inc/lektor/common.h @@ -50,12 +50,12 @@ extern EXIT_FUNCTION ___not_implemented(const char *func, char *file, int line); #define NOTHING /* Usefull to return nothing in previous macros */ #define STRTOL_ERROR(integer) (errno == ERANGE || (errno != 0 && (integer) == 0)) -#define STRTOL(ret, str, endptr, err_flag) \ - { \ - err_flag = 0; \ - errno = 0; \ - ret = str == NULL ? 0 : strtol(str, &(endptr), 0); \ - err_flag = errno != 0 || endptr == str; \ +#define STRTOL(ret, str, endptr, err_flag) \ + { \ + (err_flag) = 0; \ + errno = 0; \ + (ret) = ((str) == NULL) ? 0 : strtol(str, &(endptr), 0); \ + err_flag = errno != 0 || endptr == str; \ } /* Get a generic function pointer from any function pointer. */ @@ -216,7 +216,7 @@ char *safe_strncpy(char *dest, const char *src, size_t n); #define LKT_ALLOC(___struct___) (___struct___ *)safe_malloc(sizeof(___struct___)) #define LKT_ALLOC_STRUCT(___struct___) LKT_ALLOC(struct ___struct___) #define LKT_ALLOC_ARRAY(___struct___, ___count___) \ - (___struct___ *)safe_malloc(sizeof(___struct___) * (___count___)) + (___struct___ *)safe_malloc(sizeof(___struct___) * (size_t)(___count___)) #define LKT_ALLOC_STRUCT_ARRAY(___struct___, ___count___) \ LKT_ALLOC_ARRAY(struct ___struct___, ___count___) diff --git a/inc/lektor/queue.h b/inc/lektor/queue.h index 9b0729645a3599bad604cc2bad2403a5a1168665..2c2a0715caf537ff7f012bfb59f300ec9409f746 100644 --- a/inc/lektor/queue.h +++ b/inc/lektor/queue.h @@ -159,7 +159,7 @@ lkt_queue_handle(struct queue *queue) lkt_event ret = { 0 }; if (!queue || !queue->last) goto end; - if (!(queue->contents[0].type & (unsigned int) queue->available) && queue->contents[0].type) { + if (!(queue->contents[0].type & (unsigned int)queue->available) && queue->contents[0].type) { LOG_WARN("QUEUE", "Event %d is not available", queue->contents[0].type); goto end; } diff --git a/src/base/cmd.c b/src/base/cmd.c index a481504d4ed051a6494f79ab9a0080109725d7c3..f0799c5003cbcef8e23e588f2ad06c31e80f2fc4 100644 --- a/src/base/cmd.c +++ b/src/base/cmd.c @@ -142,9 +142,11 @@ cmd_parse(struct cmd_opt *opts, int argc, const char **argv) goto not_found; /* This call should exit. */ - struct cmd_args arguments = CMD_ARGS_NEXT_FROM(argc, argv); - call[1](&arguments); - abort(); + { + struct cmd_args arguments = CMD_ARGS_NEXT_FROM(argc, argv); + call[1](&arguments); + abort(); + } not_found: /* The default function */ diff --git a/src/base/commands.c b/src/base/commands.c index 758d52d7b09bd691e4e723281da5249ea288d2d1..1198cc73eab9b7f0ae180ce07ea102db3a821067 100644 --- a/src/base/commands.c +++ b/src/base/commands.c @@ -23,7 +23,7 @@ command_restart(struct lkt_state *srv, size_t c, char UNUSED *__argv[LKT_MESSAGE database_queue_state(srv->db, &sta); env_set(LKT_ENV_RESTART, "1"); - int len = long_length(LONG_MAX); + size_t len = (size_t)long_length(LONG_MAX); if (len > 0) { char *pos = LKT_ALLOC_ARRAY(char, len); safe_snprintf(pos, len, "%d", sta.current); @@ -82,7 +82,7 @@ command_config(struct lkt_state *srv, size_t c, char UNUSED *argv[LKT_MESSAGE_AR struct lkt_message *out; char db_file[LKT_LINE_MAX]; memset(db_file, 0, sizeof(db_file)); - database_config_get(srv->db, "database", "db_path", db_file, LKT_LINE_MAX); + database_config_get_text(srv->db, "database", "db_path", db_file, LKT_LINE_MAX); out = lkt_message_new_fmt("max_clients: %ld\n" "db_file: %s\n" "music_directory: %s\n", @@ -277,7 +277,7 @@ __play_that_file(struct lkt_state *win, int pos) bool command_play(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) { - char *endptr, err; + char *endptr = NULL, err; long pos = 1; struct lkt_queue_state queue_state; @@ -301,7 +301,7 @@ command_play(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) srv->mpd_idle_events |= MPD_IDLE_PLAYER; /* Hooks */ - if (__play_that_file(srv, pos)) { + if (__play_that_file(srv, (int)pos)) { config_handle_hook(srv->db, "queue_begin"); config_handle_hook(srv->db, "kara_load"); return true; @@ -320,8 +320,9 @@ command_dump(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) bool command_playid(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) { - char *endptr, err; + char *endptr = NULL; int pos = 0; + char err; long id; /* Argument handle. */ @@ -373,7 +374,7 @@ command_addid(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) RETURN_UNLESS(args, "Invalid argument", false); bool error = false; FOR_EACH_ARGUMENT (i, args) { - error |= (!database_queue_add_id(srv->db, strtol(args[i], NULL, 0), 1)); + error |= (!database_queue_add_id(srv->db, (int)strtol(args[i], NULL, 0), 1)); } srv->mpd_idle_events |= MPD_IDLE_PLAYLIST; return !error; @@ -440,7 +441,7 @@ command_del(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) false); srv->mpd_idle_events |= MPD_IDLE_PLAYLIST; - return database_queue_del_pos(srv->db, pos); + return database_queue_del_pos(srv->db, (int)pos); } bool @@ -458,14 +459,14 @@ command_delid(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) RETURN_IF(id == (long)uri && !__skip_current(srv), "Failed to skip current kara", false); srv->mpd_idle_events |= MPD_IDLE_PLAYLIST; - return database_queue_del_id(srv->db, id); + return database_queue_del_id(srv->db, (int)id); } bool command_move(struct lkt_state UNUSED *srv, char *args[LKT_MESSAGE_ARGS_MAX]) { long from, to; - char *endptr, err; + char *endptr = NULL, err; RETURN_UNLESS(args && args[0] && args[1], "Invalid argument", false); @@ -478,7 +479,7 @@ command_move(struct lkt_state UNUSED *srv, char *args[LKT_MESSAGE_ARGS_MAX]) RETURN_IF(err, "STRTOL failed", false); srv->mpd_idle_events |= MPD_IDLE_PLAYLIST; - return database_queue_move(srv->db, from, to); + return database_queue_move(srv->db, (int)from, (int)to); } static bool @@ -512,8 +513,8 @@ bool command_swapid(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) { RETURN_UNLESS(args && args[0] && args[1], "Invalid argument", false); - int from = database_queue_probe_id(srv->db, strtol(args[0], NULL, 0)); - int to = database_queue_probe_id(srv->db, strtol(args[1], NULL, 0)); + int from = database_queue_probe_id(srv->db, (int)strtol(args[0], NULL, 0)); + int to = database_queue_probe_id(srv->db, (int)strtol(args[1], NULL, 0)); return __swap_positions(srv, from, to); } @@ -533,7 +534,7 @@ command_swap(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) STRTOL(to, args[1], endptr, err); RETURN_IF(err, "STRTOL failed", false); - return __swap_positions(srv, from, to); + return __swap_positions(srv, (int)from, (int)to); } bool @@ -595,7 +596,7 @@ command_noidle(struct lkt_state *srv, size_t c, char UNUSED *args[LKT_MESSAGE_AR } /* Functions for the searchadd and the search mpd commands */ -bool +PRIVATE_FUNCTION bool lkt_callback_send_row_v1(void *_args, int pos_len, int pos, int id, int id_len, const char *sql_row) { struct lkt_callback *args = (struct lkt_callback *)_args; @@ -605,14 +606,14 @@ lkt_callback_send_row_v1(void *_args, int pos_len, int pos, int id, int id_len, return true; } -bool +PRIVATE_FUNCTION bool lkt_callback_send_row_v2(struct lkt_state *srv, size_t c, int id, int id_len, const char *sql_row) { lkt_state_send(srv, c, lkt_message_new_fmt("%*d %s\n", id_len, id, sql_row)); return true; } -bool +PRIVATE_FUNCTION bool lkt_callback_send_list_plts(struct lkt_state *srv, size_t c, const char *plt_name) { /* If the playlist is named OK or ACK... */ @@ -624,23 +625,25 @@ static bool command_findid(struct lkt_state *srv, size_t c, char *id_str) { uint64_t kara_duration; - struct kara_metadata kara = {}; + struct kara_metadata kara; char filepath[PATH_MAX] = { 0 }; long id = strtol(id_str, NULL, 0); /* XXX: Must be valid here */ int s = 0, h = 0, m = 0; - if (!database_kara_by_id(srv->db, id, &kara, filepath)) { + memset(&kara, 0, sizeof(kara)); + + if (!database_kara_by_id(srv->db, (int)id, &kara, filepath)) { LOG_ERROR("COMMAND", "Can't get a kara with id %ld", id); return false; } - if (!database_get_kara_mtime_id(srv->db, id, &kara_duration)) { + if (!database_get_kara_mtime_id(srv->db, (int)id, &kara_duration)) { LOG_WARN("COMMAND", "Can't get duration for kara %ld", id); kara_duration = 0; } if (kara_duration < (uint64_t)INT_MAX) { - s = kara_duration; + s = (int)kara_duration; h = s / 3600; s = s % 3600; m = s / 60; @@ -665,7 +668,7 @@ command_findid(struct lkt_state *srv, size_t c, char *id_str) static inline bool __iter_search(struct lkt_search *search) { - int count; + size_t count; for (count = 0; database_search_iter(search); ++count) continue; @@ -673,7 +676,7 @@ __iter_search(struct lkt_search *search) struct lkt_state *srv = database_search_get_srv(search); size_t client = database_search_get_client(search); size_t continuation = database_search_get_continuation(search); - lkt_set_continuation(srv, client, continuation + count); + lkt_set_continuation(srv, client, (int)(continuation + count)); } else @@ -686,10 +689,10 @@ bool command_find(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX], long continuation, database_search_init_func init) { - int count; + long count; struct lkt_uri find_uri = { .type = URI_NULL }; struct lkt_search *search = - database_search_new(srv, c, continuation, FUNCTION_POINTER(lkt_callback_send_row_v2)); + database_search_new(srv, c, (int)continuation, FUNCTION_POINTER(lkt_callback_send_row_v2)); database_search_set_uri(search, &find_uri); database_search_set_name(search, args[0]); @@ -743,7 +746,8 @@ command_set_playback_option(struct lkt_state *srv, size_t UNUSED c, LKT_PLAYBACK { RETURN_UNLESS(srv, "Invalid argument", false); long val; - char *endptr, ret = false; + char *endptr = NULL; + char ret = false; if (args == NULL || args[0] == NULL) val = 0; @@ -758,24 +762,23 @@ command_set_playback_option(struct lkt_state *srv, size_t UNUSED c, LKT_PLAYBACK val = 100; } - switch (opt) { - case LKT_PLAYBACK_OPTION_RANDOM: ret = database_config_queue(srv->db, "random", val); break; - - case LKT_PLAYBACK_OPTION_SINGLE: ret = database_config_queue(srv->db, "single", val); break; - - case LKT_PLAYBACK_OPTION_CONSUME: ret = database_config_queue(srv->db, "consume", val); break; + const int val_int = (int)val; - case LKT_PLAYBACK_OPTION_REPEAT: ret = database_config_queue(srv->db, "repeat", val); break; + switch (opt) { + case LKT_PLAYBACK_OPTION_RANDOM: ret = database_config_queue(srv->db, "random", val_int); break; + case LKT_PLAYBACK_OPTION_SINGLE: ret = database_config_queue(srv->db, "single", val_int); break; + case LKT_PLAYBACK_OPTION_CONSUME: ret = database_config_queue(srv->db, "consume", val_int); break; + case LKT_PLAYBACK_OPTION_REPEAT: ret = database_config_queue(srv->db, "repeat", val_int); break; case LKT_PLAYBACK_OPTION_VOLUME: - ret = database_config_queue(srv->db, "volume", val); - LOG_INFO("COMMAND", "Set volume to %ld", val); - ret &= !MOD_CALL(srv->window_mod, "set_volume", val); + ret = database_config_queue(srv->db, "volume", val_int); + LOG_INFO("COMMAND", "Set volume to %ld", val_int); + ret &= !MOD_CALL(srv->window_mod, "set_volume", val_int); srv->mpd_idle_events |= MPD_IDLE_MIXER; break; case LKT_PLAYBACK_OPTION_NONE: - default: break; + break; } if (ret) @@ -799,7 +802,7 @@ command_set_pos(struct lkt_state *srv, int index) bool command_seek(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) { - int pos, seconds, err_flag = 0; + long pos, seconds, err_flag = 0; char *endptr = NULL; RETURN_UNLESS(args && args[0] && args[1], "Invalid arguments", false); @@ -809,7 +812,7 @@ command_seek(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) STRTOL(seconds, args[1], endptr, err_flag); RETURN_IF(err_flag, "Failed to get a number!", false); - RETURN_UNLESS(command_set_pos(srv, pos), "Failed to get to the right file", false); + RETURN_UNLESS(command_set_pos(srv, (int)pos), "Failed to get to the right file", false); srv->mpd_idle_events |= MPD_IDLE_PLAYER; return !MOD_CALL(srv->window_mod, "set_position", seconds); } @@ -817,8 +820,9 @@ command_seek(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) bool command_seekid(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) { - int id, seconds, err_flag = 0, position; + long id, seconds, err_flag = 0; char *endptr = NULL; + int position; RETURN_UNLESS(args && args[0] && args[1], "Invalid arguments", false); STRTOL(id, args[0], endptr, err_flag); @@ -827,12 +831,12 @@ command_seekid(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) STRTOL(seconds, args[1], endptr, err_flag); RETURN_IF(err_flag, "Failed to get a number!", false); - RETURN_UNLESS(database_get_kara_position(srv->db, id, &position), "Can't find kara in queue", + RETURN_UNLESS(database_get_kara_position(srv->db, (int)id, &position), "Can't find kara in queue", false); srv->mpd_idle_events |= MPD_IDLE_PLAYER; - RETURN_UNLESS(command_set_pos(srv, position), "Failed to set position to right kara", false); - return !MOD_CALL(srv->window_mod, "set_position", seconds); + RETURN_UNLESS(command_set_pos(srv, (int)position), "Failed to set position to right kara", false); + return !MOD_CALL(srv->window_mod, "set_position", (int)seconds); } bool diff --git a/src/base/common.c b/src/base/common.c index 30595bb77fdc711c10c0004caecc76fb44728707..45e0a6fcb1471828e4c5e7177fa9fa7a5f8dbf1d 100644 --- a/src/base/common.c +++ b/src/base/common.c @@ -15,12 +15,12 @@ ___lkt_abort(void) /* Assert function */ -static void +PRIVATE_FUNCTION void ___no_assert(const char UNUSED *f, int UNUSED l, const char UNUSED *fn, const char UNUSED *m) { } -EXIT_FUNCTION +PRIVATE_FUNCTION EXIT_FUNCTION ___yes_assert(const char *file, int line, const char *func, const char *msg) { LOG_ERROR("ASSERT", "Assertion failed: %s:%s:%d: %s", file, func, line, msg); @@ -48,7 +48,12 @@ void lkt_set_log_level(LOG_LEVEL lvl) { assert(lvl != ___LAST_UNUSED_LOG_LEVEL); - ___log_level = lvl; + if (lvl <= LOG_LEVEL_ERROR) + ___log_level = LOG_LEVEL_ERROR; + else if (lvl >= LOG_LEVEL_DEBUG) + ___log_level = LOG_LEVEL_DEBUG; + else + ___log_level = lvl; } LOG_LEVEL diff --git a/src/base/config.c b/src/base/config.c index b715c6b1944b564ed98968f8f5e719eea4c76e62..eaa1159c2c04c9b7f5c7fdda83e5e33260435444 100644 --- a/src/base/config.c +++ b/src/base/config.c @@ -58,7 +58,7 @@ __set_log_level(const char *name, const char *level) else if (STR_MATCH(level, "debug")) lkt_set_log_level(LOG_LEVEL_DEBUG); else - lkt_set_log_level(strtol(level, NULL, 0)); + lkt_set_log_level((LOG_LEVEL)(int)strtol(level, NULL, 0)); LOG_INFO("CONFIG", "Log level set to %d", lkt_get_log_level()); } @@ -94,9 +94,9 @@ ini_parse(const char *path, lkt_db *db) end = &start[1 + strcspn(start + 1, "]")]; if (end[0] == ']') { end[0] = '\0'; - len = strlen(&start[1]); + len = (int)strlen(&start[1]); len = MIN(len + 1, LKT_LINE_MAX); - memcpy(section, &start[1], len); + memcpy(section, &start[1], (size_t)len); section[LKT_LINE_MAX - 1] = '\0'; } diff --git a/src/base/json.c b/src/base/json.c index cf69ecd9f96c7d7fb76f12fbfeeab3a4add9105b..700ef60a0a0f9457f2893b254157dcca339625d9 100644 --- a/src/base/json.c +++ b/src/base/json.c @@ -24,7 +24,7 @@ } \ break; \ } \ - len = (end - str); \ + len = (size_t)(end - str); \ is_paren = 1; \ } else \ len = strcspn(str, __JSON_SPACE __JSON_END); \ @@ -53,7 +53,7 @@ } \ break; \ } \ - len = (end - str); \ + len = (size_t)(end - str); \ is_paren = 1; \ } else \ len = strcspn(str, __JSON_SPACE __JSON_BEGIN __JSON_END); \ @@ -121,14 +121,14 @@ __encode_codepoint(char p[4], int32_t codepoint) } if (n == 1) - p[0] = codepoint; + p[0] = (char)codepoint; else { for (i = n - 1; i > 0; i--) { - p[i] = 0x80 | (0x3f & codepoint); + p[i] = (char)(0x80 | (0x3f & codepoint)); codepoint >>= 6; } - p[0] = (0xf00 >> n) | codepoint; + p[0] = (char)((0xf00 >> n) | codepoint); } return n; @@ -169,7 +169,7 @@ __decode_json(char *string, size_t len) } size = 6; /* \u + 4 hex digits */ __hex_val(&offset[2], &codepoint); - written = __encode_codepoint(offset, codepoint); + written = __encode_codepoint(offset, (int32_t)codepoint); break; /* Oups */ @@ -180,7 +180,8 @@ __decode_json(char *string, size_t len) /* Now move the rest of the string of (size - written) characters*/ if (written != size) { - memmove(&offset[written], &offset[size], (string_end - &offset[size]) * sizeof(char)); + memmove(&offset[written], &offset[size], + (size_t)(string_end - &offset[size]) * sizeof(char)); string_end -= (size - written); string_end[0] = '\0'; } @@ -233,7 +234,7 @@ json_parse(const char *str, int asked_level, json_parse_callback call, void *use if (level <= 0) return 0; } - return 1; + LOG_UNREACHABLE; } LKT_POP @@ -270,5 +271,5 @@ json_parse_get_count(const char *str, int asked_level) if (level <= 0) return ret_len; } - return -1; + LOG_UNREACHABLE; } diff --git a/src/base/launch.c b/src/base/launch.c index a83ac4f4f8b9b558a9fd9c87059be3509b41e847..dd34c736079f0293be88ea1c1caa8ea04485a481 100644 --- a/src/base/launch.c +++ b/src/base/launch.c @@ -5,6 +5,7 @@ #include <lektor/common.h> #include <lektor/database.h> #include <lektor/config.h> +#include <lektor/launch.h> #include <wait.h> #include <signal.h> diff --git a/src/base/segv.c b/src/base/segv.c index 9304ef80e89c2c58c7ee94946eec2757e1ab198f..0c1ad1d7b7df9207822140d87e7eac8236b1a18d 100644 --- a/src/base/segv.c +++ b/src/base/segv.c @@ -3,6 +3,7 @@ /* Try to print the backtrace when a segfault occures if possible */ #include <lektor/common.h> +#include <lektor/segv.h> #include <execinfo.h> #include <signal.h> diff --git a/src/base/uri.c b/src/base/uri.c index 1d73bec1ba10e3a73337326bb11d942cbe31774e..2876834d1ac3a6d9005669d4bd3ba9ae181f449d 100644 --- a/src/base/uri.c +++ b/src/base/uri.c @@ -48,7 +48,8 @@ __prefix(char *str, struct lkt_uri *ret) return NULL; /* No place for the '://' separator */ - if (len - (val - str) < 3) + assert((val - str) >= 0); + if (len - (size_t)(val - str) < 3) return NULL; val += 3; @@ -66,7 +67,7 @@ lkt_uri_from_single(struct lkt_uri *ret, char *const str) if (ret->type == URI_ID) { errno = 0; - ret->id = strtol(ret->value, NULL, 0); /* Override */ + ret->id = (size_t)strtol(ret->value, NULL, 0); /* Override */ if (errno != 0) return false; ret->is_int = true; @@ -133,7 +134,10 @@ __lkt_to_str(struct lkt_uri *uri, char *ret, size_t len) case URI_AUTHOR: safe_snprintf(ret, len, "author=%s", (char *)uri->value); break; case URI_CATEGORY: safe_snprintf(ret, len, "cat=%s", (char *)uri->value); break; case URI_QUERY: safe_snprintf(ret, len, "search=%s", (char *)uri->value); break; - default: + + case URI_NULL: + case URI_PLAYLIST: + case URI_LANGUAGE: LOG_WARN("URI", "type %d may not be supported by kurisu, " "generate an error", diff --git a/src/database/cache.c b/src/database/cache.c index 7e06ce51c39f5cbcafe7293688cc72a16e22a35d..f35453f05b8e91b24c51e20e2056ee8e45d17251 100644 --- a/src/database/cache.c +++ b/src/database/cache.c @@ -145,12 +145,12 @@ database_cache_kara(lkt_db *db, int id) sqlite3_stmt *stmt = NULL; \ /* Update the disk cache */ \ SQLITE_PREPARE(db, stmt, "UPDATE kara SET cached_" #what " = ? WHERE id = ?;", error); \ - SQLITE_BIND_INT(db, stmt, 1, (int)what, error); \ + SQLITE_BIND_INT(db, stmt, 1, (int)what, error); \ SQLITE_BIND_INT(db, stmt, 2, id, error); \ SQLITE_STEP_OK(db, stmt, error); \ /* Update the memory cache */ \ SQLITE_PREPARE(db, stmt, "UPDATE kara_cache SET " #what " = ? WHERE kara_id = ?;", error); \ - SQLITE_BIND_INT(db, stmt, 1, (int)what, error); \ + SQLITE_BIND_INT(db, stmt, 1, (int)what, error); \ SQLITE_BIND_INT(db, stmt, 2, id, error); \ SQLITE_STEP_OK(db, stmt, error); \ ret_code = true; \ @@ -170,7 +170,7 @@ database_cache_kara(lkt_db *db, int id) SQLITE_PREPARE(db, stmt, "SELECT " #what " FROM kara_cache WHERE kara_id = ?;", error); \ SQLITE_BIND_INT(db, stmt, 1, id, error); \ SQLITE_STEP_ROW(db, stmt, error); \ - *what = (uint64_t)sqlite3_column_int64(stmt, 0); \ + *what = (uint64_t)sqlite3_column_int64(stmt, 0); \ if ((*what) == 0 && !retry_once) { \ database_cache_kara(db, id); \ retry_once = true; \ diff --git a/src/database/find.c b/src/database/find.c index b4986c76d04413e565514d9eb0ea98ba64b4662b..dc0b1096303fd25faef8e89b9ddff55d069a64df 100644 --- a/src/database/find.c +++ b/src/database/find.c @@ -363,9 +363,9 @@ database_search_iter(struct lkt_search *item) case lkt_search_listplaylist: sql_row = sqlite3_column_chars(item->stmt, 0); /* Name */ return ((lkt_search_listplaylist_func)item->call)(item->srv, item->c, sql_row); - } - LOG_WARN("DB", "Search type %d is not implemented", item->type); goto end; + LOG_WARN("DB", "Search type %d is not implemented", item->type); + goto end; end: database_search_free(item); diff --git a/src/main/luka.c b/src/main/luka.c index 96587164ee4554bf8b9f11ca041ce8f962896895..5e5c994b7bec9e520ef8639337a2a91433bea936 100644 --- a/src/main/luka.c +++ b/src/main/luka.c @@ -67,12 +67,12 @@ ___setup(void) "Can't find a config file, did you run lektord at least once?"); FAIL_IF(config_new(__db, path), "Failed to read the config"); - database_config_get(__db, "database", "db_path", path, PATH_MAX); + database_config_get_text(__db, "database", "db_path", path, PATH_MAX); FAIL_UNLESS(database_open(__db, path, true), "Can't open database %s", path); FAIL_IF(atexit(___cleanup_db), "Failed to register cleanup function"); LOG_INFO("SETUP", "Setup of database is OK"); - database_config_get(__db, "repo", "module", path, PATH_MAX); + database_config_get_text(__db, "repo", "module", path, PATH_MAX); LOG_INFO("SETUP", "Try to import repo module from '%s'", path); reg_import(path, &__mod_repo.reg, &__mod_repo.handle); FAIL_IF(MOD_CALL(__mod_repo, "new", &__queue, &__db), "Failed to init repo module %s", path); diff --git a/src/mkv/mkv.c b/src/mkv/mkv.c index 3dbf8f8bcc6c931e4d51b0bae6061e282f3fe6d6..f95ea53a30bdfd306ad0709229b87c18c230fdf3 100644 --- a/src/mkv/mkv.c +++ b/src/mkv/mkv.c @@ -277,7 +277,7 @@ mkv_read_seek(struct bufferfd *bf, struct mkv_seek *res) if ((n = mkv_read_element_id(bf, &eid)) < 0) return -1; - data_len -= n; + data_len -= (uint64_t)n; if (eid == EBML_MKV_SEEK_ID) { uint8_t seek_id[4]; @@ -289,19 +289,19 @@ mkv_read_seek(struct bufferfd *bf, struct mkv_seek *res) return -1; res->id = be_uint32_t(seek_id, elength); - data_len -= n + elength; + data_len -= (uint64_t)n + elength; got_id = 1; } else if (eid == EBML_MKV_SEEK_POS) { if ((n = mkv_read_uint(bf, &res->pos)) < 0) return -1; - data_len -= n; + data_len -= (uint64_t)n; got_pos = 1; } else { if ((n = mkv_skip_element(bf)) < 0) return -1; - data_len -= n; + data_len -= (uint64_t)n; } } @@ -337,7 +337,7 @@ mkv_read_simple_tag(struct bufferfd *bf, struct mkv_simple_tag *res) if (n < 0) return -1; - data_len -= n; + data_len -= (uint64_t)n; if (eid == EBML_MKV_TAG_NAME) n = mkv_read_utf8(bf, LEKTOR_TAG_MAX, res->name); @@ -349,7 +349,7 @@ mkv_read_simple_tag(struct bufferfd *bf, struct mkv_simple_tag *res) if (n < 0) return -1; - data_len -= (size_t)n < data_len ? (size_t)n : data_len; + data_len -= (uint64_t)n < data_len ? (uint64_t)n : data_len; } return consumed; @@ -373,20 +373,20 @@ mkv_read_targets(struct bufferfd *bf, uint64_t *target_type_value) if ((n = mkv_read_element_id(bf, &eid)) < 0) return -1; - data_len -= n; + data_len -= (uint64_t)n; if (eid == EBML_MKV_TAG_TTV) { if ((n = mkv_read_uint(bf, target_type_value)) < 0) return -1; - data_len -= n; + data_len -= (uint64_t)n; break; } if ((n = mkv_skip_element(bf)) < 0) return -1; - data_len -= (size_t)n < data_len ? (size_t)n : data_len; + data_len -= (uint64_t)n < data_len ? (uint64_t)n : data_len; } bufferfd_skip(bf, data_len); @@ -418,7 +418,7 @@ mkv_read_tag(struct bufferfd *bf, struct mkv_tag *res) if ((n = mkv_read_element_id(bf, &eid)) < 0) return -1; - data_len -= n; + data_len -= (uint64_t)n; if (eid == EBML_MKV_TAG_TARGETS) { if ((n = mkv_read_targets(bf, &res->target_type_value)) < 0) @@ -433,7 +433,7 @@ mkv_read_tag(struct bufferfd *bf, struct mkv_tag *res) return -1; } - data_len -= n; + data_len -= (uint64_t)n; } bufferfd_skip(bf, data_len); @@ -458,7 +458,7 @@ mkv_seek(struct bufferfd *bf, size_t header_len, size_t what) if ((n = mkv_read_element_id(bf, &eid)) < 0) return -1; - seekhead_len -= n; + seekhead_len -= (uint64_t)n; if (eid == EBML_MKV_SEEK) n = mkv_read_seek(bf, &s); @@ -468,7 +468,7 @@ mkv_seek(struct bufferfd *bf, size_t header_len, size_t what) if (n < 0) return -1; - seekhead_len -= n; + seekhead_len -= (uint64_t)n; if (eid == EBML_MKV_SEEK && s.id == what) return bufferfd_seek(bf, s.pos + header_len); @@ -531,13 +531,13 @@ kara_read_tags(struct bufferfd *bf, struct kara_metadata *dst) if ((n = mkv_read_element_id(bf, &eid)) < 0 || eid != EBML_MKV_TAG) return -1; - data_len -= n; + data_len -= (uint64_t)n; if ((n = mkv_read_tag(bf, &t)) < 0) return -1; kara_add_tag(dst, &t); - data_len -= n; + data_len -= (uint64_t)n; } return 0; @@ -558,7 +558,7 @@ kara_read_segment_info(struct bufferfd *bf, double *len) if ((n = mkv_read_element_id(bf, &eid)) < 0) return -1; - data_len -= n; + data_len -= (uint64_t)n; if (eid == EBML_MKV_SEG_DURATION) { if ((n = mkv_read_float(bf, len)) < 0) @@ -566,20 +566,10 @@ kara_read_segment_info(struct bufferfd *bf, double *len) LOG_DEBUG("MKV", "Got segment duration %f", *len); } -#if 0 - /* Dividing the EBML_MKV_SEG_DURATION by 10 should give the time in seconds */ - uint64_t scale = 1; - else if (eid == EBML_MKV_SEG_TS_SCALE) { - if ((n = mkv_read_uint(bf, &scale)) < 0) - return -1; - LOG_DEBUG("MKV", "Got segment ts scale %zu", scale); - } -#endif - else if ((n = mkv_skip_element(bf)) < 0) return -1; - data_len -= n; + data_len -= (uint64_t)n; } *len /= 10; /* In s */ diff --git a/src/mkv/utils.c b/src/mkv/utils.c index cec0b2b0df1ef3f9509f7bd5345013751144f5f2..b5a48feb181def4d648cc93456549efb908fffd0 100644 --- a/src/mkv/utils.c +++ b/src/mkv/utils.c @@ -8,7 +8,8 @@ mdtcat(struct kara_metadata *mdt, char **ret) { size_t size = strlen(mdt->song_name) + strlen(mdt->source_name) + strlen(mdt->category) + strlen(mdt->language) + strlen(mdt->author_name) + strlen(mdt->song_type) + - /* Null byte */ 1 + /* Separators */ 12 + 5 + (size_t)long_length(mdt->song_number); + /* Null byte */ 1 + /* Separators */ 12 + 5 + + (size_t)long_length(mdt->song_number); *ret = LKT_ALLOC_ARRAY(char, size); safe_snprintf(*ret, size, "%s - %s / %s - %s%d - %s [%s]", mdt->category, mdt->language, mdt->source_name, mdt->song_type, mdt->song_number, mdt->song_name, diff --git a/src/mkv/write.c b/src/mkv/write.c index bb680d8af623ed13140fa2b7117ea7d1a2e89964..bc6b3ca540568d067c14a1bad412c4e655c8ddb7 100644 --- a/src/mkv/write.c +++ b/src/mkv/write.c @@ -135,10 +135,10 @@ metadata_from_path(char *const mkvfile, struct kara_metadata *meta) static regex_t regex; static int regex_init = 0; const size_t nmatch = 10; + int sta = false; regmatch_t pmatch[nmatch]; - int reti, sta = false; + int ret; char msgbuf[LEKTOR_TAG_MAX]; - char *endptr; #pragma message(TODO "Import the types and categories from the db") static const char *rgx = "^/(.+)/(vo|va|amv|cdg|autres|vtuber|vocaloid)/" @@ -153,29 +153,29 @@ metadata_from_path(char *const mkvfile, struct kara_metadata *meta) memset(meta, 0, sizeof(struct kara_metadata)); memset(msgbuf, 0, LEKTOR_TAG_MAX * sizeof(char)); - reti = regexec(®ex, mkvfile, nmatch, pmatch, 0); - if (!reti) { + ret = regexec(®ex, mkvfile, nmatch, pmatch, 0); + if (!ret) { /* Match */ // clang-format off - memcpy(meta->category, mkvfile + pmatch[2].rm_so, pmatch[2].rm_eo - pmatch[2].rm_so); - memcpy(meta->language, mkvfile + pmatch[3].rm_so, pmatch[3].rm_eo - pmatch[3].rm_so); - memcpy(meta->author_name, mkvfile + pmatch[4].rm_so, pmatch[4].rm_eo - pmatch[4].rm_so); - memcpy(meta->source_name, mkvfile + pmatch[5].rm_so, pmatch[5].rm_eo - pmatch[5].rm_so); - memcpy(meta->song_type, mkvfile + pmatch[6].rm_so, pmatch[6].rm_eo - pmatch[6].rm_so); - memcpy(msgbuf, mkvfile + pmatch[7].rm_so, pmatch[7].rm_eo - pmatch[7].rm_so); - memcpy(meta->song_name, mkvfile + pmatch[8].rm_so, pmatch[8].rm_eo - pmatch[8].rm_so); + memcpy(meta->category, mkvfile + pmatch[2].rm_so, (size_t)(pmatch[2].rm_eo - pmatch[2].rm_so)); + memcpy(meta->language, mkvfile + pmatch[3].rm_so, (size_t)(pmatch[3].rm_eo - pmatch[3].rm_so)); + memcpy(meta->author_name, mkvfile + pmatch[4].rm_so, (size_t)(pmatch[4].rm_eo - pmatch[4].rm_so)); + memcpy(meta->source_name, mkvfile + pmatch[5].rm_so, (size_t)(pmatch[5].rm_eo - pmatch[5].rm_so)); + memcpy(meta->song_type, mkvfile + pmatch[6].rm_so, (size_t)(pmatch[6].rm_eo - pmatch[6].rm_so)); + memcpy(msgbuf, mkvfile + pmatch[7].rm_so, (size_t)(pmatch[7].rm_eo - pmatch[7].rm_so)); + memcpy(meta->song_name, mkvfile + pmatch[8].rm_so, (size_t)(pmatch[8].rm_eo - pmatch[8].rm_so)); // clang-format on - } else if (REG_NOMATCH == reti) { + } else if (REG_NOMATCH == ret) { LOG_ERROR("MKV", "No match for: %s", mkvfile); goto error; } else { - regerror(reti, ®ex, msgbuf, sizeof(msgbuf)); + regerror(ret, ®ex, msgbuf, sizeof(msgbuf)); LOG_ERROR("MKV", "Failed to execute regex: %s", msgbuf); goto error; } - STRTOL(meta->song_number, msgbuf, endptr, reti); - if (reti || meta->song_number <= 0) + ret = (int)strtol(msgbuf, NULL, 0); + if (ret || meta->song_number <= 0) meta->song_number = 1; sta = true; diff --git a/src/module/module_repo.c b/src/module/module_repo.c index 4c704f261b514c92b43709918adb5d861deaf9c6..ad8e1994a81bf5cbac39efcd2b57d7027baf2901 100644 --- a/src/module/module_repo.c +++ b/src/module/module_repo.c @@ -555,7 +555,7 @@ ___worker_rescan(void UNUSED *worker, void *___repo) char kara_prefix[LKT_LINE_MAX]; lkt_queue_send(repo->queue, LKT_EVENT_DB_UPDATING, LKT_DB_UPDATING_PROGRESS); - if (!database_config_get(repo->db, "database", "kara_dir", kara_prefix, LKT_LINE_MAX)) { + if (!database_config_get_text(repo->db, "database", "kara_dir", kara_prefix, LKT_LINE_MAX)) { LOG_ERROR("REPO", "Failed to get kara prefix from config"); return NULL; } @@ -741,7 +741,7 @@ module_repo_new(struct module_repo_internal *repo_, struct queue *queue, lkt_db ++___curl_init; int obfuscate; - if (!database_config_get(db, "repo", "obfuscate", &obfuscate)) { + if (!database_config_get_int(db, "repo", "obfuscate", &obfuscate)) { LOG_ERROR("REPO", "Configuration invalid, but it should not be at this point"); exit(EXIT_FAILURE); } @@ -769,13 +769,13 @@ module_repo_new(struct module_repo_internal *repo_, struct queue *queue, lkt_db }; /* Copies */ - if (!database_config_get(db, "database", "kara_dir", repo.kara_dir, PATH_MAX) || - !database_config_get(db, "repo", "name", repo.name, LKT_LINE_MAX) || - !database_config_get(db, "repo", "url", repo.base_url, LKT_LINE_MAX) || - !database_config_get(db, "repo", "id_json", repo.get_id_json, LKT_LINE_MAX) || - !database_config_get(db, "repo", "id_kara", repo.get_id_file, LKT_LINE_MAX) || - !database_config_get(db, "repo", "fav_json", repo.get_fav_json, LKT_LINE_MAX) || - !database_config_get(db, "repo", "json", repo.get_all_json, LKT_LINE_MAX)) { + if (!database_config_get_text(db, "database", "kara_dir", repo.kara_dir, PATH_MAX) || + !database_config_get_text(db, "repo", "name", repo.name, LKT_LINE_MAX) || + !database_config_get_text(db, "repo", "url", repo.base_url, LKT_LINE_MAX) || + !database_config_get_text(db, "repo", "id_json", repo.get_id_json, LKT_LINE_MAX) || + !database_config_get_text(db, "repo", "id_kara", repo.get_id_file, LKT_LINE_MAX) || + !database_config_get_text(db, "repo", "fav_json", repo.get_fav_json, LKT_LINE_MAX) || + !database_config_get_text(db, "repo", "json", repo.get_all_json, LKT_LINE_MAX)) { LOG_ERROR("REPO", "Configuration invalid, but it should not be at this point"); exit(EXIT_FAILURE); } @@ -783,7 +783,7 @@ module_repo_new(struct module_repo_internal *repo_, struct queue *queue, lkt_db /* Init the worker only now ! */ int workers_count; - if (!database_config_get(db, "repo", "workers_count", &workers_count)) + if (!database_config_get_int(db, "repo", "workers_count", &workers_count)) workers_count = 5; if (worker_pool_new(&repo_->workers, 10 /* Initial number of elements in the call queue */, workers_count /* Number of worker threads */)) { diff --git a/src/module/mpv.c b/src/module/mpv.c index 9482de1c4fe6c15f90f9324cd54fa319a28a2c13..92032ef4b67852e92b910527dbeb67790790d8ca 100644 --- a/src/module/mpv.c +++ b/src/module/mpv.c @@ -31,7 +31,7 @@ lmpv_prepare(lkt_db *db) return NULL; \ } #define MPV_SET_FROM_INI(opt, section, key) \ - if (!database_config_get(db, section, key, ___opt, LKT_LINE_MAX)) { \ + if (!database_config_get_text(db, section, key, ___opt, LKT_LINE_MAX)) { \ LOG_WARN("WINDOW", "Failed to get option " key " in section " section); \ return ctx; \ } \ @@ -39,7 +39,7 @@ lmpv_prepare(lkt_db *db) #define MPV_SET_OPTION_COND(opt, value, ini_section, ini_option, def) \ ({ \ int ___cond; \ - if (!database_config_get(db, ini_section, ini_option, &___cond)) { \ + if (!database_config_get_int(db, ini_section, ini_option, &___cond)) { \ LOG_WARN("WINDOW", "Default [" ini_section "/" ini_option "] to " #def); \ ___cond = (def); \ } \ diff --git a/src/net/command.c b/src/net/command.c index 8109ddcbdcc8ff1ee61f0033b5b6dd43ca905d96..d216ec5ec3dbb584c24fea0fa65d3f77cf88b29d 100644 --- a/src/net/command.c +++ b/src/net/command.c @@ -31,7 +31,7 @@ lkt_command_parse(char *raw) /* Do we need the continuation? */ if ((errno != 0) || (endptr == raw)) { - res.cont = 0; + res.cont = 0; skip_continuation = true; } diff --git a/src/net/listen.c b/src/net/listen.c index ecce5166aefeaa1695d6651b2ea3c95e21766758..81d538f7e407feaa9e7514fd4b7a065d09451cf8 100644 --- a/src/net/listen.c +++ b/src/net/listen.c @@ -155,7 +155,7 @@ ___cmd_trie_print(struct cmd_trie_node *root, char *old_prefix, const size_t len for (size_t i = 0; i < CHARS_MAX; ++i) { /* Rec-call with new children */ if (root->children[i] != NULL) { - prefix[length] = (char) i; + prefix[length] = (char)i; ___cmd_trie_print(root->children[i], prefix, length + 1); } } @@ -803,7 +803,7 @@ handle_network_events(struct lkt_state *srv) if (n_in < 0) return -1; // Note from here it's safe to cast n_in to size_t or unsigned - size_t unsigned_n_in = (size_t)n_in; + size_t unsigned_n_in = (size_t)n_in; struct lkt_message *msg = lkt_message_new_str("OK MPD " MPD_VERSION "\n"); for (; unsigned_n_in; unsigned_n_in--) { memset(&srv->clients[srv->fds_len - unsigned_n_in - 1], 0, sizeof(struct lkt_client));