diff --git a/.clang-format b/.clang-format index c0ec36362def0d623e2c26ac2a389b5439879560..cd8dadb006b331927d66b705e630f7ca3c7d0e5d 100644 --- a/.clang-format +++ b/.clang-format @@ -63,6 +63,7 @@ ForEachMacros: - 'for_each' - 'for_ever' - 'forever' + - 'unless' - 'FOR_EVER_IF' - 'FOR_EVER_UNTIL' - 'FOR_EACH_FLAT_LIST_ITEM' diff --git a/inc/lektor/queue.h b/inc/lektor/queue.h index 2c2a0715caf537ff7f012bfb59f300ec9409f746..2fed6c9af92831ce514ab2bacc4acf5c1d6c0f44 100644 --- a/inc/lektor/queue.h +++ b/inc/lektor/queue.h @@ -84,11 +84,11 @@ lkt_queue_new(struct queue *ret) pthread_mutex_t mxt = PTHREAD_MUTEX_INITIALIZER; struct queue _ret = { - .contents = LKT_ALLOC_ARRAY(lkt_event, LKT_DEFAULT_LIST_SIZE), - .size = LKT_DEFAULT_LIST_SIZE, - .last = 0, - .available = 0, - .lock = mxt, + .contents = LKT_ALLOC_ARRAY(lkt_event, LKT_DEFAULT_LIST_SIZE), + .size = LKT_DEFAULT_LIST_SIZE, + .last = 0, + .available = 0, + .lock = mxt, }; *ret = _ret; diff --git a/src/base/common.c b/src/base/common.c index b5ad9e9d4c462fbd990ffcd4a6a93c033f8ef0cd..e781aa57a67b5b0b7b9b237c0cdadaeb5de426b8 100644 --- a/src/base/common.c +++ b/src/base/common.c @@ -43,8 +43,8 @@ __set_assert(void) /* Log functions */ -static LOG_LEVEL ___log_level = ___LAST_UNUSED_LOG_LEVEL; /* All by default */ -extern struct lkt_logfile *___log_logfile; /* Use the logfile globaly */ +static LOG_LEVEL ___log_level = ___LAST_UNUSED_LOG_LEVEL; /* All by default */ +extern struct lkt_logfile *___log_logfile; /* Use the logfile globaly */ void lkt_set_log_level(LOG_LEVEL lvl) diff --git a/src/base/config.c b/src/base/config.c index e563b00913ec42037e406918b953d00a91161272..7e51e6763b36d08ed18a315ef296f4765b46c54d 100644 --- a/src/base/config.c +++ b/src/base/config.c @@ -276,7 +276,7 @@ config_new(lkt_db *db, const char *conf) } LOG_INFO("CONFIG", "Ensure that optional fields are present: set then to default " - "value if not present"); + "value if not present"); database_config_set_optional_fields(db); return 0; diff --git a/src/base/logfile.c b/src/base/logfile.c index 5893f392e8acfec43b6c6e2b4102837a12cac3cf..d9a621ef2987647367778035f6637200ea2bf95d 100644 --- a/src/base/logfile.c +++ b/src/base/logfile.c @@ -3,7 +3,7 @@ #include <lektor/logfile.h> struct lkt_logfile { - const char *base_folder; /* Allocated, must be freed */ + const char *base_folder; /* Allocated, must be freed */ const unsigned int file_count; const unsigned int line_count; int current_fd; /* The <folder/1> file */ @@ -22,12 +22,11 @@ ___close_global_logfile() } } - PRIVATE_FUNCTION unsigned int ___count_lines_in_file(const char *file) { unsigned int lines = 0u; - FILE *fd = fopen(file, "r"); + FILE *fd = fopen(file, "r"); /* Reads should be buffured... */ while ((fd != NULL) && !feof(fd)) @@ -99,7 +98,7 @@ lkt_logfile_new(lkt_db *db) if (file_count < 0 || line_count < 0) LOG_FATAL("Negative file or line count in setting for logging"); - struct lkt_logfile *ret = LKT_ALLOC_STRUCT(lkt_logfile); + struct lkt_logfile *ret = LKT_ALLOC_STRUCT(lkt_logfile); struct lkt_logfile tmp_logfile = { .file_count = (unsigned int)file_count, .line_count = (unsigned int)line_count, @@ -111,7 +110,8 @@ lkt_logfile_new(lkt_db *db) memcpy(ret, &tmp_logfile, sizeof(struct lkt_logfile)); errno = 0; - FAIL_IF(mkdir(base_folder, 0755) && (errno != EEXIST), "Failed to create folder: %s", base_folder); + FAIL_IF(mkdir(base_folder, 0755) && (errno != EEXIST), "Failed to create folder: %s", + base_folder); ___open_all_files(ret); LOG_INFO("LOG", "Log folder was created at: %s", base_folder); diff --git a/src/database/config.c b/src/database/config.c index 83e82e559b0b065da9446d640998c7ca0e913403..ba2a56b796e26bef27b49c997280574cb35240e6 100644 --- a/src/database/config.c +++ b/src/database/config.c @@ -10,8 +10,8 @@ database_config_set(lkt_db *db, const char *section, const char *key, const char static const char *SQL_STMT = "INSERT OR REPLACE INTO" " config (section, key, value)" " VALUES (?, ?, ?);\n"; - sqlite3_stmt *stmt = 0; - bool ret = false; + sqlite3_stmt *stmt = 0; + bool ret = false; int code; SQLITE_PREPARE(db, stmt, SQL_STMT, error); @@ -39,8 +39,8 @@ database_config_get_text(lkt_db *db, const char *section, const char *key, char static const char *SQL_STMT = "SELECT value" " FROM config" " WHERE section = ? AND key = ?;\n"; - sqlite3_stmt *stmt = 0; - bool ret = false; + sqlite3_stmt *stmt = 0; + bool ret = false; char *row; SQLITE_PREPARE(db, stmt, SQL_STMT, error); @@ -64,8 +64,8 @@ database_config_get_text_nospace(lkt_db *db, const char *section, const char *ke static const char *SQL_STMT = "SELECT REPLACE(value, ' ', '')" " FROM config" " WHERE section = ? AND key = ?;\n"; - sqlite3_stmt *stmt = 0; - bool ret = false; + sqlite3_stmt *stmt = 0; + bool ret = false; char *row; SQLITE_PREPARE(db, stmt, SQL_STMT, error); @@ -88,8 +88,8 @@ database_config_exists(lkt_db *db, const char *section, const char *key) static const char *SQL_STMT = "SELECT value" " FROM config" " WHERE section = ? AND key = ?;\n"; - sqlite3_stmt *stmt = 0; - bool ret = false; + sqlite3_stmt *stmt = 0; + bool ret = false; SQLITE_PREPARE(db, stmt, SQL_STMT, error); SQLITE_BIND_TEXT(db, stmt, 1, section, error); @@ -108,8 +108,8 @@ database_config_get_int(lkt_db *db, const char *section, const char *key, int *v static const char *SQL_STMT = "SELECT CAST(value AS INTEGER)" " FROM config" " WHERE section COLLATE nocase = ? AND key COLLATE nocase = ?;"; - sqlite3_stmt *stmt = 0; - bool ret = false; + sqlite3_stmt *stmt = 0; + bool ret = false; SQLITE_PREPARE(db, stmt, SQL_STMT, error); SQLITE_BIND_TEXT(db, stmt, 1, section, error); @@ -152,9 +152,10 @@ database_config_set_optional_fields(lkt_db *db) const char *section = NULL; #define section(_sct) section = _sct; #define value(name, value) -#define value_opt(name, value) \ - if ((section != NULL) && !database_config_exists(db, section, name)) { \ - FAIL_UNLESS(database_config_set(db, section, name, value), "Failed to set default value for option '%s/%s'", section, name); \ +#define value_opt(name, value) \ + if ((section != NULL) && !database_config_exists(db, section, name)) { \ + FAIL_UNLESS(database_config_set(db, section, name, value), \ + "Failed to set default value for option '%s/%s'", section, name); \ LOG_WARN("CONFIG", "Enforce the option '%s/%s' <- %s", section, name, value); \ } diff --git a/src/database/find.c b/src/database/find.c index dc0b1096303fd25faef8e89b9ddff55d069a64df..75be6f608ebc67cb26ab55132b9107364eeb1240 100644 --- a/src/database/find.c +++ b/src/database/find.c @@ -79,12 +79,12 @@ database_search_new(struct lkt_state *srv, size_t c, int cont, function_ptr call size_t msg_count = srv != NULL ? lkt_remaining_msg(srv, c) - 3 : LKT_DB_DEFAULT_ITERATION_MAX; struct lkt_search *ret_ptr = LKT_ALLOC_STRUCT(lkt_search); struct lkt_search ret = { - .srv = srv, - .c = c, - .continuation = cont, - .msg_count = (int)msg_count, - .call = call, - .stmt = NULL, + .srv = srv, + .c = c, + .continuation = cont, + .msg_count = (int)msg_count, + .call = call, + .stmt = NULL, }; *ret_ptr = ret; @@ -255,10 +255,10 @@ database_search_sticker_init(lkt_db *db, struct lkt_search *ret) " SELECT id, sticker, value , 'plt' FROM 'stickers.plt'" ") AS sts" "ON sts.sticker = 'stickers'.id"; - static const char *SQL_one_type = "SELECT name, sts.id, value, '%s' " - "FROM 'stickers.%s' AS sts " - "JOIN 'stickers' " - "ON 'stickers'.id = sts.sticker"; + static const char *SQL_one_type = "SELECT name, sts.id, value, '%s' " + "FROM 'stickers.%s' AS sts " + "JOIN 'stickers' " + "ON 'stickers'.id = sts.sticker"; char SQL[LKT_MAX_SQLITE_STATEMENT]; ret->type = lkt_search_sticker; @@ -377,8 +377,8 @@ database_kara_by_id(lkt_db *db, int id, struct kara_metadata *res, char filepath { static const char *SQL = "SELECT song_name, source_name, category, language, author_name, " "song_type, song_number, file_path FROM kara WHERE id = ?;"; - sqlite3_stmt *stmt = 0; - int ret = false; + sqlite3_stmt *stmt = 0; + int ret = false; SQLITE_PREPARE(db, stmt, SQL, error); SQLITE_BIND_INT(db, stmt, 1, id, error); diff --git a/src/database/open.c b/src/database/open.c index dbd88d6a12e85524ab9edc4c4a9a7d37d2846ac0..41058fd1fd68c2037e47733ed502e0498903fb2e 100644 --- a/src/database/open.c +++ b/src/database/open.c @@ -152,7 +152,7 @@ __check_schema(lkt_db *db) " ('kara', 'playlist', 'kara_playlist', 'queue', 'users', 'stickers'," " '''stickers.kara''', '''stickers.plt''', 'updates', 'misc', " " 'kara_type', 'kara_category', 'language');"; - sqlite3_stmt *stmt = NULL; + sqlite3_stmt *stmt = NULL; SQLITE_PREPARE(db, stmt, SQL, error); SQLITE_STEP_ROW(db, stmt, error); if (9 != sqlite3_column_int(stmt, 0)) { diff --git a/src/database/playlist.c b/src/database/playlist.c index 76773601bf3a47a6c91bcf507f7a5a0e52ba1f6e..7d2d5d17ec418fe12271d174395f96a86e214aa1 100644 --- a/src/database/playlist.c +++ b/src/database/playlist.c @@ -39,8 +39,8 @@ database_plt_create(lkt_db *db, const char *name) { static const char *SQL_STMT = "INSERT INTO playlist (name, last_update) " "VALUES (?, strftime('%s', 'now'));"; - sqlite3_stmt *stmt = NULL; - bool sta = false; + sqlite3_stmt *stmt = NULL; + bool sta = false; SQLITE_PREPARE(db, stmt, SQL_STMT, error); SQLITE_BIND_TEXT(db, stmt, 1, name, error); SQLITE_STEP_DONE(db, stmt, error); @@ -89,8 +89,8 @@ database_plt_clear(lkt_db *db, const char *name) { static const char *SQL_STMT = "DELETE FROM kara_playlist " "WHERE playlist_id = (SELECT id FROM playlist WHERE name = ?);"; - sqlite3_stmt *stmt = NULL; - bool sta = false; + sqlite3_stmt *stmt = NULL; + bool sta = false; SQLITE_PREPARE(db, stmt, SQL_STMT, error); SQLITE_BIND_TEXT(db, stmt, 1, name, error); SQLITE_STEP_DONE(db, stmt, error); diff --git a/src/database/queue.c b/src/database/queue.c index 1fe0c1ea2dbfb3d9760e7d7ed3e66dc10d354856..865d18b0e80f519520809a9ba61e1ab1d4d933ee 100644 --- a/src/database/queue.c +++ b/src/database/queue.c @@ -526,6 +526,18 @@ database_queue_skip_current(lkt_db *db, char filepath[PATH_MAX]) } } +/* When playing the previous kara, if the current was a priority 5 and the + * prvious a priority 1 we will have a problem on the resequence of the queue. + * Thus, we propagate all the priorities > 1 if found after the current to all + * the karas from that found kara with a > 1 priority to the current one + * included. It only makes sense to call that function from the + * 'database_queue_prev' function. */ +PRIVATE_FUNCTION bool +___database_back_propagate_priority(UNUSED lkt_db *db) +{ + return false; +} + bool database_queue_prev(lkt_db *db, char filepath[PATH_MAX]) { diff --git a/src/database/update.c b/src/database/update.c index 81a59cf2ef739511cab348db205bd9d275fcb8fb..8a556ee174701d228cfd23f00c51170550182dc4 100644 --- a/src/database/update.c +++ b/src/database/update.c @@ -55,7 +55,7 @@ ___flush_cache_from_disk(lkt_db *db, const char *filename) " SELECT id, file_path" " FROM kara" " WHERE file_path = ?"; - sqlite3_stmt *stmt = NULL; + sqlite3_stmt *stmt = NULL; SQLITE_PREPARE(db, stmt, SQL, error); SQLITE_BIND_TEXT(db, stmt, 1, filename, error); @@ -178,8 +178,8 @@ database_update_add(lkt_db *db, const char *kara_path, struct kara_metadata *mdt "song_type, language, file_path, is_new, author_name, " "song_number, id, available)" "SELECT ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?"; - sqlite3_stmt *stmt = NULL; - int ret = false; + sqlite3_stmt *stmt = NULL; + int ret = false; /* From here we initialize the sqlite stmt. */ @@ -261,9 +261,9 @@ database_deleted_kara(lkt_db *db, int **kara_id, size_t *len) { static const char *SQL = "SELECT kara.id, file_path FROM kara WHERE kara.id NOT IN" "(SELECT kara_id FROM updates JOIN misc ON job = update_job);"; - sqlite3_stmt *stmt = NULL; - *kara_id = LKT_ALLOC_ARRAY(int, LKT_DEFAULT_LIST_SIZE); - *len = 0; + sqlite3_stmt *stmt = NULL; + *kara_id = LKT_ALLOC_ARRAY(int, LKT_DEFAULT_LIST_SIZE); + *len = 0; RETURN_UNLESS(*kara_id, "Out of memory", NOTHING); SQLITE_PREPARE(db, stmt, SQL, out); size_t size = LKT_DEFAULT_LIST_SIZE; @@ -333,8 +333,8 @@ database_stats(lkt_db *db, int *authors, int *sources, int *karas) " (SELECT COUNT(DISTINCT author_name) FROM kara)," " (SELECT COUNT(DISTINCT source_name) FROM kara)," " (SELECT COUNT(id) FROM kara);"; - sqlite3_stmt *stmt = NULL; - bool ret_code = false; + sqlite3_stmt *stmt = NULL; + bool ret_code = false; SQLITE_PREPARE(db, stmt, SQL, error); SQLITE_STEP_ROW(db, stmt, error);