From c49e9e6c239e734f642c97076e59348054f82937 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Wed, 15 Sep 2021 12:17:08 +0200 Subject: [PATCH] FMT: Update the clang format thing --- .clang-format | 19 +-- inc/lektor/cmd.h | 48 +++---- inc/lektor/common.h | 103 +++++++------ inc/lektor/internal/dbmacro.h | 82 +++++------ inc/lektor/json.h | 9 +- inc/lektor/queue.h | 11 +- inc/lektor/reg.h | 6 +- src/base/cmd.c | 4 +- src/base/commands.c | 101 +++++++------ src/base/common.c | 43 +++--- src/base/config.c | 17 ++- src/base/json.c | 108 +++++++------- src/base/launch.c | 9 +- src/base/reg.c | 4 +- src/base/uri.c | 20 +-- src/database/cache.c | 104 +++++++------- src/database/config.c | 34 ++--- src/database/find.c | 66 +++++---- src/database/open.c | 14 +- src/database/playlist.c | 29 ++-- src/database/queue.c | 143 +++++++++--------- src/database/update.c | 42 +++--- src/klkt/klkt.hpp | 173 ++++++++++------------ src/main/lkt.c | 263 ++++++++++++++++++---------------- src/main/luka.c | 62 ++++---- src/main/server.c | 29 ++-- src/mkv/utils.c | 12 +- src/mkv/write.c | 17 ++- src/module/module_repo.c | 46 +++--- src/module/module_sdl2.c | 17 +-- src/module/mpv.h | 6 +- src/module/thread.h | 8 +- src/module/worker.c | 3 +- src/net/listen.c | 90 ++++++------ 34 files changed, 910 insertions(+), 832 deletions(-) diff --git a/.clang-format b/.clang-format index ab33d60c..c0ec3636 100644 --- a/.clang-format +++ b/.clang-format @@ -5,19 +5,22 @@ AlignConsecutiveAssignments: true AlignConsecutiveBitFields: true AlignConsecutiveDeclarations: false AlignConsecutiveMacros: true -AlignEscapedNewlines: Right +AlignEscapedNewlines: Left AlignOperands: true AlignTrailingComments: true +AllowAllArgumentsOnNextLine: true AllowAllParametersOfDeclarationOnNextLine: false -AllowShortBlocksOnASingleLine: false -AllowShortCaseLabelsOnASingleLine: false -AllowShortFunctionsOnASingleLine: None +AllowShortBlocksOnASingleLine: Empty +AllowShortCaseLabelsOnASingleLine: true +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All AllowShortIfStatementsOnASingleLine: false AllowShortLoopsOnASingleLine: false +AllowShortLambdasOnASingleLine: All AlwaysBreakAfterDefinitionReturnType: TopLevel AlwaysBreakAfterReturnType: None AlwaysBreakBeforeMultilineStrings: false -AlwaysBreakTemplateDeclarations: false +AlwaysBreakTemplateDeclarations: No BinPackArguments: true BinPackParameters: true BraceWrapping: @@ -44,7 +47,7 @@ BreakConstructorInitializersBeforeComma: false BreakConstructorInitializers: BeforeComma BreakAfterJavaFieldAnnotations: false BreakStringLiterals: false -ColumnLimit: 120 +ColumnLimit: 100 CompactNamespaces: true ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerIndentWidth: 4 @@ -58,8 +61,8 @@ CommentPragmas: '^ KEEP pragma:' ForEachMacros: - 'for_each' - - 'FOR_EACH' - - 'FOR_EVER' + - 'for_ever' + - 'forever' - 'FOR_EVER_IF' - 'FOR_EVER_UNTIL' - 'FOR_EACH_FLAT_LIST_ITEM' diff --git a/inc/lektor/cmd.h b/inc/lektor/cmd.h index c1890987..0df6ccb3 100644 --- a/inc/lektor/cmd.h +++ b/inc/lektor/cmd.h @@ -7,25 +7,25 @@ extern "C" { #include <lektor/common.h> -#define CMD_OPT_NULL \ - { \ - .name = NULL, .call = NULL \ +#define CMD_OPT_NULL \ + { \ + .name = NULL, .call = NULL \ } -#define CMD_OPT_DEFAULT(func) \ - { \ - .name = NULL, .call = func \ +#define CMD_OPT_DEFAULT(func) \ + { \ + .name = NULL, .call = func \ } -#define CMD_ENV_NULL \ - { \ - .name = NULL, .value = NULL, .handler = NULL, \ +#define CMD_ENV_NULL \ + { \ + .name = NULL, .value = NULL, .handler = NULL, \ } -#define CMD_ENV(n, hndl) \ - { \ - .name = n, .handler = hndl \ +#define CMD_ENV(n, hndl) \ + { \ + .name = n, .handler = hndl \ } -#define CMD_ENV_DEFAULT(n, v, hndl) \ - { \ - .name = n, .value = v, .handler = hndl \ +#define CMD_ENV_DEFAULT(n, v, hndl) \ + { \ + .name = n, .value = v, .handler = hndl \ } /* The arguments passed to a command */ @@ -34,17 +34,17 @@ struct cmd_args { const char **argv; /* An array of argument passed. */ }; -#define CMD_ARGS_FROM(argc, argv) \ - { \ - .argc = (argc), .argv = (argv) \ +#define CMD_ARGS_FROM(argc, argv) \ + { \ + .argc = (argc), .argv = (argv) \ } -#define CMD_ARGS_NEXT_FROM(argc, argv) \ - { \ - .argc = argc - 1, .argv = (const char **)&(argv[1]), \ +#define CMD_ARGS_NEXT_FROM(argc, argv) \ + { \ + .argc = argc - 1, .argv = (const char **)&(argv[1]), \ } -#define CMD_ARGS_NEXT(args) \ - { \ - .argc = (args).argc - 1, .argv = (args).argv + 1, \ +#define CMD_ARGS_NEXT(args) \ + { \ + .argc = (args).argc - 1, .argv = (args).argv + 1, \ } /* Callback to call on command, takes the arguments */ diff --git a/inc/lektor/common.h b/inc/lektor/common.h index 58dd6134..343e8169 100644 --- a/inc/lektor/common.h +++ b/inc/lektor/common.h @@ -27,21 +27,21 @@ extern EXIT_FUNCTION ___not_implemented(const char *func, char *file, int line); #define MIN(a, b) ((a) > (b) ? (b) : (a)) #endif /* MIN */ -#define RETURN_IF(cond, msg, ret) \ - if (cond) { \ - LOG_DEBUG("DEBUG", "%s", msg); \ - return ret; \ +#define RETURN_IF(cond, msg, ret) \ + if (cond) { \ + LOG_DEBUG("DEBUG", "%s", msg); \ + return ret; \ } -#define GOTO_IF(cond, msg, label) \ - if (cond) { \ - LOG_DEBUG("DEBUG", "%s", msg); \ - goto label; \ +#define GOTO_IF(cond, msg, label) \ + if (cond) { \ + LOG_DEBUG("DEBUG", "%s", msg); \ + goto label; \ } -#define FAIL_IF(cond, ...) \ - { \ - if (cond) { \ - LOG_FATAL(__VA_ARGS__); \ - } \ +#define FAIL_IF(cond, ...) \ + { \ + if (cond) { \ + LOG_FATAL(__VA_ARGS__); \ + } \ } #define FAIL_UNLESS(cond, ...) FAIL_IF(!(cond), __VA_ARGS__) @@ -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. */ @@ -63,10 +63,11 @@ extern EXIT_FUNCTION ___not_implemented(const char *func, char *file, int line); /* Forever macros */ #define FOR_EVER for (;;) -#define FOR_EVER_IF(expr) \ - FOR_EVER { \ - if (!(expr)) \ - break; \ +#define FOR_EVER_IF(expr) \ + FOR_EVER \ + { \ + if (!(expr)) \ + break; \ } #define FOR_EVER_UNTIL(expr) FOR_EVER_IF (!(expr)) @@ -104,15 +105,20 @@ typedef enum { } LOG_LEVEL; void lkt_set_log_level(LOG_LEVEL); LOG_LEVEL lkt_get_log_level(void); -void ___lkt_log(LOG_LEVEL, const char *sec, const char *func, const char *file, uint64_t l, const char *fmt, ...); -#define LOG_DEBUG(sec, ...) ___lkt_log(LOG_LEVEL_DEBUG, sec, __func__, __FILE__, __LINE__, __VA_ARGS__) -#define LOG_INFO(sec, ...) ___lkt_log(LOG_LEVEL_INFO, sec, __func__, __FILE__, __LINE__, __VA_ARGS__) -#define LOG_WARN(sec, ...) ___lkt_log(LOG_LEVEL_WARN, sec, __func__, __FILE__, __LINE__, __VA_ARGS__) -#define LOG_ERROR(sec, ...) ___lkt_log(LOG_LEVEL_ERROR, sec, __func__, __FILE__, __LINE__, __VA_ARGS__) -#define LOG_FATAL(...) \ - { \ - LOG_ERROR("FATAL", __VA_ARGS__); \ - exit(1); \ +void ___lkt_log(LOG_LEVEL, const char *sec, const char *func, const char *file, uint64_t l, + const char *fmt, ...); +#define LOG_DEBUG(sec, ...) \ + ___lkt_log(LOG_LEVEL_DEBUG, sec, __func__, __FILE__, __LINE__, __VA_ARGS__) +#define LOG_INFO(sec, ...) \ + ___lkt_log(LOG_LEVEL_INFO, sec, __func__, __FILE__, __LINE__, __VA_ARGS__) +#define LOG_WARN(sec, ...) \ + ___lkt_log(LOG_LEVEL_WARN, sec, __func__, __FILE__, __LINE__, __VA_ARGS__) +#define LOG_ERROR(sec, ...) \ + ___lkt_log(LOG_LEVEL_ERROR, sec, __func__, __FILE__, __LINE__, __VA_ARGS__) +#define LOG_FATAL(...) \ + { \ + LOG_ERROR("FATAL", __VA_ARGS__); \ + exit(1); \ } #define LOG_UNREACHABLE LOG_FATAL("Ureachable!"); void ___lkt_print(const char *section, const char *format, ...); @@ -166,9 +172,10 @@ typedef volatile enum { MPD_IDLE_SUBSCRIPTION = (1 << 11), MPD_IDLE_MESSAGE = (1 << 12), - MPD_IDLE_ALL = MPD_IDLE_DATABASE | MPD_IDLE_UPDATE | MPD_IDLE_STORED_PLAYLIST | MPD_IDLE_PLAYLIST | - MPD_IDLE_PLAYER | MPD_IDLE_MIXER | MPD_IDLE_OUTPUT | MPD_IDLE_OPTIONS | MPD_IDLE_PARTITION | - MPD_IDLE_STICKER | MPD_IDLE_SUBSCRIPTION | MPD_IDLE_MESSAGE, + MPD_IDLE_ALL = MPD_IDLE_DATABASE | MPD_IDLE_UPDATE | MPD_IDLE_STORED_PLAYLIST | + MPD_IDLE_PLAYLIST | MPD_IDLE_PLAYER | MPD_IDLE_MIXER | MPD_IDLE_OUTPUT | + MPD_IDLE_OPTIONS | MPD_IDLE_PARTITION | MPD_IDLE_STICKER | + MPD_IDLE_SUBSCRIPTION | MPD_IDLE_MESSAGE, } MPD_IDLE_FLAG; #define STR_MATCH(str1, str2) (!strcasecmp(str1, str2)) @@ -182,15 +189,15 @@ typedef volatile enum { /* Get the number of args in __VA_ARGS__ */ #define GET_VA_COUNT(...) PP_NARG_(__VA_ARGS__, PP_RSEQ_N()) #define PP_NARG_(...) PP_ARG_N(__VA_ARGS__) -#define PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, \ - _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, \ - _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, \ - _63, N, ...) \ +#define PP_ARG_N(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, \ + _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, \ + _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, \ + _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, N, ...) \ N -#define PP_RSEQ_N() \ - 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, \ - 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, \ - 7, 6, 5, 4, 3, 2, 1, 0 +#define PP_RSEQ_N() \ + 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, \ + 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, \ + 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 int is_utf8(const char *string); @@ -211,10 +218,12 @@ int safe_vsnprintf(char *dest, const size_t max_len, const char *format, va_list char *safe_strncpy(char *dest, const char *src, size_t n); /* Helpers for malloc functions. */ -#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___)) -#define LKT_ALLOC_STRUCT_ARRAY(___struct___, ___count___) LKT_ALLOC_ARRAY(struct ___struct___, ___count___) +#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___)) +#define LKT_ALLOC_STRUCT_ARRAY(___struct___, ___count___) \ + LKT_ALLOC_ARRAY(struct ___struct___, ___count___) /* Iterate throught a string, copy each element in the dest string. The save ptr must contains a null integer. */ diff --git a/inc/lektor/internal/dbmacro.h b/inc/lektor/internal/dbmacro.h index 60f81d1d..e55d5068 100644 --- a/inc/lektor/internal/dbmacro.h +++ b/inc/lektor/internal/dbmacro.h @@ -7,61 +7,63 @@ #define ___LOCAL_DEBUG(...) #endif -#define SQLITE_PREPARE(db, stmt, SQL, goto_label) \ - { \ - if (sqlite3_prepare_v2((sqlite3 *)db, SQL, -1, &(stmt), 0) != SQLITE_OK) { \ - ___LOCAL_DEBUG("Failed to prepare statement: %s", sqlite3_errmsg((sqlite3 *)db)); \ - goto goto_label; \ - } \ +#define SQLITE_PREPARE(db, stmt, SQL, goto_label) \ + { \ + if (sqlite3_prepare_v2((sqlite3 *)db, SQL, -1, &(stmt), 0) != SQLITE_OK) { \ + ___LOCAL_DEBUG("Failed to prepare statement: %s", sqlite3_errmsg((sqlite3 *)db)); \ + goto goto_label; \ + } \ } -#define SQLITE_EXEC(db, SQL, goto_label) \ - { \ - if (sqlite3_exec((sqlite3 *)db, SQL, NULL, NULL, NULL) != SQLITE_OK) { \ - ___LOCAL_DEBUG("Failed to exec statement: %s", sqlite3_errmsg((sqlite3 *)db)); \ - goto goto_label; \ - } \ +#define SQLITE_EXEC(db, SQL, goto_label) \ + { \ + if (sqlite3_exec((sqlite3 *)db, SQL, NULL, NULL, NULL) != SQLITE_OK) { \ + ___LOCAL_DEBUG("Failed to exec statement: %s", sqlite3_errmsg((sqlite3 *)db)); \ + goto goto_label; \ + } \ } -#define SQLITE_BIND_TEXT(db, stmt, pos, text, error) \ - { \ - if (sqlite3_bind_text(stmt, pos, text, -1, 0) != SQLITE_OK) { \ - ___LOCAL_DEBUG("Failed to bind text %s at pos %d: %s", (const char *)text, pos, \ - sqlite3_errmsg((sqlite3 *)db)); \ - goto error; \ - } \ +#define SQLITE_BIND_TEXT(db, stmt, pos, text, error) \ + { \ + if (sqlite3_bind_text(stmt, pos, text, -1, 0) != SQLITE_OK) { \ + ___LOCAL_DEBUG("Failed to bind text %s at pos %d: %s", (const char *)text, pos, \ + sqlite3_errmsg((sqlite3 *)db)); \ + goto error; \ + } \ } -#define SQLITE_BIND_INT(db, stmt, pos, integer, error) \ - { \ - if (sqlite3_bind_int(stmt, pos, integer) != SQLITE_OK) { \ - ___LOCAL_DEBUG("Failed to bind int %d at pos %d: %s", integer, pos, sqlite3_errmsg((sqlite3 *)db)); \ - goto error; \ - } \ +#define SQLITE_BIND_INT(db, stmt, pos, integer, error) \ + { \ + if (sqlite3_bind_int(stmt, pos, integer) != SQLITE_OK) { \ + ___LOCAL_DEBUG("Failed to bind int %d at pos %d: %s", integer, pos, \ + sqlite3_errmsg((sqlite3 *)db)); \ + goto error; \ + } \ } -#define SQLITE_STEP(db, stmt, code, error) \ - { \ - if (sqlite3_step(stmt) != code) { \ - ___LOCAL_DEBUG("Failed to step: %s", sqlite3_errmsg((sqlite3 *)db)); \ - goto error; \ - } \ +#define SQLITE_STEP(db, stmt, code, error) \ + { \ + if (sqlite3_step(stmt) != code) { \ + ___LOCAL_DEBUG("Failed to step: %s", sqlite3_errmsg((sqlite3 *)db)); \ + goto error; \ + } \ } -#define SQLITE_STEP_OK(db, stmt, error) \ - { \ - int ___sqlite_step_ok_ret_code = sqlite3_step(stmt); \ - if (___sqlite_step_ok_ret_code != SQLITE_OK && ___sqlite_step_ok_ret_code != SQLITE_DONE) { \ - ___LOCAL_DEBUG("Failed to exec step: %s", sqlite3_errmsg((sqlite3 *)db)); \ - goto error; \ - } \ +#define SQLITE_STEP_OK(db, stmt, error) \ + { \ + int ___sqlite_step_ok_ret_code = sqlite3_step(stmt); \ + if (___sqlite_step_ok_ret_code != SQLITE_OK && \ + ___sqlite_step_ok_ret_code != SQLITE_DONE) { \ + ___LOCAL_DEBUG("Failed to exec step: %s", sqlite3_errmsg((sqlite3 *)db)); \ + goto error; \ + } \ } #define SQLITE_STEP_ROW(db, stmt, error) SQLITE_STEP(db, stmt, SQLITE_ROW, error) #define SQLITE_STEP_DONE(db, stmt, error) SQLITE_STEP(db, stmt, SQLITE_DONE, error) -#define SQLITE_DO_ROLLBACK(db) \ - LOG_WARN("DB-DEBUG", "DO ROLLBACK \\o/"); \ +#define SQLITE_DO_ROLLBACK(db) \ + LOG_WARN("DB-DEBUG", "DO ROLLBACK \\o/"); \ sqlite3_exec((sqlite3 *)db, "ROLLBACK TRANSACTION;\n", NULL, NULL, NULL); #define sqlite3_column_chars (const char *)sqlite3_column_text diff --git a/inc/lektor/json.h b/inc/lektor/json.h index b2bc854b..a43d7e69 100644 --- a/inc/lektor/json.h +++ b/inc/lektor/json.h @@ -14,10 +14,11 @@ extern "C" { * mendatory, a simple space is enaugth * - all values are be strings */ -typedef int (*json_parse_callback)(const char *key, /* Json key, a string */ - const char *value, /* Json value, a string */ - int completed, /* 1 when all values in the object has been parsed */ - void *user /* The user pointer from the parse function */ +typedef int (*json_parse_callback)( + const char *key, /* Json key, a string */ + const char *value, /* Json value, a string */ + int completed, /* 1 when all values in the object has been parsed */ + void *user /* The user pointer from the parse function */ ); /* Parse only one level of json, simple but only what we need for lektor. The diff --git a/inc/lektor/queue.h b/inc/lektor/queue.h index 63342d02..96386fac 100644 --- a/inc/lektor/queue.h +++ b/inc/lektor/queue.h @@ -51,12 +51,13 @@ typedef enum { LKT_EVENT_TOUCH_KARA = (1 << 13), // size_t, kara id } LKT_EVENT_TYPE; -#define LKT_EVENT_PLAY \ - (LKT_EVENT_PLAY_POS | LKT_EVENT_PLAY_FILE | LKT_EVENT_PLAY_NEXT | LKT_EVENT_PLAY_PREV | LKT_EVENT_PLAY_TOGGLE | \ - LKT_EVENT_SKIP_CURRENT) +#define LKT_EVENT_PLAY \ + (LKT_EVENT_PLAY_POS | LKT_EVENT_PLAY_FILE | LKT_EVENT_PLAY_NEXT | LKT_EVENT_PLAY_PREV | \ + LKT_EVENT_PLAY_TOGGLE | LKT_EVENT_SKIP_CURRENT) #define LKT_EVENT_PROP (LKT_EVENT_PROP_VOL | LKT_EVENT_PROP_DUR | LKT_EVENT_PROP_TIME) -#define LKT_EVENT_UPDATE \ - (LKT_EVENT_DB_UPDATING | LKT_EVENT_DB_UPDATE_TICK | LKT_EVENT_DB_UPDATE_TOTAL | LKT_EVENT_TOUCH_KARA) +#define LKT_EVENT_UPDATE \ + (LKT_EVENT_DB_UPDATING | LKT_EVENT_DB_UPDATE_TICK | LKT_EVENT_DB_UPDATE_TOTAL | \ + LKT_EVENT_TOUCH_KARA) typedef struct { unsigned int type; diff --git a/inc/lektor/reg.h b/inc/lektor/reg.h index 95a9ac30..3ef34a73 100644 --- a/inc/lektor/reg.h +++ b/inc/lektor/reg.h @@ -48,8 +48,8 @@ struct lkt_module { /* Import a reg */ #define REG_DECLARE(reg) extern struct module_reg *reg; -#define REG_IMPORT(reg, as) \ - REG_DECLARE(reg) \ +#define REG_IMPORT(reg, as) \ + REG_DECLARE(reg) \ static struct module_reg *as = reg; /* The server register */ @@ -60,7 +60,7 @@ struct lkt_module { * - Use the MOD_CALL macro to call a function that takes arguments * - Use the MOD_PROC macro to call a procedure, i.e. a functions * that doesn't take arguments */ -#define MOD_CALL(module, name, ...) \ +#define MOD_CALL(module, name, ...) \ reg_call((module).reg, name, 1 + (GET_VA_COUNT(__VA_ARGS__)), &(module).data, __VA_ARGS__) #define MOD_PROC(module, name) reg_call((module).reg, name, 1, &(module).data) int reg_call(struct module_reg *reg, const char *name, int count, ...); diff --git a/src/base/cmd.c b/src/base/cmd.c index df6a62f4..a481504d 100644 --- a/src/base/cmd.c +++ b/src/base/cmd.c @@ -123,8 +123,8 @@ cmd_parse(struct cmd_opt *opts, int argc, const char **argv) struct cmd_opt *it = opts; cmd_callback call[2] = { NULL, NULL }; - if (argc == 0 || *argv == NULL || !strcasecmp(argv[0], "help") || !strcasecmp(argv[0], "--help") || - !strcasecmp(argv[0], "-help")) + if (argc == 0 || *argv == NULL || !strcasecmp(argv[0], "help") || + !strcasecmp(argv[0], "--help") || !strcasecmp(argv[0], "-help")) goto help; /* Find the command */ diff --git a/src/base/commands.c b/src/base/commands.c index 2e230424..758d52d7 100644 --- a/src/base/commands.c +++ b/src/base/commands.c @@ -58,7 +58,8 @@ command_import(struct lkt_state *srv, size_t c, char UNUSED *argv[LKT_MESSAGE_AR } bool -command_rescan(struct lkt_state *srv, size_t c, char UNUSED *argv[LKT_MESSAGE_ARGS_MAX], int UNUSED forced) +command_rescan(struct lkt_state *srv, size_t c, char UNUSED *argv[LKT_MESSAGE_ARGS_MAX], + int UNUSED forced) { RETURN_UNLESS(lkt_client_auth(srv, c, false), "Failed to authentificate user", false); srv->mpd_idle_events |= MPD_IDLE_UPDATE; @@ -107,8 +108,8 @@ command_currentsong(struct lkt_state *srv, size_t c, char UNUSED *args[LKT_MESSA "Type: %s%d\n" "Category: %s\n" "Language: %s\n", - kara.song_name, kara.author_name, kara.source_name, kara.song_type, kara.song_number, - kara.category, kara.language); + kara.song_name, kara.author_name, kara.source_name, kara.song_type, + kara.song_number, kara.category, kara.language); lkt_state_send(srv, c, out); return true; } @@ -136,8 +137,9 @@ command_stats(struct lkt_state *srv, size_t c, char UNUSED *args[LKT_MESSAGE_ARG "artists: %d\n" /* Number of authors */ "albums: %d\n" /* Number of source names */ "songs: %d\n", /* Number of songs */ - srv->is_updating, srv->update_current, srv->update_total, playtime, queue_playtime, - (uint64_t)ts_update, (uint64_t)(time(NULL) - srv->start_date), artists, albums, songs); + srv->is_updating, srv->update_current, srv->update_total, playtime, + queue_playtime, (uint64_t)ts_update, + (uint64_t)(time(NULL) - srv->start_date), artists, albums, songs); lkt_state_send(srv, c, out); return true; } @@ -171,8 +173,9 @@ command_status(struct lkt_state *srv, size_t c, char UNUSED *args[LKT_MESSAGE_AR "duration: %d\n" "updating_db: %d\n" "songid: %d\n", - queue_state.volume, queue_state.repeat, queue_state.random, queue_state.single, - queue_state.consume, play_state, queue_state.current < 0 ? -1 : queue_state.current - 1, + queue_state.volume, queue_state.repeat, queue_state.random, + queue_state.single, queue_state.consume, play_state, + queue_state.current < 0 ? -1 : queue_state.current - 1, queue_state.length, elapsed, duration, update_job, songid); lkt_state_send(srv, c, out); return true; @@ -227,7 +230,8 @@ command_pause(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) /* Set play/unpause or the pause */ else if (queue.paused != state) { - RETURN_UNLESS(database_queue_set_paused(srv->db, state), "Oupsi, can't get queue state", false); + RETURN_UNLESS(database_queue_set_paused(srv->db, state), "Oupsi, can't get queue state", + false); srv->mpd_idle_events |= MPD_IDLE_PLAYER; return !MOD_PROC(srv->window_mod, "toggle"); } @@ -262,7 +266,8 @@ __play_that_file(struct lkt_state *win, int pos) char filepath[PATH_MAX]; RETURN_UNLESS(pos, "Invalid argument", false); RETURN_UNLESS(database_queue_play(win->db, pos), "DB error", false); - RETURN_UNLESS(database_queue_get_current_file(win->db, filepath), "Can't get current kara", false); + RETURN_UNLESS(database_queue_get_current_file(win->db, filepath), "Can't get current kara", + false); RETURN_IF(MOD_CALL(win->window_mod, "load", filepath), "Can't load file", false); RETURN_IF(MOD_CALL(win->window_mod, "set_paused", 0), "Can't unset pause", false); LOG_DEBUG("COMMAND", "Playing queue at index %d, file %s", pos, filepath); @@ -285,7 +290,8 @@ command_play(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) /* If position is after the queue, don't do anything */ RETURN_UNLESS(database_queue_state(srv->db, &queue_state), "Can't get playback status", false); if (queue_state.length < pos) { - LOG_INFO("COMMAND", "Don't perform play command, queue is empty or position is after queue length"); + LOG_INFO("COMMAND", + "Don't perform play command, queue is empty or position is after queue length"); return false; } @@ -430,7 +436,8 @@ command_del(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) database_queue_state(srv->db, &queue); /* At worst, -1 != -2 */ - RETURN_IF(pos == (long)queue.current && !__skip_current(srv), "Failed to skip current kara", false); + RETURN_IF(pos == (long)queue.current && !__skip_current(srv), "Failed to skip current kara", + false); srv->mpd_idle_events |= MPD_IDLE_PLAYLIST; return database_queue_del_pos(srv->db, pos); @@ -482,7 +489,9 @@ __swap_positions(struct lkt_state *srv, int from, int to) struct lkt_queue_state queue = { .current = -1 }; database_queue_state(srv->db, &queue); - int new_current = (((long)queue.current) == to) ? from : (((long)queue.current) == from) ? to : -1; + int new_current = (((long)queue.current) == to) ? from + : (((long)queue.current) == from) ? to + : -1; srv->mpd_idle_events |= MPD_IDLE_PLAYLIST; bool sta = database_queue_swap(srv->db, from, to); @@ -590,7 +599,8 @@ 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; - struct lkt_message *out = lkt_message_new_fmt("%*d: %*d %s\n", pos_len, pos, id_len, id, sql_row); + struct lkt_message *out = + lkt_message_new_fmt("%*d: %*d %s\n", pos_len, pos, id_len, id, sql_row); lkt_state_send(args->srv, args->c, out); return true; } @@ -645,8 +655,9 @@ command_findid(struct lkt_state *srv, size_t c, char *id_str) "Language: %s\n" "Duration: %d:%02d:%02d\n"; struct lkt_message *out; - out = lkt_message_new_fmt(send_format, kara.song_name, kara.author_name, kara.source_name, kara.song_type, - kara.song_number, kara.category, kara.language, h, m, s); + out = lkt_message_new_fmt(send_format, kara.song_name, kara.author_name, kara.source_name, + kara.song_type, kara.song_number, kara.category, kara.language, h, m, + s); lkt_state_send(srv, c, out); return true; } @@ -676,8 +687,9 @@ command_find(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX], database_search_init_func init) { int 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)); + 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_set_uri(search, &find_uri); database_search_set_name(search, args[0]); @@ -690,8 +702,10 @@ command_find(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX], /* With an URI */ if (!lkt_uri_from(&find_uri, args)) { /* Try from idx 1, in case of playlust searches */ - LOG_DEBUG("COMMAND", "URI may not starts at idx 0, may be because of playlist search. At idx 0, value was '%s'", - args[0]); + LOG_DEBUG( + "COMMAND", + "URI may not starts at idx 0, may be because of playlist search. At idx 0, value was '%s'", + args[0]); RETURN_UNLESS(lkt_uri_from(&find_uri, &args[1]), "Failed to create the uri", false); } @@ -703,16 +717,19 @@ command_find(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX], bool command_plt_list(struct lkt_state *srv, size_t c, char UNUSED *args[LKT_MESSAGE_ARGS_MAX], int cont) { - struct lkt_search *search = database_search_new(srv, c, cont, FUNCTION_POINTER(lkt_callback_send_list_plts)); - RETURN_UNLESS(database_search_listplaylist_init(srv->db, search), "Failed to init search", false); + struct lkt_search *search = + database_search_new(srv, c, cont, FUNCTION_POINTER(lkt_callback_send_list_plts)); + RETURN_UNLESS(database_search_listplaylist_init(srv->db, search), "Failed to init search", + false); return __iter_search(search); } bool command_plt_ctx(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX], int cont) { - struct lkt_uri null_uri = { .type = URI_NULL }; - struct lkt_search *search = database_search_new(srv, c, cont, FUNCTION_POINTER(lkt_callback_send_row_v2)); + struct lkt_uri null_uri = { .type = URI_NULL }; + struct lkt_search *search = + database_search_new(srv, c, cont, FUNCTION_POINTER(lkt_callback_send_row_v2)); database_search_set_uri(search, &null_uri); database_search_set_name(search, args[0]); @@ -742,21 +759,13 @@ command_set_playback_option(struct lkt_state *srv, size_t UNUSED c, LKT_PLAYBACK } switch (opt) { - case LKT_PLAYBACK_OPTION_RANDOM: - ret = database_config_queue(srv->db, "random", val); - break; + 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_SINGLE: ret = database_config_queue(srv->db, "single", val); break; - case LKT_PLAYBACK_OPTION_CONSUME: - ret = database_config_queue(srv->db, "consume", val); - break; + case LKT_PLAYBACK_OPTION_CONSUME: ret = database_config_queue(srv->db, "consume", val); break; - case LKT_PLAYBACK_OPTION_REPEAT: - ret = database_config_queue(srv->db, "repeat", val); - break; + case LKT_PLAYBACK_OPTION_REPEAT: ret = database_config_queue(srv->db, "repeat", val); break; case LKT_PLAYBACK_OPTION_VOLUME: ret = database_config_queue(srv->db, "volume", val); @@ -766,8 +775,7 @@ command_set_playback_option(struct lkt_state *srv, size_t UNUSED c, LKT_PLAYBACK break; case LKT_PLAYBACK_OPTION_NONE: - default: - break; + default: break; } if (ret) @@ -781,8 +789,10 @@ command_set_pos(struct lkt_state *srv, int index) { char filepath[PATH_MAX]; srv->mpd_idle_events |= MPD_IDLE_PLAYLIST; - RETURN_UNLESS(database_queue_set_current_index(srv->db, index), "Failed to set position in queue", false); - RETURN_UNLESS(database_queue_get_current_file(srv->db, filepath), "Failed to get filename", false); + RETURN_UNLESS(database_queue_set_current_index(srv->db, index), + "Failed to set position in queue", false); + RETURN_UNLESS(database_queue_get_current_file(srv->db, filepath), "Failed to get filename", + false); return !MOD_CALL(srv->window_mod, "load", filepath); } @@ -817,7 +827,8 @@ 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", false); + RETURN_UNLESS(database_get_kara_position(srv->db, 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); @@ -902,7 +913,8 @@ bool command_plt_rename(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) { RETURN_UNLESS(args && args[0] && args[1], "Invalid argument", false); - RETURN_UNLESS(database_plt_rename(srv->db, args[0], args[1]), "Failed to rename playlist", false); + RETURN_UNLESS(database_plt_rename(srv->db, args[0], args[1]), "Failed to rename playlist", + false); srv->mpd_idle_events |= MPD_IDLE_STORED_PLAYLIST; return true; } @@ -1103,7 +1115,8 @@ command_sticker_set(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS STRTOL(value, argv[3], endptr, err2); RETURN_IF(err1 || err2, "STRTOL failed", false); LOG_INFO("COMMAND", "Client %ld is using the sticker set command", c); - RETURN_UNLESS(database_sticker_set(srv->db, argv[0], argv[2], uri, value), "Can't get sticker", false); + RETURN_UNLESS(database_sticker_set(srv->db, argv[0], argv[2], uri, value), "Can't get sticker", + false); srv->mpd_idle_events |= MPD_IDLE_STICKER; return true; } @@ -1134,8 +1147,8 @@ command_sticker_get(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS } /* list {type} {uri} {name} `op` {value} command */ - else if (argv[0] != NULL && argv[1] != NULL && argv[2] != NULL && argv[3] != NULL && argv[4] != NULL && - argv[5] == NULL) { + else if (argv[0] != NULL && argv[1] != NULL && argv[2] != NULL && argv[3] != NULL && + argv[4] != NULL && argv[5] == NULL) { stkr.name = argv[2]; stkr.uri = atoi(argv[1]); stkr.op = argv[3][0]; diff --git a/src/base/common.c b/src/base/common.c index 814561f1..30595bb7 100644 --- a/src/base/common.c +++ b/src/base/common.c @@ -52,14 +52,11 @@ lkt_set_log_level(LOG_LEVEL lvl) } LOG_LEVEL -lkt_get_log_level(void) -{ - return ___log_level; -} +lkt_get_log_level(void) { return ___log_level; } void -___lkt_log(LOG_LEVEL level, const char *section, const char *func, const char *file, uint64_t line_number, - const char *format, ...) +___lkt_log(LOG_LEVEL level, const char *section, const char *func, const char *file, + uint64_t line_number, const char *format, ...) { assert(level != ___LAST_UNUSED_LOG_LEVEL); @@ -83,9 +80,13 @@ ___lkt_log(LOG_LEVEL level, const char *section, const char *func, const char *f if (level > ___log_level) return; - char c_level = level == LOG_LEVEL_ERROR ? '!' : level == LOG_LEVEL_WARN ? '*' : level == LOG_LEVEL_INFO ? '.' : ' '; - ssize_t count = safe_snprintf(line, LKT_MESSAGE_MAX, " %c [%02d:%02d:%02d] %-10s %s(%s+%ld): %s\n", c_level, hour, - min, sec, section, func, file, line_number, format); + char c_level = level == LOG_LEVEL_ERROR ? '!' + : level == LOG_LEVEL_WARN ? '*' + : level == LOG_LEVEL_INFO ? '.' + : ' '; + ssize_t count = + safe_snprintf(line, LKT_MESSAGE_MAX, " %c [%02d:%02d:%02d] %-10s %s(%s+%ld): %s\n", c_level, + hour, min, sec, section, func, file, line_number, format); /* Check for overflow */ if (count >= LKT_MESSAGE_MAX - 1) { line[LKT_MESSAGE_MAX - 1] = '\0'; @@ -114,8 +115,8 @@ ___lkt_print(const char *section, const char *format, ...) sec = timeval->tm_sec; } - ssize_t count = - safe_snprintf(line, LKT_MESSAGE_MAX, " [%02d:%02d:%02d] %-10s %s\n", hour, min, sec, section, format); + ssize_t count = safe_snprintf(line, LKT_MESSAGE_MAX, " [%02d:%02d:%02d] %-10s %s\n", hour, + min, sec, section, format); /* Check for overflow */ if (count >= LKT_MESSAGE_MAX - 1) { line[LKT_MESSAGE_MAX - 1] = '\0'; @@ -172,7 +173,8 @@ is_utf8(const char *string) const unsigned char *bytes = (const unsigned char *)string; while (*bytes) { /* ASCII */ - if (bytes[0] == 0x09 || bytes[0] == 0x0A || bytes[0] == 0x0D || (0x20 <= bytes[0] && bytes[0] <= 0x7E)) { + if (bytes[0] == 0x09 || bytes[0] == 0x0A || bytes[0] == 0x0D || + (0x20 <= bytes[0] && bytes[0] <= 0x7E)) { bytes += 1; continue; } @@ -186,7 +188,8 @@ is_utf8(const char *string) if ((bytes[0] == 0xE0 && (0xA0 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF)) || /* excluding overlongs */ (((0xE1 <= bytes[0] && bytes[0] <= 0xEC) || bytes[0] == 0xEE || bytes[0] == 0xEF) && - (0x80 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF)) || /* straight 3-byte */ + (0x80 <= bytes[1] && bytes[1] <= 0xBF) && + (0x80 <= bytes[2] && bytes[2] <= 0xBF)) || /* straight 3-byte */ (bytes[0] == 0xED && (0x80 <= bytes[1] && bytes[1] <= 0x9F) && (0x80 <= bytes[2] && bytes[2] <= 0xBF))) { /* excluding surrogates */ bytes += 3; @@ -197,8 +200,10 @@ is_utf8(const char *string) (0x90 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF)) || ((0xF1 <= bytes[0] && bytes[0] <= 0xF3) && (0x80 <= bytes[1] && bytes[1] <= 0xBF) && - (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF)) || /* planes 4-15 */ - (bytes[0] == 0xF4 && (0x80 <= bytes[1] && bytes[1] <= 0x8F) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && + (0x80 <= bytes[2] && bytes[2] <= 0xBF) && + (0x80 <= bytes[3] && bytes[3] <= 0xBF)) || /* planes 4-15 */ + (bytes[0] == 0xF4 && (0x80 <= bytes[1] && bytes[1] <= 0x8F) && + (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF))) { /* plane 16 */ bytes += 4; continue; @@ -239,10 +244,10 @@ safe_free(void **ptr) } } -#define ___internal_vsnprintf(dest, len, format, ap) \ - int ret = vsnprintf(dest, len, format, ap); \ - dest[len - 1] = '\0'; \ - va_end(ap); \ +#define ___internal_vsnprintf(dest, len, format, ap) \ + int ret = vsnprintf(dest, len, format, ap); \ + dest[len - 1] = '\0'; \ + va_end(ap); \ return ret; int diff --git a/src/base/config.c b/src/base/config.c index 0c3a74cf..b715c6b1 100644 --- a/src/base/config.c +++ b/src/base/config.c @@ -29,8 +29,10 @@ skip(char *s) static int handler(lkt_db *user, const char *section, const char *name, const char *value) { - RETURN_UNLESS(section && name && value, "I can't complete the database with incomplete lines", 1); - RETURN_UNLESS(database_config_set(user, section, name, value), "Failed to update the database", 1); + RETURN_UNLESS(section && name && value, "I can't complete the database with incomplete lines", + 1); + RETURN_UNLESS(database_config_set(user, section, name, value), "Failed to update the database", + 1); return 0; } @@ -127,8 +129,8 @@ ini_parse(const char *path, lkt_db *db) if (section[0]) { if (handler(db, section, name, value)) { error = 1; - LOG_ERROR("PARSER", "Failed to '[handle] %s, %s{:,=}%s' at line '%d'", section, name, value, - linenum); + LOG_ERROR("PARSER", "Failed to '[handle] %s, %s{:,=}%s' at line '%d'", + section, name, value, linenum); } } else __set_log_level(name, value); @@ -151,7 +153,9 @@ ini_parse(const char *path, lkt_db *db) void config_default_file(char *dest, size_t len) { -#pragma message(TODO "Use ~/.config/baka instead of ~/.config/lektor for all applications (lektor, amadeus, etc)") +#pragma message( \ + TODO \ + "Use ~/.config/baka instead of ~/.config/lektor for all applications (lektor, amadeus, etc)") /* First try the XDG_CONFIG_HOME variable, else the default location HOME/.config. */ memset(dest, 0, len * sizeof(char)); char *home = getenv("XDG_CONFIG_HOME"); @@ -268,7 +272,8 @@ int config_open(lkt_db *db) { char conf_file[PATH_MAX]; - RETURN_IF(config_detect_file(conf_file, PATH_MAX), "Error while searching for a config file", 1); + RETURN_IF(config_detect_file(conf_file, PATH_MAX), "Error while searching for a config file", + 1); RETURN_IF(config_new(db, conf_file), "Failed to read configuration file", 1); return 0; } diff --git a/src/base/json.c b/src/base/json.c index 783dfe3f..cf69ecd9 100644 --- a/src/base/json.c +++ b/src/base/json.c @@ -10,57 +10,57 @@ #define __SKIP_JSON(str) (str = &str[strspn(str, __JSON_SPACE)]) -#define __NEXT_JSON(str, len, dest, tmp, tmp_len) \ - { \ - int is_paren = 0; \ - if (str[0] == __JSON_SEP) { \ - ++str; \ - const char *begin = str, *end; \ - for (;;) { \ - end = strchr(begin, __JSON_SEP); \ - if (*(end - 1) == '\\') { \ - begin = end + 1; \ - continue; \ - } \ - break; \ - } \ - len = (end - str); \ - is_paren = 1; \ - } else \ - len = strcspn(str, __JSON_SPACE __JSON_END); \ - if (level == asked_level) { \ - size_t local_len = LKT_LINE_MAX - 1 < len ? LKT_LINE_MAX - 1 : len; \ - strncpy(dest, str, local_len); \ - __decode_json(dest, local_len); \ - } \ - str += len; \ - if (is_paren) { \ - ++str; \ - } \ +#define __NEXT_JSON(str, len, dest, tmp, tmp_len) \ + { \ + int is_paren = 0; \ + if (str[0] == __JSON_SEP) { \ + ++str; \ + const char *begin = str, *end; \ + for (;;) { \ + end = strchr(begin, __JSON_SEP); \ + if (*(end - 1) == '\\') { \ + begin = end + 1; \ + continue; \ + } \ + break; \ + } \ + len = (end - str); \ + is_paren = 1; \ + } else \ + len = strcspn(str, __JSON_SPACE __JSON_END); \ + if (level == asked_level) { \ + size_t local_len = LKT_LINE_MAX - 1 < len ? LKT_LINE_MAX - 1 : len; \ + strncpy(dest, str, local_len); \ + __decode_json(dest, local_len); \ + } \ + str += len; \ + if (is_paren) { \ + ++str; \ + } \ } -#define __SKIP_NEXT_JSON(str, len) \ - { \ - int is_paren = 0; \ - if (str[0] == __JSON_SEP) { \ - ++str; \ - const char *begin = str, *end; \ - for (;;) { \ - end = strchr(begin, __JSON_SEP); \ - if (*(end - 1) == '\\') { \ - begin = end + 1; \ - continue; \ - } \ - break; \ - } \ - len = (end - str); \ - is_paren = 1; \ - } else \ - len = strcspn(str, __JSON_SPACE __JSON_BEGIN __JSON_END); \ - str += len; \ - if (is_paren) { \ - ++str; \ - } \ +#define __SKIP_NEXT_JSON(str, len) \ + { \ + int is_paren = 0; \ + if (str[0] == __JSON_SEP) { \ + ++str; \ + const char *begin = str, *end; \ + for (;;) { \ + end = strchr(begin, __JSON_SEP); \ + if (*(end - 1) == '\\') { \ + begin = end + 1; \ + continue; \ + } \ + break; \ + } \ + len = (end - str); \ + is_paren = 1; \ + } else \ + len = strcspn(str, __JSON_SPACE __JSON_BEGIN __JSON_END); \ + str += len; \ + if (is_paren) { \ + ++str; \ + } \ } static inline int @@ -145,11 +145,11 @@ __decode_json(char *string, size_t len) while ((offset = strchr(offset, '\\'))) { switch (offset[1]) { -#define __case_single(c, sub) \ - case c: \ - size = 2; \ - written = 1; \ - offset[0] = sub; \ +#define __case_single(c, sub) \ + case c: \ + size = 2; \ + written = 1; \ + offset[0] = sub; \ break; __case_single('"', '\"'); __case_single('\\', '\\'); diff --git a/src/base/launch.c b/src/base/launch.c index adaf41d0..4fb851ae 100644 --- a/src/base/launch.c +++ b/src/base/launch.c @@ -138,20 +138,23 @@ launch_ext_klkt(va_list UNUSED *___args) errno = 0; safe_snprintf(try_name, LKT_LINE_MAX, "%s/klkt", current_dir); LOG_DEBUG("INIT", "Try to launch klkt with file %s", try_name); - GOTO_UNLESS(posix_spawn(&___klkt_pid, try_name, &action, NULL, args, environ), "Klkt launched!", end); + GOTO_UNLESS(posix_spawn(&___klkt_pid, try_name, &action, NULL, args, environ), "Klkt launched!", + end); /* AppImage try */ safe_snprintf(try_name, LKT_LINE_MAX, "%s/klkt-" LKT_ARCH ".AppImage", current_dir); errno = 0; args[0] = (char *)basename_appimage_arch; LOG_DEBUG("INIT", "Try to launch klkt with file %s", try_name); - GOTO_UNLESS(posix_spawn(&___klkt_pid, try_name, &action, NULL, args, environ), "Klkt launched!", end); + GOTO_UNLESS(posix_spawn(&___klkt_pid, try_name, &action, NULL, args, environ), "Klkt launched!", + end); safe_snprintf(try_name, LKT_LINE_MAX, "%s/klkt.AppImage", current_dir); errno = 0; args[0] = (char *)basename_appimage_no_arch; LOG_DEBUG("INIT", "Try to launch klkt with file %s", try_name); - GOTO_UNLESS(posix_spawn(&___klkt_pid, try_name, &action, NULL, args, environ), "Klkt launched!", end); + GOTO_UNLESS(posix_spawn(&___klkt_pid, try_name, &action, NULL, args, environ), "Klkt launched!", + end); /* Oupsi */ error: diff --git a/src/base/reg.c b/src/base/reg.c index a366516d..0d5b4b2b 100644 --- a/src/base/reg.c +++ b/src/base/reg.c @@ -78,8 +78,8 @@ reg_import(const char *mod, struct module_reg **ret, void **handle) *ret = __reg_get(__reg__, mod); if (!*ret) { LOG_INFO("REG", - "Not found in reg '" REG_EXPORT_NAME "', using the dlsym to find reg '" REG_EXPORT_NAME - "' in file %s", + "Not found in reg '" REG_EXPORT_NAME + "', using the dlsym to find reg '" REG_EXPORT_NAME "' in file %s", mod); } } diff --git a/src/base/uri.c b/src/base/uri.c index cc8b9b15..1d73bec1 100644 --- a/src/base/uri.c +++ b/src/base/uri.c @@ -128,21 +128,11 @@ static inline int __lkt_to_str(struct lkt_uri *uri, char *ret, size_t len) { switch (uri->type) { - case URI_ID: - safe_snprintf(ret, len, "id=%s", (char *)uri->value); - break; - case URI_TYPE: - safe_snprintf(ret, len, "type=%s", (char *)uri->value); - break; - 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; + case URI_ID: safe_snprintf(ret, len, "id=%s", (char *)uri->value); break; + case URI_TYPE: safe_snprintf(ret, len, "type=%s", (char *)uri->value); break; + 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: LOG_WARN("URI", "type %d may not be supported by kurisu, " diff --git a/src/database/cache.c b/src/database/cache.c index 118c4fed..d458f8c8 100644 --- a/src/database/cache.c +++ b/src/database/cache.c @@ -131,65 +131,67 @@ database_cache_kara(lkt_db *db, int id) uint64_t duration_uint = (uint64_t)duration; if (!database_set_kara_duration_id(db, id, duration_uint)) - LOG_ERROR("CACHE", "Failed to cache duration for '%s' kara %d to %ld", filepath, id, duration_uint); + LOG_ERROR("CACHE", "Failed to cache duration for '%s' kara %d to %ld", filepath, id, + duration_uint); - LOG_INFO("CACHE", "Cached mtime %ld and duration %ld for '%s' kara %d", mtime, duration_uint, filepath, id); + LOG_INFO("CACHE", "Cached mtime %ld and duration %ld for '%s' kara %d", mtime, duration_uint, + filepath, id); } -#define ___cache_set_from_id(what) \ - PRIVATE_FUNCTION bool database_set_kara_##what##_id(lkt_db *db, int id, uint64_t what) \ - { \ - bool ret_code = false; \ - 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, 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, what, error); \ - SQLITE_BIND_INT(db, stmt, 2, id, error); \ - SQLITE_STEP_OK(db, stmt, error); \ - ret_code = true; \ - error: \ - sqlite3_finalize(stmt); \ - return ret_code; \ +#define ___cache_set_from_id(what) \ + PRIVATE_FUNCTION bool database_set_kara_##what##_id(lkt_db *db, int id, uint64_t what) \ + { \ + bool ret_code = false; \ + 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, 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, what, error); \ + SQLITE_BIND_INT(db, stmt, 2, id, error); \ + SQLITE_STEP_OK(db, stmt, error); \ + ret_code = true; \ + error: \ + sqlite3_finalize(stmt); \ + return ret_code; \ } -#define ___cache_get_from_id(what) \ - bool database_get_kara_##what##_id(lkt_db *db, int id, uint64_t *what) \ - { \ - bool ret_code = false; \ - bool retry_once = false; \ - sqlite3_stmt *stmt = NULL; \ - retry: \ - *what = 0; \ - 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 = sqlite3_column_int64(stmt, 0); \ - if ((*what) == 0 && !retry_once) { \ - database_cache_kara(db, id); \ - retry_once = true; \ - goto retry; \ - } \ - ret_code = true; \ - error: \ - sqlite3_finalize(stmt); \ - return ret_code; \ +#define ___cache_get_from_id(what) \ + bool database_get_kara_##what##_id(lkt_db *db, int id, uint64_t *what) \ + { \ + bool ret_code = false; \ + bool retry_once = false; \ + sqlite3_stmt *stmt = NULL; \ + retry: \ + *what = 0; \ + 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 = sqlite3_column_int64(stmt, 0); \ + if ((*what) == 0 && !retry_once) { \ + database_cache_kara(db, id); \ + retry_once = true; \ + goto retry; \ + } \ + ret_code = true; \ + error: \ + sqlite3_finalize(stmt); \ + return ret_code; \ } /* Define get operation on the cache */ -#define ___cache_get_from_path(what) \ - bool database_get_kara_##what##_path(lkt_db *db, char filepath[PATH_MAX], uint64_t *what) \ - { \ - int id = 0; \ - if (!database_get_kara_id(db, filepath, &id)) { \ - LOG_ERROR("CACHE", "Can't find kara with path '%s'", filepath); \ - return false; \ - } \ - return database_get_kara_##what##_id(db, id, what); \ +#define ___cache_get_from_path(what) \ + bool database_get_kara_##what##_path(lkt_db *db, char filepath[PATH_MAX], uint64_t *what) \ + { \ + int id = 0; \ + if (!database_get_kara_id(db, filepath, &id)) { \ + LOG_ERROR("CACHE", "Can't find kara with path '%s'", filepath); \ + return false; \ + } \ + return database_get_kara_##what##_id(db, id, what); \ } ___cache_set_from_id(mtime); diff --git a/src/database/config.c b/src/database/config.c index 7887e926..82c27ad3 100644 --- a/src/database/config.c +++ b/src/database/config.c @@ -58,7 +58,8 @@ error: } bool -database_config_get_text_nospace(lkt_db *db, const char *section, const char *key, char *value, size_t len) +database_config_get_text_nospace(lkt_db *db, const char *section, const char *key, char *value, + size_t len) { static const char *SQL_STMT = "SELECT REPLACE(value, ' ', '')" " FROM config" @@ -151,18 +152,18 @@ database_validate_conf(lkt_db *db) const char *section; #define section(_sct) section = _sct; #define value_opt(name, value) -#define value(name, value) \ - if (!database_config_exists(db, section, name)) { \ - LOG_ERROR("CONFIG", "Missing option \"" name "\" in section \"%s\"", section); \ - return false; \ - } else if (STR_MATCH("externals", section)) { \ - char file[PATH_MAX]; \ - if (!database_config_get_text(db, section, name, file, PATH_MAX)) { \ - if (access(file, F_OK) != 0) { \ - LOG_ERROR("CONFIG", "File %s don't exists, invalid [%s/%s]", file, section, name); \ - return false; \ - } \ - } \ +#define value(name, value) \ + if (!database_config_exists(db, section, name)) { \ + LOG_ERROR("CONFIG", "Missing option \"" name "\" in section \"%s\"", section); \ + return false; \ + } else if (STR_MATCH("externals", section)) { \ + char file[PATH_MAX]; \ + if (!database_config_get_text(db, section, name, file, PATH_MAX)) { \ + if (access(file, F_OK) != 0) { \ + LOG_ERROR("CONFIG", "File %s don't exists, invalid [%s/%s]", file, section, name); \ + return false; \ + } \ + } \ } #include <lektor/config.def> #undef section @@ -182,10 +183,11 @@ database_config_dump(lkt_db *db, FILE *f) while (sqlite3_step(stmt) == SQLITE_ROW) { if (sqlite3_column_type(stmt, 0) == SQLITE_NULL) { - fprintf(f, "NO SECTION => %s => %s\n", sqlite3_column_chars(stmt, 1), sqlite3_column_chars(stmt, 2)); - } else { - fprintf(f, "%s => %s => %s\n", sqlite3_column_chars(stmt, 0), sqlite3_column_chars(stmt, 1), + fprintf(f, "NO SECTION => %s => %s\n", sqlite3_column_chars(stmt, 1), sqlite3_column_chars(stmt, 2)); + } else { + fprintf(f, "%s => %s => %s\n", sqlite3_column_chars(stmt, 0), + sqlite3_column_chars(stmt, 1), sqlite3_column_chars(stmt, 2)); } } diff --git a/src/database/find.c b/src/database/find.c index 192b7c3d..4557eae2 100644 --- a/src/database/find.c +++ b/src/database/find.c @@ -76,7 +76,7 @@ struct lkt_search * database_search_new(struct lkt_state *srv, size_t c, int cont, function_ptr call) { /* Minus 3 for control messages. If no server do it `X` by `X`. */ - size_t msg_count = srv != NULL ? lkt_remaining_msg(srv, c) - 3 : LKT_DB_DEFAULT_ITERATION_MAX; + 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, @@ -131,17 +131,18 @@ bool database_search_database_init(lkt_db *db, struct lkt_search *ret) { RETURN_UNLESS(ret, "Exit because return pointer is NULL", false); - static const char *SQL_STMT_TEMPLATE = "WITH content AS (" - " SELECT kara.id AS id, string, LENGTH(CAST(kara.id AS TEXT)) AS len" - " FROM kara WHERE %s LIKE ?)" - "SELECT id, string, (SELECT MAX(len) FROM content)" - "FROM content LIMIT %d OFFSET %d;"; + static const char *SQL_STMT_TEMPLATE = + "WITH content AS (" + " SELECT kara.id AS id, string, LENGTH(CAST(kara.id AS TEXT)) AS len" + " FROM kara WHERE %s LIKE ?)" + "SELECT id, string, (SELECT MAX(len) FROM content)" + "FROM content LIMIT %d OFFSET %d;"; char SQL_STMT[LKT_MAX_SQLITE_STATEMENT]; ret->type = lkt_search_database; /* Search part */ - safe_snprintf(SQL_STMT, LKT_MAX_SQLITE_STATEMENT, SQL_STMT_TEMPLATE, ret->ka_uri.column_name, ret->msg_count, - ret->continuation); + safe_snprintf(SQL_STMT, LKT_MAX_SQLITE_STATEMENT, SQL_STMT_TEMPLATE, ret->ka_uri.column_name, + ret->msg_count, ret->continuation); SQLITE_PREPARE(db, ret->stmt, SQL_STMT, error); if (!ret->ka_uri.is_int) { SQLITE_BIND_TEXT(db, ret->stmt, 1, ret->ka_uri.value, error); @@ -163,15 +164,16 @@ database_search_playlist_init(lkt_db *db, struct lkt_search *ret) { /* Sql queries definitions */ char SQL_STMT[LKT_MAX_SQLITE_STATEMENT]; - static const char *SQL_TEMPLATE = "WITH content AS (" - " SELECT kara.id AS id, string, LENGTH(CAST(kara.id AS TEXT)) AS len" - " FROM kara_playlist" - " JOIN playlist ON playlist.id = playlist_id" - " AND playlist.name COLLATE nocase = ?" - " JOIN kara ON kara.id = kara_id" - " AND %s LIKE ?) " - "SELECT id, string, (SELECT MAX(len) FROM content) " - "FROM content LIMIT %d OFFSET %d;"; + static const char *SQL_TEMPLATE = + "WITH content AS (" + " SELECT kara.id AS id, string, LENGTH(CAST(kara.id AS TEXT)) AS len" + " FROM kara_playlist" + " JOIN playlist ON playlist.id = playlist_id" + " AND playlist.name COLLATE nocase = ?" + " JOIN kara ON kara.id = kara_id" + " AND %s LIKE ?) " + "SELECT id, string, (SELECT MAX(len) FROM content) " + "FROM content LIMIT %d OFFSET %d;"; static const char *SQL = "WITH content AS (" " SELECT kara.id AS id, string, LENGTH(CAST(kara.id AS TEXT)) AS len" " FROM kara_playlist" @@ -190,8 +192,8 @@ database_search_playlist_init(lkt_db *db, struct lkt_search *ret) /* Filter with an uri */ LOG_INFO("DB", "List plt '%s' with non null uri", ret->plt_name); - safe_snprintf(SQL_STMT, LKT_MAX_SQLITE_STATEMENT, SQL_TEMPLATE, ret->ka_uri.column_name, ret->msg_count, - ret->continuation); + safe_snprintf(SQL_STMT, LKT_MAX_SQLITE_STATEMENT, SQL_TEMPLATE, ret->ka_uri.column_name, + ret->msg_count, ret->continuation); SQLITE_PREPARE(db, ret->stmt, SQL_STMT, error); SQLITE_BIND_TEXT(db, ret->stmt, 1, ret->plt_name, error); @@ -230,7 +232,8 @@ database_search_listplaylist_init(lkt_db *db, struct lkt_search *ret) ret->type = lkt_search_listplaylist; ret->db = db; SQLITE_PREPARE(db, ret->stmt, SQL_STMT, error); - LOG_INFO("DB", "List playlists with LIMIT %d and OFFSET %d", ret->msg_count, (int)ret->continuation); + LOG_INFO("DB", "List playlists with LIMIT %d and OFFSET %d", ret->msg_count, + (int)ret->continuation); return true; error: @@ -301,8 +304,8 @@ database_search_queue_init(lkt_db *db, struct lkt_search *ret) ret->type = lkt_search_queue; /* Search part */ - safe_snprintf(SQL_STMT, LKT_MAX_SQLITE_STATEMENT, SQL_STMT_TEMPLATE, ret->ka_uri.column_name, ret->msg_count, - ret->continuation); + safe_snprintf(SQL_STMT, LKT_MAX_SQLITE_STATEMENT, SQL_STMT_TEMPLATE, ret->ka_uri.column_name, + ret->msg_count, ret->continuation); SQLITE_PREPARE(db, ret->stmt, SQL_STMT, error); if (!ret->ka_uri.is_int) { @@ -336,7 +339,8 @@ database_search_iter(struct lkt_search *item) goto end; if (code != SQLITE_ROW) { - LOG_ERROR("DB", "Step failed, expected a ROW or a DONE: %s", sqlite3_errmsg((sqlite3 *)item->db)); + LOG_ERROR("DB", "Step failed, expected a ROW or a DONE: %s", + sqlite3_errmsg((sqlite3 *)item->db)); goto end; } @@ -360,9 +364,7 @@ database_search_iter(struct lkt_search *item) sql_row = sqlite3_column_chars(item->stmt, 0); /* Name */ return ((lkt_search_listplaylist_func)item->call)(item->srv, item->c, sql_row); - default: - LOG_WARN("DB", "Search type %d is not implemented", item->type); - goto end; + default: LOG_WARN("DB", "Search type %d is not implemented", item->type); goto end; } end: @@ -399,7 +401,8 @@ error: } PRIVATE_FUNCTION void -___get_all_kara(lkt_db *db, int **ret_ids, size_t *ret_ids_len, const char *SQL_DATA, const char *SQL_COUNT) +___get_all_kara(lkt_db *db, int **ret_ids, size_t *ret_ids_len, const char *SQL_DATA, + const char *SQL_COUNT) { sqlite3_stmt *stmt = NULL; size_t index = 0; @@ -419,7 +422,8 @@ ___get_all_kara(lkt_db *db, int **ret_ids, size_t *ret_ids_len, const char *SQL_ /* Get all the IDs */ SQLITE_PREPARE(db, stmt, SQL_DATA, error); - FOR_EVER { + FOR_EVER + { SQLITE_STEP_ROW(db, stmt, done); (*ret_ids)[index] = sqlite3_column_int(stmt, 0); index++; @@ -444,8 +448,10 @@ error: void database_get_all_non_cached_kara(lkt_db *db, int **ret_ids, size_t *ret_ids_len) { - static const char *SQL_DATA = "SELECT id FROM kara WHERE cached_mtime = 0 OR cached_duration = 0;"; - static const char *SQL_COUNT = "SELECT count(id) FROM kara WHERE cached_mtime = 0 OR cached_duration = 0;"; + static const char *SQL_DATA = + "SELECT id FROM kara WHERE cached_mtime = 0 OR cached_duration = 0;"; + static const char *SQL_COUNT = + "SELECT count(id) FROM kara WHERE cached_mtime = 0 OR cached_duration = 0;"; ___get_all_kara(db, ret_ids, ret_ids_len, SQL_DATA, SQL_COUNT); } diff --git a/src/database/open.c b/src/database/open.c index 1d99f29d..dbd88d6a 100644 --- a/src/database/open.c +++ b/src/database/open.c @@ -88,7 +88,8 @@ bool database_new(lkt_db **db) { *db = NULL; - static int flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_SHAREDCACHE | SQLITE_OPEN_NOFOLLOW | SQLITE_OPEN_FULLMUTEX; + static int flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_SHAREDCACHE | SQLITE_OPEN_NOFOLLOW | + SQLITE_OPEN_FULLMUTEX; // clang-format off if (SQLITE_OK != sqlite3_enable_shared_cache(1) || @@ -184,9 +185,10 @@ error: PRIVATE_FUNCTION void ___flush_cache_from_disk(lkt_db *db) { - static const char *SQL = "INSERT INTO kara_cache (kara_id, mtime, duration, file_path, magic_error)" - " SELECT id, cached_mtime, cached_duration, file_path, 2" - " FROM kara;"; + static const char *SQL = + "INSERT INTO kara_cache (kara_id, mtime, duration, file_path, magic_error)" + " SELECT id, cached_mtime, cached_duration, file_path, 2" + " FROM kara;"; SQLITE_EXEC(db, SQL, error); LOG_INFO("DB", "Kara cache was flushed from disk"); return; @@ -215,7 +217,9 @@ retry: LKT_DATABASE_VERSION version = database_get_version(db); switch (version) { case LKT_DATABASE_VERSION_ALPHA: - LOG_ERROR("DB", "The database is in 'alpha' version, lektor might break, consider upgrading your db!"); + LOG_ERROR( + "DB", + "The database is in 'alpha' version, lektor might break, consider upgrading your db!"); break; case LKT_DATABASE_VERSION_MK_7_1: diff --git a/src/database/playlist.c b/src/database/playlist.c index 1d5809c3..d1d6eec3 100644 --- a/src/database/playlist.c +++ b/src/database/playlist.c @@ -7,10 +7,11 @@ bool database_plt_touch(lkt_db *db, const char *name) { - static const char *SQL_STMT = "SELECT name FROM playlist WHERE name = ?"; - static const char *SQL_TOUCH = "UPDATE playlist SET last_update = strftime('%s', 'now') WHERE name = ?"; - sqlite3_stmt *stmt = NULL; - bool sta = false; + static const char *SQL_STMT = "SELECT name FROM playlist WHERE name = ?"; + static const char *SQL_TOUCH = + "UPDATE playlist SET last_update = strftime('%s', 'now') WHERE name = ?"; + sqlite3_stmt *stmt = NULL; + bool sta = false; SQLITE_PREPARE(db, stmt, SQL_STMT, error); SQLITE_BIND_TEXT(db, stmt, 1, name, error); @@ -67,9 +68,10 @@ error: bool database_plt_remove_pos(lkt_db *db, const char *name, int pos) { - static const char *SQL_STMT = "DELETE FROM kara_playlist " - "WHERE playlist_id = (SELECT id FROM playlist WHERE name = ? LIMIT 1) " - "AND kara_id = ?;"; + static const char *SQL_STMT = + "DELETE FROM kara_playlist " + "WHERE playlist_id = (SELECT id FROM playlist WHERE name = ? LIMIT 1) " + "AND kara_id = ?;"; sqlite3_stmt *stmt = NULL; bool sta = false; SQLITE_PREPARE(db, stmt, SQL_STMT, error); @@ -129,7 +131,9 @@ database_plt_export(lkt_db *db, const char *name) } GOTO_UNLESS(strcasecmp(name, LKT_PROTECTED_DATABASE), - "Name '" LKT_PROTECTED_DATABASE "' is protected, you can't use it for a playlist name", error); + "Name '" LKT_PROTECTED_DATABASE + "' is protected, you can't use it for a playlist name", + error); safe_snprintf(SQL_STMT, LKT_MAX_SQLITE_STATEMENT, SQL_SCHEM, name); SQLITE_PREPARE(db, stmt, SQL_STMT, error); @@ -162,7 +166,9 @@ database_plt_import(lkt_db *db, const char *name) } GOTO_UNLESS(strcasecmp(name, LKT_PROTECTED_DATABASE), - "Name '" LKT_PROTECTED_DATABASE "' is protected, you can't use it for a playlist name", error); + "Name '" LKT_PROTECTED_DATABASE + "' is protected, you can't use it for a playlist name", + error); safe_snprintf(SQL_STMT, LKT_MAX_SQLITE_STATEMENT, SQL_SCHEM, name, name, name); SQLITE_EXEC(db, SQL_STMT, error); @@ -178,8 +184,9 @@ database_plt_add_uri(lkt_db *db, const char *name, struct lkt_uri *uri) sqlite3_stmt *stmt; if (uri->is_int) { - static const char *SQL = "INSERT OR REPLACE INTO kara_playlist (kara_id, playlist_id) " - " VALUES (?, (SELECT id FROM playlist WHERE name = ? COLLATE NOCASE));"; + static const char *SQL = + "INSERT OR REPLACE INTO kara_playlist (kara_id, playlist_id) " + " VALUES (?, (SELECT id FROM playlist WHERE name = ? COLLATE NOCASE));"; SQLITE_PREPARE(db, stmt, SQL, error); SQLITE_BIND_INT(db, stmt, 1, uri->id, error); SQLITE_BIND_TEXT(db, stmt, 2, name, error); diff --git a/src/database/queue.c b/src/database/queue.c index 9aaa5af8..d8cddf55 100644 --- a/src/database/queue.c +++ b/src/database/queue.c @@ -4,14 +4,14 @@ #include <lektor/database.h> #include <lektor/internal/dbmacro.h> -#define sqlite_just_exec(func, query) \ - bool func(lkt_db *db) \ - { \ - SQLITE_EXEC(db, "BEGIN TRANSACTION;" query "COMMIT;", error); \ - return true; \ - error: \ - SQLITE_DO_ROLLBACK(db); \ - return false; \ +#define sqlite_just_exec(func, query) \ + bool func(lkt_db *db) \ + { \ + SQLITE_EXEC(db, "BEGIN TRANSACTION;" query "COMMIT;", error); \ + return true; \ + error: \ + SQLITE_DO_ROLLBACK(db); \ + return false; \ } // clang-format off sqlite_just_exec(database_queue_toggle_pause, "UPDATE queue_state SET paused = 1 - paused;"); @@ -32,8 +32,9 @@ sqlite_just_exec(database_queue_flat, "UPDATE queue SET priority = 1;"); PRIVATE_FUNCTION void __queue_resequence(lkt_db *db) { - static const char *SQL = "UPDATE " LKT_PROTECTED_DATABASE - ".sqlite_sequence SET seq = (SELECT COUNT(*) FROM queue) WHERE name = 'queue';"; + static const char *SQL = + "UPDATE " LKT_PROTECTED_DATABASE + ".sqlite_sequence SET seq = (SELECT COUNT(*) FROM queue) WHERE name = 'queue';"; SQLITE_EXEC(db, SQL, error); LOG_INFO("DB", "Re-sequenced the queue"); return; @@ -45,7 +46,8 @@ error: bool database_queue_set_paused(lkt_db *db, bool paused) { - const char *SQL = paused ? "UPDATE queue_state SET paused = 1;" : "UPDATE queue_state SET paused = 0;"; + const char *SQL = + paused ? "UPDATE queue_state SET paused = 1;" : "UPDATE queue_state SET paused = 0;"; SQLITE_EXEC(db, SQL, error); return true; error: @@ -55,10 +57,11 @@ error: bool database_queue_state(lkt_db *db, struct lkt_queue_state *res) { - static const char *SQL_STMT = "SELECT" - " volume, paused, random, repeat, single, current, duration, consume," - " (SELECT COUNT(*) FROM queue) AS length " - "FROM queue_state;\n"; + static const char *SQL_STMT = + "SELECT" + " volume, paused, random, repeat, single, current, duration, consume," + " (SELECT COUNT(*) FROM queue) AS length " + "FROM queue_state;\n"; sqlite3_stmt *stmt = 0; bool ret = false; @@ -157,21 +160,21 @@ error: return ret; } -#define reorder(db, prio, error) \ - if (prio > 1) { \ - if (__queue_reorder(db)) { \ - LOG_INFO("DB", "Queue has been reordered"); \ - } else { \ - LOG_INFO("DB", "Failed to reorder"); \ - goto error; \ - } \ +#define reorder(db, prio, error) \ + if (prio > 1) { \ + if (__queue_reorder(db)) { \ + LOG_INFO("DB", "Queue has been reordered"); \ + } else { \ + LOG_INFO("DB", "Failed to reorder"); \ + goto error; \ + } \ } static bool __queue_reorder(lkt_db *db) { -#define CURRENT_POS_OR_0 /* To move karas after the current */ \ - "(SELECT CASE WHEN (SELECT current FROM queue_state) IS NULL THEN 0" \ +#define CURRENT_POS_OR_0 /* To move karas after the current */ \ + "(SELECT CASE WHEN (SELECT current FROM queue_state) IS NULL THEN 0" \ " ELSE (SELECT current FROM queue_state) END AS val LIMIT 1)" static const char *SQL_REORDER = /* Clear the TMP */ @@ -183,7 +186,8 @@ __queue_reorder(lkt_db *db) " ORDER BY priority DESC, position ASC;" "DELETE FROM queue WHERE position > " CURRENT_POS_OR_0 ";" /* Update the sqlite_sequence table */ - "UPDATE " LKT_PROTECTED_DATABASE ".sqlite_sequence SET seq = " CURRENT_POS_OR_0 " WHERE name = 'queue';" + "UPDATE " LKT_PROTECTED_DATABASE ".sqlite_sequence SET seq = " CURRENT_POS_OR_0 + " WHERE name = 'queue';" /* Insert back */ "INSERT INTO queue (position, kara_id, priority)" " SELECT position + " CURRENT_POS_OR_0 ", kara_id, priority" @@ -315,26 +319,19 @@ bool database_queue_add_uri(lkt_db *db, struct lkt_uri *uri, int prio) { switch (uri->type) { - case URI_QUERY: - return queue_add_with_col_like_str(db, LKT_DB_ALL, uri->value, prio); + case URI_QUERY: return queue_add_with_col_like_str(db, LKT_DB_ALL, uri->value, prio); - case URI_ID: - return database_queue_add_id(db, uri->id, prio); + case URI_ID: return database_queue_add_id(db, uri->id, prio); - case URI_TYPE: - return queue_add_with_col_like_str(db, LKT_DB_TYPE, uri->value, prio); + case URI_TYPE: return queue_add_with_col_like_str(db, LKT_DB_TYPE, uri->value, prio); - case URI_CATEGORY: - return queue_add_with_col_like_str(db, LKT_DB_CAT, uri->value, prio); + case URI_CATEGORY: return queue_add_with_col_like_str(db, LKT_DB_CAT, uri->value, prio); - case URI_LANGUAGE: - return queue_add_with_col_like_str(db, LKT_DB_LANG, uri->value, prio); + case URI_LANGUAGE: return queue_add_with_col_like_str(db, LKT_DB_LANG, uri->value, prio); - case URI_AUTHOR: - return queue_add_with_col_like_str(db, LKT_DB_AUTHOR, uri->value, prio); + case URI_AUTHOR: return queue_add_with_col_like_str(db, LKT_DB_AUTHOR, uri->value, prio); - case URI_PLAYLIST: - return database_queue_add_plt(db, uri->value, prio); + case URI_PLAYLIST: return database_queue_add_plt(db, uri->value, prio); default: LOG_WARN("DB", "Add to queue for uri of type %d is not implemented", uri->type); @@ -415,7 +412,8 @@ database_queue_del_pos(lkt_db *db, int pos) SQLITE_EXEC(db, "BEGIN TRANSACTION;", error_no_rollback); SQLITE_EXEC(db, SQL, error_rollback); if (pos < queue.current) { - LOG_DEBUG("DB", "Needs to decrement current index: pos %d < current %d", pos, queue.current); + LOG_DEBUG("DB", "Needs to decrement current index: pos %d < current %d", pos, + queue.current); SQLITE_EXEC(db, "UPDATE queue_state SET current = current - 1;", error_in_delete_or_update); } @@ -465,7 +463,8 @@ database_queue_next(lkt_db *db, char filepath[PATH_MAX]) if (code == SQLITE_ROW) { id = MAX(1, sqlite3_column_int(stmt, 1)); - safe_snprintf(SQL_UPDATE, LKT_MAX_SQLITE_STATEMENT, "UPDATE queue_state SET current = %d;", id); + safe_snprintf(SQL_UPDATE, LKT_MAX_SQLITE_STATEMENT, "UPDATE queue_state SET current = %d;", + id); if (filepath != NULL) strncpy(filepath, sqlite3_column_chars(stmt, 0), PATH_MAX - 1); @@ -508,14 +507,15 @@ database_queue_skip_current(lkt_db *db, char filepath[PATH_MAX]) bool database_queue_prev(lkt_db *db, char filepath[PATH_MAX]) { - static const char *SQL_STMT = "SELECT file_path, position " - " FROM kara" - " JOIN queue ON kara.id = queue.kara_id AND available = 1" - " JOIN queue_state ON CASE " - " WHEN (SELECT single FROM queue_state LIMIT 1) = 1 THEN position = current" - " ELSE queue.position < queue_state.current" - " END" - " ORDER BY position DESC LIMIT 1;"; + static const char *SQL_STMT = + "SELECT file_path, position " + " FROM kara" + " JOIN queue ON kara.id = queue.kara_id AND available = 1" + " JOIN queue_state ON CASE " + " WHEN (SELECT single FROM queue_state LIMIT 1) = 1 THEN position = current" + " ELSE queue.position < queue_state.current" + " END" + " ORDER BY position DESC LIMIT 1;"; char SQL_UPDATE[LKT_MAX_SQLITE_STATEMENT]; bool status = false; int code = SQLITE_OK, id; @@ -526,7 +526,8 @@ database_queue_prev(lkt_db *db, char filepath[PATH_MAX]) if (code == SQLITE_ROW) { id = MAX(1, sqlite3_column_int(stmt, 1)); - safe_snprintf(SQL_UPDATE, LKT_MAX_SQLITE_STATEMENT, "UPDATE queue_state SET current = %d;", id); + safe_snprintf(SQL_UPDATE, LKT_MAX_SQLITE_STATEMENT, "UPDATE queue_state SET current = %d;", + id); if (filepath != NULL) strncpy(filepath, sqlite3_column_chars(stmt, 0), PATH_MAX - 1); @@ -556,12 +557,14 @@ error: bool database_queue_swap(lkt_db *db, int from, int to) { - static const char *SQL_POP_ROW_1 = "SELECT position, priority, kara_id FROM queue WHERE position = ?;"; + static const char *SQL_POP_ROW_1 = + "SELECT position, priority, kara_id FROM queue WHERE position = ?;"; static const char *SQL_POP_ROW_2 = "DELETE FROM queue WHERE position = ?;"; static const char *SQL_SLAP_MAX = "UPDATE " LKT_PROTECTED_DATABASE ".sqlite_sequence" " SET seq = (SELECT COUNT(position) FROM queue)" " WHERE name = 'queue';"; - static const char *SQL_PUSH_ROW = "INSERT INTO queue (position, priority, kara_id) VALUES (?, ?, ?);"; + static const char *SQL_PUSH_ROW = + "INSERT INTO queue (position, priority, kara_id) VALUES (?, ?, ?);"; struct { int position; @@ -573,25 +576,25 @@ database_queue_swap(lkt_db *db, int from, int to) int tmp_kara_id; /* Get one kara from the 'queue' and delete it */ -#define POP_QUEUE(name) \ - SQLITE_PREPARE(db, stmt, SQL_POP_ROW_1, error); \ - SQLITE_BIND_INT(db, stmt, 1, name, error); \ - SQLITE_STEP_ROW(db, stmt, error); \ - kara_##name.position = sqlite3_column_int(stmt, 0); \ - kara_##name.priority = sqlite3_column_int(stmt, 1); \ - kara_##name.kara_id = sqlite3_column_int(stmt, 2); \ - sqlite3_finalize(stmt); \ - SQLITE_PREPARE(db, stmt, SQL_POP_ROW_2, error); \ - SQLITE_BIND_INT(db, stmt, 1, name, error); \ - SQLITE_STEP_DONE(db, stmt, error); \ +#define POP_QUEUE(name) \ + SQLITE_PREPARE(db, stmt, SQL_POP_ROW_1, error); \ + SQLITE_BIND_INT(db, stmt, 1, name, error); \ + SQLITE_STEP_ROW(db, stmt, error); \ + kara_##name.position = sqlite3_column_int(stmt, 0); \ + kara_##name.priority = sqlite3_column_int(stmt, 1); \ + kara_##name.kara_id = sqlite3_column_int(stmt, 2); \ + sqlite3_finalize(stmt); \ + SQLITE_PREPARE(db, stmt, SQL_POP_ROW_2, error); \ + SQLITE_BIND_INT(db, stmt, 1, name, error); \ + SQLITE_STEP_DONE(db, stmt, error); \ sqlite3_finalize(stmt); /* Push one kara on the 'queue' */ -#define PUSH_QUEUE(name) \ - SQLITE_PREPARE(db, stmt, SQL_PUSH_ROW, error); \ - SQLITE_BIND_INT(db, stmt, 1, kara_##name.position, error); \ - SQLITE_BIND_INT(db, stmt, 2, kara_##name.priority, error); \ - SQLITE_BIND_INT(db, stmt, 3, kara_##name.kara_id, error); \ - SQLITE_STEP_DONE(db, stmt, error); \ +#define PUSH_QUEUE(name) \ + SQLITE_PREPARE(db, stmt, SQL_PUSH_ROW, error); \ + SQLITE_BIND_INT(db, stmt, 1, kara_##name.position, error); \ + SQLITE_BIND_INT(db, stmt, 2, kara_##name.priority, error); \ + SQLITE_BIND_INT(db, stmt, 3, kara_##name.kara_id, error); \ + SQLITE_STEP_DONE(db, stmt, error); \ sqlite3_finalize(stmt); SQLITE_EXEC(db, "BEGIN TRANSACTION;", error_no_rollback); diff --git a/src/database/update.c b/src/database/update.c index ffe31217..86de1658 100644 --- a/src/database/update.c +++ b/src/database/update.c @@ -19,9 +19,10 @@ ___add_kara_to_update_job(lkt_db *db, size_t id) } else { - static const char *SQL_TEMP = "INSERT OR REPLACE INTO updates (job, kara_id) " - "SELECT MAX(update_job), last_insert_rowid() FROM misc;" - "UPDATE kara SET available = 1 WHERE id = last_insert_rowid();"; + static const char *SQL_TEMP = + "INSERT OR REPLACE INTO updates (job, kara_id) " + "SELECT MAX(update_job), last_insert_rowid() FROM misc;" + "UPDATE kara SET available = 1 WHERE id = last_insert_rowid();"; safe_strncpy(SQL, SQL_TEMP, LKT_MAX_SQLITE_STATEMENT); } @@ -75,10 +76,11 @@ ___database_add_kara(lkt_db *db, const char *filename) "kara (song_name, source_name, category, song_type, language, " "file_path, is_new, author_name, song_number)" "SELECT ?, ?, ?, ?, ?, ?, ?, ?, ?"; - static const char *SQL_STMT_WITH_ID = "INSERT INTO " - "kara (song_name, source_name, category, song_type, language, " - "file_path, is_new, author_name, song_number, id)" - "SELECT ?, ?, ?, ?, ?, ?, ?, ?, ?, ?"; + static const char *SQL_STMT_WITH_ID = + "INSERT INTO " + "kara (song_name, source_name, category, song_type, language, " + "file_path, is_new, author_name, song_number, id)" + "SELECT ?, ?, ?, ?, ?, ?, ?, ?, ?, ?"; sqlite3_stmt *stmt = NULL; long status = false, kara_id = 0; struct kara_metadata data; @@ -168,7 +170,8 @@ error: } bool -database_update_add(lkt_db *db, const char *kara_path, struct kara_metadata *mdt, uint64_t id, bool avail) +database_update_add(lkt_db *db, const char *kara_path, struct kara_metadata *mdt, uint64_t id, + bool avail) { RETURN_UNLESS(db && kara_path && mdt && id, "Invalid argument", false); static const char *SQL_STMT = "INSERT OR REPLACE INTO kara (song_name, source_name, category, " @@ -231,8 +234,9 @@ database_update(lkt_db *db, const char *kara_dir, int check_timestamp) LOG_INFO("DB", "File is '%s'", path); uint64_t mtime = 0u; bool mtime_got = database_get_kara_mtime_path(db, path, &mtime); - if (check_timestamp && mtime_got && mtime < (uint64_t)db_timestamp && /* Timestamp check */ - (db_timestamp == (long)(uint64_t)db_timestamp)) { /* Overflow check */ + if (check_timestamp && mtime_got && + mtime < (uint64_t)db_timestamp && /* Timestamp check */ + (db_timestamp == (long)(uint64_t)db_timestamp)) { /* Overflow check */ LOG_INFO("DB", "Skip update of kara '%s' be cause of timestamps", path); continue; } @@ -241,7 +245,8 @@ database_update(lkt_db *db, const char *kara_dir, int check_timestamp) database_stamp(db); } - else if (dir->d_type == DT_DIR && !STR_MATCH(dir->d_name, ".") && !STR_MATCH(dir->d_name, "..")) + else if (dir->d_type == DT_DIR && !STR_MATCH(dir->d_name, ".") && + !STR_MATCH(dir->d_name, "..")) database_update(db, path, check_timestamp); } @@ -296,7 +301,8 @@ database_get_update(lkt_db *db, long *timestamp, long *job, int *current) sqlite3_finalize(stmt); return; error: - LOG_WARN("DB", "Failed to get informations about the last update: %s", sqlite3_errmsg((sqlite3 *)db)); + LOG_WARN("DB", "Failed to get informations about the last update: %s", + sqlite3_errmsg((sqlite3 *)db)); sqlite3_finalize(stmt); } @@ -366,12 +372,12 @@ error: return ret; } -#define sqlite_just_exec(func, query) \ - void func(lkt_db *db) \ - { \ - SQLITE_EXEC(db, query, error); \ - error: \ - return; \ +#define sqlite_just_exec(func, query) \ + void func(lkt_db *db) \ + { \ + SQLITE_EXEC(db, query, error); \ + error: \ + return; \ } // clang-format off sqlite_just_exec(database_stamp, "UPDATE misc SET last_update = strftime('%s','now');") diff --git a/src/klkt/klkt.hpp b/src/klkt/klkt.hpp index a14134ec..b3387d4b 100644 --- a/src/klkt/klkt.hpp +++ b/src/klkt/klkt.hpp @@ -42,14 +42,10 @@ static inline const char * __urgencyToString(Urgency urg) { switch (urg) { - case Urgency::LOW: - return "LOW"; - case Urgency::NORMAL: - return "NORMAL"; - case Urgency::CRITICAL: - return "CRITICAL"; - default: - return "UNKNOWN"; + case Urgency::LOW: return "LOW"; + case Urgency::NORMAL: return "NORMAL"; + case Urgency::CRITICAL: return "CRITICAL"; + default: return "UNKNOWN"; } } @@ -70,7 +66,7 @@ sendNotification(const char *name, const char *msg, enum Urgency urgency) fflush(stdout); } #else -#error \ +#error \ "System is not supported yet, you need to write a 'sendNotification(const char *, const char *, enum Urgency)' function for that system" #endif @@ -94,18 +90,9 @@ public: settings.setValue(opt_port, m_port); } - qint16 getPort(void) const - { - return m_port; - } - bool isUnix(void) const - { - return m_port <= 0; - } - const QString &getHost(void) const - { - return m_host; - } + qint16 getPort(void) const { return m_port; } + bool isUnix(void) const { return m_port <= 0; } + const QString &getHost(void) const { return m_host; } }; /* Socket, can be unix socket or tcp socket. Because QIODevice don't have all that what we need */ @@ -128,18 +115,9 @@ private: public slots: /* Re-emit signals */ - inline void triggetConnected(void) - { - emit connected(); - } - inline void triggetDisconnected(void) - { - emit disconnected(); - } - inline void triggetReadyRead(void) - { - emit readyRead(); - } + inline void triggetConnected(void) { emit connected(); } + inline void triggetDisconnected(void) { emit disconnected(); } + inline void triggetReadyRead(void) { emit readyRead(); } signals: /* Used signals from TCP and Unix sockets */ @@ -148,10 +126,7 @@ signals: void readyRead(void); public: - Socket(const QString &host, qint16 port) - { - reset(host, port); - } + Socket(const QString &host, qint16 port) { reset(host, port); } void reset(const QString host, qint16 port) { @@ -175,18 +150,14 @@ public: } } -#define __DIFFERENTIATE(unix, tcp) \ - { \ - switch (m_type) { \ - case Type::Unix: \ - unix; \ - break; \ - case Type::Tcp: \ - tcp; \ - break; \ - } \ - sendNotification("Klkt fatal error", "Unknown socket type", Urgency::CRITICAL); \ - ::exit(EXIT_FAILURE); \ +#define __DIFFERENTIATE(unix, tcp) \ + { \ + switch (m_type) { \ + case Type::Unix: unix; break; \ + case Type::Tcp: tcp; break; \ + } \ + sendNotification("Klkt fatal error", "Unknown socket type", Urgency::CRITICAL); \ + ::exit(EXIT_FAILURE); \ } // clang-format off @@ -227,10 +198,7 @@ private: } private slots: - void connected(void) - { - m_sock.write(StatusString); - } + void connected(void) { m_sock.write(StatusString); } void disconnected(void) { @@ -239,8 +207,8 @@ private slots: if (m_state == "play") { // m_current_kara["category"] + " - " + m_current_kara["language"] + "\n" + - QString kara = m_current_kara["source"] + "\n" + m_current_kara["type"] + " - " + m_current_kara["title"] + - " [" + m_current_kara["author"] + "]"; + QString kara = m_current_kara["source"] + "\n" + m_current_kara["type"] + " - " + + m_current_kara["title"] + " [" + m_current_kara["author"] + "]"; sendNotification("lektord is playing", kara.toStdString().c_str(), Urgency::LOW); emit changeCurrentKara(kara); emit changeStatus(Play); @@ -260,7 +228,10 @@ private slots: else { sendNotification("lektord error", - tr("lektord has the following unkown state: '%1'").arg(m_state).toStdString().c_str(), + tr("lektord has the following unkown state: '%1'") + .arg(m_state) + .toStdString() + .c_str(), Urgency::CRITICAL); emit changeCurrentKara(tr("Unknown state: '%1'").arg(m_state)); emit changeStatus(Unknown); @@ -285,10 +256,10 @@ private slots: } /* Decode line */ -#define DECODE(what) \ - if (line.startsWith(what ": ", Qt::CaseInsensitive)) { \ - line.remove(0, static_cast<int>(strlen(what ": "))); \ - m_current_kara.insert(what, line); \ +#define DECODE(what) \ + if (line.startsWith(what ": ", Qt::CaseInsensitive)) { \ + line.remove(0, static_cast<int>(strlen(what ": "))); \ + m_current_kara.insert(what, line); \ } DECODE("title") DECODE("author") @@ -315,7 +286,8 @@ private slots: if (m_state == "play") { QWidget::disconnect(m_connect_read); m_pending_data = ""; - m_connect_read = QWidget::connect(&m_sock, &Socket::readyRead, this, &Status::readCurrent); + m_connect_read = + QWidget::connect(&m_sock, &Socket::readyRead, this, &Status::readCurrent); m_sock.write(CurrentString); } else m_sock.close(); @@ -343,14 +315,8 @@ public: Status &operator=(Status &) = delete; - inline bool isDeletable(void) const - { - return m_deletable; - } - inline void waitForDisconnected(void) - { - m_sock.waitForDisconnected(-1); - } + inline bool isDeletable(void) const { return m_deletable; } + inline void waitForDisconnected(void) { m_sock.waitForDisconnected(-1); } enum { Pause, @@ -384,7 +350,8 @@ private: connect(&m_sock, &Socket::connected, this, [&]() { m_sock.write(m_cmd); }); connect(&m_sock, &Socket::disconnected, this, [&]() { emit finished(); }); connect(&m_sock, &Socket::readyRead, this, [&]() { - QStringList lines = QTextCodec::codecForMib(UTF8_MIB)->toUnicode(m_sock.readAll()).split("\n"); + QStringList lines = + QTextCodec::codecForMib(UTF8_MIB)->toUnicode(m_sock.readAll()).split("\n"); for (auto &line : lines) { if (line == "OK" || line.left(3) == "ACK") { m_sock.close(); @@ -411,11 +378,8 @@ private: } public slots: -#define DECLARE_CMD(name) \ - static void name(const QString &host, qint16 port) \ - { \ - Commander cmd(host, port, CMD_##name); \ - } +#define DECLARE_CMD(name) \ + static void name(const QString &host, qint16 port) { Commander cmd(host, port, CMD_##name); } DECLARE_CMD(NEXT) DECLARE_CMD(PREVIOUS) DECLARE_CMD(SHUFFLE) @@ -497,7 +461,8 @@ protected slots: if (m_exit || !m_is_connected) return; - sendNotification("Connexion lost", "Connexion to lektord has been lost!", Urgency::CRITICAL); + sendNotification("Connexion lost", "Connexion to lektord has been lost!", + Urgency::CRITICAL); m_pending_data = ""; m_is_connected = false; } @@ -506,8 +471,10 @@ protected slots: { Config conf(this, m_config_file); if (conf.isUnix()) { -#if defined(Q_OS_MSDOS) || defined(Q_OS_WIN32) || defined(Q_OS_WINCE) || defined(Q_OS_WIN) || defined(Q_OS_WINRT) - sendNotification("Klkt fatal error", "The 'unix' socket type is not available on your platform", +#if defined(Q_OS_MSDOS) || defined(Q_OS_WIN32) || defined(Q_OS_WINCE) || defined(Q_OS_WIN) || \ + defined(Q_OS_WINRT) + sendNotification("Klkt fatal error", + "The 'unix' socket type is not available on your platform", Urgency::CRITICAL); #endif } @@ -517,7 +484,8 @@ protected slots: m_sock.reset(m_host, m_port); m_sock.doConnect(); if (!m_sock.waitForConnected(50000)) - sendNotification("Klkt not connected", "Connexion to lektord failed", Urgency::CRITICAL); + sendNotification("Klkt not connected", "Connexion to lektord failed", + Urgency::CRITICAL); else m_is_connected = true; } @@ -538,28 +506,28 @@ protected slots: } } - void connected(void) - { - } + void connected(void) {} private: void queryStatus(void) { garbageCollect(); Status *ptr_status = new Status(m_host, m_port); - connect(ptr_status, &Status::changeCurrentKara, this, [&](QString kara) { m_tray_icon.setToolTip(kara); }); + connect(ptr_status, &Status::changeCurrentKara, this, + [&](QString kara) { m_tray_icon.setToolTip(kara); }); m_garbage.push_back(ptr_status); } void garbageCollect(bool force = false) { - std::transform(m_garbage.begin(), m_garbage.end(), m_garbage.begin(), [&force](Status *p_sta) -> Status * { - if (force || (p_sta && p_sta->isDeletable())) { - delete p_sta; - return nullptr; - } else - return p_sta; - }); + std::transform(m_garbage.begin(), m_garbage.end(), m_garbage.begin(), + [&force](Status *p_sta) -> Status * { + if (force || (p_sta && p_sta->isDeletable())) { + delete p_sta; + return nullptr; + } else + return p_sta; + }); /* Should be enaugh to delete all used status sockets */ while (m_garbage.length() > 0 && m_garbage.front() == nullptr) @@ -583,7 +551,10 @@ public: QDir config_dir(m_config_file); if (!config_dir.mkpath(m_config_file)) { sendNotification("Klkt fatal error", - tr("Failed to create the Klkt config dir %1").arg(m_config_file).toStdString().c_str(), + tr("Failed to create the Klkt config dir %1") + .arg(m_config_file) + .toStdString() + .c_str(), Urgency::CRITICAL); ::exit(EXIT_FAILURE); } @@ -591,7 +562,10 @@ public: QFile conf_file(m_config_file); if (!conf_file.open(QIODevice::ReadWrite | QIODevice::Text)) { sendNotification("Klkt fatal error", - tr("Failed to create Klkt config file %1").arg(m_config_file).toStdString().c_str(), + tr("Failed to create Klkt config file %1") + .arg(m_config_file) + .toStdString() + .c_str(), Urgency::CRITICAL); ::exit(EXIT_FAILURE); } @@ -616,15 +590,20 @@ public: playback_next->setIconVisibleInMenu(true); playback_shuf->setIconVisibleInMenu(true); - connect(playback_play, &QAction::triggered, this, [&]() { Commander::PLAY(m_host, m_port); }); - connect(playback_next, &QAction::triggered, this, [&]() { Commander::NEXT(m_host, m_port); }); - connect(playback_prev, &QAction::triggered, this, [&]() { Commander::PREVIOUS(m_host, m_port); }); - connect(playback_shuf, &QAction::triggered, this, [&]() { Commander::SHUFFLE(m_host, m_port); }); + connect(playback_play, &QAction::triggered, this, + [&]() { Commander::PLAY(m_host, m_port); }); + connect(playback_next, &QAction::triggered, this, + [&]() { Commander::NEXT(m_host, m_port); }); + connect(playback_prev, &QAction::triggered, this, + [&]() { Commander::PREVIOUS(m_host, m_port); }); + connect(playback_shuf, &QAction::triggered, this, + [&]() { Commander::SHUFFLE(m_host, m_port); }); connect(action_quit, &QAction::triggered, this, &Application::notifyExit); connect(action_reco, &QAction::triggered, this, &Application::reconnect); connect(action_restart, &QAction::triggered, this, &Application::restart); - connect(&m_tray_icon, &QSystemTrayIcon::activated, &m_menu, [&]() { m_menu.popup(QCursor::pos()); }); + connect(&m_tray_icon, &QSystemTrayIcon::activated, &m_menu, + [&]() { m_menu.popup(QCursor::pos()); }); } m_tray_icon.show(); diff --git a/src/main/lkt.c b/src/main/lkt.c index 9896751e..83d69b20 100644 --- a/src/main/lkt.c +++ b/src/main/lkt.c @@ -17,10 +17,10 @@ #define LKT_KEY_VALUE_SEP ": \n\t\0" -#define HANDLE_STATUS(buffer, ok) \ - if (STR_NMATCH(buffer, "OK", 2)) { \ - ok; \ - } else if (STR_NMATCH(buffer, "ACK", 3)) \ +#define HANDLE_STATUS(buffer, ok) \ + if (STR_NMATCH(buffer, "OK", 2)) { \ + ok; \ + } else if (STR_NMATCH(buffer, "ACK", 3)) \ LOG_FATAL("Got the 'ACK' status from lektord: %s", buffer); /* Type definition. */ @@ -158,20 +158,20 @@ lkt_get_query_type(struct cmd_args *args, char *const regex, size_t regex_len) } /* Type ?== type OR Type ?== category OR Type ?== lang */ -#define kara_type(tp) \ - if (STR_MATCH(tp, args->argv[0])) { \ - safe_snprintf(regex, regex_len, "type://%s", args->argv[0]); \ - return 0; \ +#define kara_type(tp) \ + if (STR_MATCH(tp, args->argv[0])) { \ + safe_snprintf(regex, regex_len, "type://%s", args->argv[0]); \ + return 0; \ } -#define kara_category(ct) \ - if (STR_MATCH(ct, args->argv[0])) { \ - safe_snprintf(regex, regex_len, "category://%s", args->argv[0]); \ - return 0; \ +#define kara_category(ct) \ + if (STR_MATCH(ct, args->argv[0])) { \ + safe_snprintf(regex, regex_len, "category://%s", args->argv[0]); \ + return 0; \ } -#define kara_language(lg) \ - if (STR_MATCH(lg, args->argv[0])) { \ - safe_snprintf(regex, regex_len, "lang://%s", args->argv[0]); \ - return 0; \ +#define kara_language(lg) \ + if (STR_MATCH(lg, args->argv[0])) { \ + safe_snprintf(regex, regex_len, "lang://%s", args->argv[0]); \ + return 0; \ } #include <lektor/database.def> #undef kara_category @@ -183,16 +183,16 @@ lkt_get_query_type(struct cmd_args *args, char *const regex, size_t regex_len) /* Mendatory author, playlist/plt. Explicit type for lang, category and type. */ if (args->argc >= 2) { -#define ___explicit_with_concat_strings(matches, uri) \ - if (STR_MATCH(matches, args->argv[0])) { \ - strncat(regex, uri, regex_len - 1); \ - concat_strings(regex, regex_len, args->argv + 1, args->argc - 1); \ - return 0; \ +#define ___explicit_with_concat_strings(matches, uri) \ + if (STR_MATCH(matches, args->argv[0])) { \ + strncat(regex, uri, regex_len - 1); \ + concat_strings(regex, regex_len, args->argv + 1, args->argc - 1); \ + return 0; \ } -#define ___explicit_with_snprintf(matches, uri) \ - if (STR_MATCH(matches, args->argv[0])) { \ - safe_snprintf(regex, regex_len, uri "%s", args->argv[1]); \ - return 0; \ +#define ___explicit_with_snprintf(matches, uri) \ + if (STR_MATCH(matches, args->argv[0])) { \ + safe_snprintf(regex, regex_len, uri "%s", args->argv[1]); \ + return 0; \ } // clang-format off @@ -286,7 +286,8 @@ create_socket(const char *host, const char *port) /* Common part */ cx = socket(domain, SOCK_STREAM, 0); - FAIL_IF(cx <= 0 || connect(cx, ptr_sock, sock_len), "Connect to socket failed, is lektord launched?"); + FAIL_IF(cx <= 0 || connect(cx, ptr_sock, sock_len), + "Connect to socket failed, is lektord launched?"); socket_desc = fdopen(cx, "r+"); FAIL_IF(!socket_desc, "Failed to connect to lektord"); return socket_desc; @@ -345,15 +346,15 @@ send_cmd_with_uri(FILE *sock, char *cmd, int argc, const char **argv) /* Functions implementing options. */ -#define just_send_two_args(func, cmd) \ - EXIT_FUNCTION \ - func(struct cmd_args *args) \ - { \ - FAIL_IF(args->argc != 2, "Need two arguments"); \ - FILE *sock = lkt_connect(); \ - char buff[2]; \ - write_socket(sock, cmd " %s %s\n", args->argv[0], args->argv[1]); \ - exit_with_status(sock, buff); \ +#define just_send_two_args(func, cmd) \ + EXIT_FUNCTION \ + func(struct cmd_args *args) \ + { \ + FAIL_IF(args->argc != 2, "Need two arguments"); \ + FILE *sock = lkt_connect(); \ + char buff[2]; \ + write_socket(sock, cmd " %s %s\n", args->argv[0], args->argv[1]); \ + exit_with_status(sock, buff); \ } // clang-format off just_send_two_args(queue_swap__, "swap"); @@ -361,15 +362,15 @@ just_send_two_args(queue_swapid__, "swapid"); // clang-format on #undef just_send_two_args -#define just_send_one_arg(func, cmd) \ - EXIT_FUNCTION \ - func(struct cmd_args *args) \ - { \ - FAIL_IF(args->argc != 1, "Invalid argument"); \ - FILE *sock = lkt_connect(); \ - char buff[2]; \ - write_socket(sock, cmd " %s\n", args->argv[0]); \ - exit_with_status(sock, buff); \ +#define just_send_one_arg(func, cmd) \ + EXIT_FUNCTION \ + func(struct cmd_args *args) \ + { \ + FAIL_IF(args->argc != 1, "Invalid argument"); \ + FILE *sock = lkt_connect(); \ + char buff[2]; \ + write_socket(sock, cmd " %s\n", args->argv[0]); \ + exit_with_status(sock, buff); \ } // clang-format off just_send_one_arg(stickers_create__, "sticker __create"); @@ -380,12 +381,12 @@ just_send_one_arg(queue_dump__, "__dump"); // clang-format on #undef just_send_one_arg -#define just_send(func, msg) /* Just send a simple string functions */ \ - EXIT_FUNCTION \ - func(struct cmd_args *args) \ - { \ - FAIL_IF(args->argc, "This command takes no arguments"); \ - lkt_send_and_exit(msg, sizeof(msg)); \ +#define just_send(func, msg) /* Just send a simple string functions */ \ + EXIT_FUNCTION \ + func(struct cmd_args *args) \ + { \ + FAIL_IF(args->argc, "This command takes no arguments"); \ + lkt_send_and_exit(msg, sizeof(msg)); \ } // clang-format off just_send(queue_clear__, "clear\n"); @@ -454,12 +455,9 @@ rescan_or_update__(struct cmd_args *args, const char *cmd) exit(EXIT_SUCCESS); } -#define ___just_send_with_password(func, cmd) \ - EXIT_FUNCTION \ - func(struct cmd_args *args) \ - { \ - rescan_or_update__(args, cmd); \ - } \ +#define ___just_send_with_password(func, cmd) \ + EXIT_FUNCTION \ + func(struct cmd_args *args) { rescan_or_update__(args, cmd); } \ // clang-format off ___just_send_with_password(rescan__, "rescan"); ___just_send_with_password(update__, "update"); @@ -476,7 +474,8 @@ queue_replace__(struct cmd_args *args) bool play = false; FILE *sock = lkt_connect(); - FOR_EVER { + FOR_EVER + { memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); read_socket(sock, buff, LKT_MESSAGE_MAX - 1); size_t len = strcspn(buff, LKT_KEY_VALUE_SEP); @@ -526,7 +525,8 @@ play__(struct cmd_args *args) FILE *sock = lkt_connect(); write_socket(sock, status__); - FOR_EVER { + FOR_EVER + { memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); read_socket(sock, buff, LKT_MESSAGE_MAX - 1); size_t len = strcspn(buff, LKT_KEY_VALUE_SEP); @@ -579,11 +579,12 @@ read_kara_and_exit(FILE *sock) char *const category = &mem[4 * LKT_MESSAGE_MAX]; char *const language = &mem[5 * LKT_MESSAGE_MAX]; -#define ___assign_mdt(what) \ - if (STR_NMATCH(#what, buff, len)) \ +#define ___assign_mdt(what) \ + if (STR_NMATCH(#what, buff, len)) \ assert(memcpy(what, value, value_size)); - FOR_EVER { + FOR_EVER + { memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); read_socket(sock, buff, LKT_MESSAGE_MAX - 1); @@ -645,12 +646,13 @@ queue_pop__(struct cmd_args *args) /* Get lektor's status. */ write_socket(sock, "status\n"); -#define assign_int(str, var) \ - if (STR_NMATCH(buff, str, len)) { \ - var = (atoi(lkt_skip_key(buff))); \ - continue; \ +#define assign_int(str, var) \ + if (STR_NMATCH(buff, str, len)) { \ + var = (atoi(lkt_skip_key(buff))); \ + continue; \ } - FOR_EVER { + FOR_EVER + { memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); read_socket(sock, buff, LKT_MESSAGE_MAX - 1); size_t len = strcspn(buff, LKT_KEY_VALUE_SEP); @@ -698,29 +700,30 @@ status__(struct cmd_args *args) memset(flags, 0, 24 * sizeof(char)); FILE *sock = lkt_connect(); -#define assign_flag(str, f) \ - if (STR_NMATCH(buff, str, len) && (atoi(lkt_skip_key(buff)) == 1)) { \ - flags[it++] = f; \ - continue; \ +#define assign_flag(str, f) \ + if (STR_NMATCH(buff, str, len) && (atoi(lkt_skip_key(buff)) == 1)) { \ + flags[it++] = f; \ + continue; \ } -#define assign_two_int(str, var1, var2) \ - if (STR_NMATCH(buff, str, len)) { \ - char *endptr = NULL; \ - var1 = (strtoll(lkt_skip_key(buff), &endptr, 0)); \ - endptr += strspn(endptr, "-/:"); \ - if (endptr) \ - var2 = (strtoll(endptr, NULL, 0)); \ - continue; \ +#define assign_two_int(str, var1, var2) \ + if (STR_NMATCH(buff, str, len)) { \ + char *endptr = NULL; \ + var1 = (strtoll(lkt_skip_key(buff), &endptr, 0)); \ + endptr += strspn(endptr, "-/:"); \ + if (endptr) \ + var2 = (strtoll(endptr, NULL, 0)); \ + continue; \ } -#define assign_int(str, var) \ - if (STR_NMATCH(buff, str, len)) { \ - var = (strtoll(lkt_skip_key(buff), NULL, 0)); \ - continue; \ +#define assign_int(str, var) \ + if (STR_NMATCH(buff, str, len)) { \ + var = (strtoll(lkt_skip_key(buff), NULL, 0)); \ + continue; \ } /* Get lektor's status */ write_socket(sock, status_str__); - FOR_EVER { + FOR_EVER + { read_socket(sock, buff, LKT_MESSAGE_MAX - 1); len = strcspn(buff, LKT_KEY_VALUE_SEP); @@ -731,8 +734,10 @@ status__(struct cmd_args *args) continue; } - assign_flag("random", 'r') assign_flag("repeat", 'l') assign_flag("single", 's') assign_flag("consume", 'c'); - assign_int("elapsed", time_pos) assign_int("duration", time_duration) assign_int("song", song_index); + assign_flag("random", 'r') assign_flag("repeat", 'l') assign_flag("single", 's') + assign_flag("consume", 'c'); + assign_int("elapsed", time_pos) assign_int("duration", time_duration) + assign_int("song", song_index); assign_int("playlistlength", plt_len); HANDLE_STATUS(buff, { break; }); @@ -740,7 +745,8 @@ status__(struct cmd_args *args) /* Get lektor's stats */ write_socket(sock, stats_str__); - FOR_EVER { + FOR_EVER + { read_socket(sock, buff, LKT_MESSAGE_MAX - 1); len = strcspn(buff, LKT_KEY_VALUE_SEP); @@ -770,10 +776,12 @@ status__(struct cmd_args *args) "Queue: #%d/%d\n" "Playback: %d:%02d/%d:%02d\n" "Flags: %s\n", - play ? "play" : "stopped", song_index + 1, plt_len, pla_m, pla_s, dur_m, dur_s, flags[0] ? flags : "(none)"); + play ? "play" : "stopped", song_index + 1, plt_len, pla_m, pla_s, dur_m, dur_s, + flags[0] ? flags : "(none)"); if (is_updating) - printf("Updating: %d/%d%s\n", update_tick, update_count, update_count >= update_tick ? "" : " (invalid)"); + printf("Updating: %d/%d%s\n", update_tick, update_count, + update_count >= update_tick ? "" : " (invalid)"); else printf("Last update: %s\n", buff); @@ -866,8 +874,9 @@ queue_pos__(struct cmd_args *args) { char buff[LKT_MESSAGE_MAX], *endptr; - FAIL_IF(args->argc != 1, - "Invalid argument for the pos command: queue pos <arg> where arg is a position or a range"); + FAIL_IF( + args->argc != 1, + "Invalid argument for the pos command: queue pos <arg> where arg is a position or a range"); long up = 0; errno = 0; @@ -890,7 +899,8 @@ redo: else write_socket(sock, "playlist %d\n", continuation); - FOR_EVER { + FOR_EVER + { memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); read_socket(sock, buff, LKT_MESSAGE_MAX - 1); @@ -923,7 +933,8 @@ queue_list__(struct cmd_args *args) FAIL_IF(args->argc != 1, "Invalid argument: queue <count?>"); continuation = strtol(args->argv[0], &endptr, 0); - FAIL_IF(STRTOL_ERROR(continuation) || (endptr == args->argv[0]), "Invalid argument, not an integer"); + FAIL_IF(STRTOL_ERROR(continuation) || (endptr == args->argv[0]), + "Invalid argument, not an integer"); FAIL_IF(*endptr != '\0', "Invalid argument"); /* Get the current pos to get limits for the playlist command. */ @@ -931,12 +942,13 @@ queue_list__(struct cmd_args *args) FILE *sock = lkt_connect(); write_socket(sock, "status\n"); -#define assign_int(str, var) \ - if (STR_NMATCH(buff, str, len)) { \ - var = (atoi(lkt_skip_key(buff))); \ - continue; \ +#define assign_int(str, var) \ + if (STR_NMATCH(buff, str, len)) { \ + var = (atoi(lkt_skip_key(buff))); \ + continue; \ } - FOR_EVER { + FOR_EVER + { memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); read_socket(sock, buff, LKT_MESSAGE_MAX - 1); size_t len = strcspn(buff, LKT_KEY_VALUE_SEP); @@ -964,7 +976,8 @@ EXIT_FUNCTION plt_add__(struct cmd_args *args) { char buff[2]; - FAIL_IF(args->argc < 2, "Invalid argument, need at least three arguments: plt add <plt> <query>"); + FAIL_IF(args->argc < 2, + "Invalid argument, need at least three arguments: plt add <plt> <query>"); char regex[LKT_MESSAGE_MAX]; struct cmd_args args_regex = CMD_ARGS_NEXT(*args); @@ -998,20 +1011,22 @@ stickers_get__(struct cmd_args *args) write_socket(sock = lkt_connect(), "sticker get %s %s\n", args->argv[0], args->argv[1]); else if (args->argc == 3) - write_socket(sock = lkt_connect(), "sticker get %s %s %s\n", args->argv[0], args->argv[1], args->argv[2]); + write_socket(sock = lkt_connect(), "sticker get %s %s %s\n", args->argv[0], args->argv[1], + args->argv[2]); else if (args->argc == 5) { const char *op = args->argv[3]; op = op[0] == 'e' ? "=" : op[0] == 'l' ? "<" : op[0] == 'g' ? ">" : NULL; FAIL_IF(!op, "Invalid argument"); - write_socket(sock = lkt_connect(), "sticker get %s %s %s %s %s\n", args->argv[0], args->argv[1], args->argv[2], - op, args->argv[4]); + write_socket(sock = lkt_connect(), "sticker get %s %s %s %s %s\n", args->argv[0], + args->argv[1], args->argv[2], op, args->argv[4]); } else LOG_FATAL("Invalid argument"); - FOR_EVER { + FOR_EVER + { memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); read_socket(sock, buff, LKT_MESSAGE_MAX - 1); HANDLE_STATUS(buff, { exit(EXIT_SUCCESS); }); @@ -1025,7 +1040,8 @@ stickers_set__(struct cmd_args *args) FAIL_IF(args->argc != 4, "Invalid argument"); FILE *sock = lkt_connect(); char buff[2]; - write_socket(sock, "sticker set %s %s %s %s\n", args->argv[0], args->argv[1], args->argv[2], args->argv[3]); + write_socket(sock, "sticker set %s %s %s %s\n", args->argv[0], args->argv[1], args->argv[2], + args->argv[3]); exit_with_status(sock, buff); } @@ -1037,7 +1053,8 @@ stickers_delete__(struct cmd_args *args) if (args->argc == 2) write_socket(sock = lkt_connect(), "sticker delete %s %s", args->argv[0], args->argv[1]); else if (args->argc == 3) - write_socket(sock = lkt_connect(), "sticker delete %s %s %s", args->argv[0], args->argv[1], args->argv[2]); + write_socket(sock = lkt_connect(), "sticker delete %s %s %s", args->argv[0], args->argv[1], + args->argv[2]); else LOG_FATAL("Invalid argument"); exit_with_status(sock, buff); @@ -1056,7 +1073,8 @@ redo: sock = lkt_connect(); write_socket(sock, "%d %s\n", continuation, cmd); - FOR_EVER { + FOR_EVER + { memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); read_socket(sock, buff, LKT_MESSAGE_MAX - 1); @@ -1108,7 +1126,8 @@ redo: sock = lkt_connect(); write_socket(sock, "%d %s %s\n", continuation, cmd, regex); - FOR_EVER { + FOR_EVER + { memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); read_socket(sock, buff, LKT_MESSAGE_MAX - 1); @@ -1133,7 +1152,8 @@ search_get__(struct cmd_args *args) FILE *sock = lkt_connect(); write_socket(sock, "find %s\n", args->argv[0]); - FOR_EVER { + FOR_EVER + { memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); read_socket(sock, buff, LKT_MESSAGE_MAX - 1); HANDLE_STATUS(buff, { exit(EXIT_SUCCESS); }); @@ -1162,7 +1182,8 @@ redo: sock = lkt_connect(); write_socket(sock, "%d listplaylistinfo %s %s\n", continuation, args->argv[0], regex); - FOR_EVER { + FOR_EVER + { memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); read_socket(sock, buff, LKT_MESSAGE_MAX - 1); @@ -1177,11 +1198,8 @@ redo: } } -#define search_with_cmd(func, cmd) /* I don't want to write always the same things */ \ - EXIT_FUNCTION func(struct cmd_args *args) \ - { \ - search_with_cmd__(args, #cmd); \ - } +#define search_with_cmd(func, cmd) /* I don't want to write always the same things */ \ + EXIT_FUNCTION func(struct cmd_args *args) { search_with_cmd__(args, #cmd); } // clang-format off search_with_cmd(search_db__, search); search_with_cmd(search_count__, count); @@ -1251,11 +1269,11 @@ static struct cmd_opt options_stickers[] = { }; // clang-format on -#define sub_command(name) /* Create sub-commands here */ \ - EXIT_FUNCTION name##__(struct cmd_args *args) \ - { \ - FAIL_IF(!args->argc, "Invalid command, specify a sub command for " #name); \ - cmd_parse(options_##name, args->argc, args->argv); \ +#define sub_command(name) /* Create sub-commands here */ \ + EXIT_FUNCTION name##__(struct cmd_args *args) \ + { \ + FAIL_IF(!args->argc, "Invalid command, specify a sub command for " #name); \ + cmd_parse(options_##name, args->argc, args->argv); \ } sub_command(stickers); sub_command(search); @@ -1302,10 +1320,11 @@ sigpipe__(int sig) /* Handle the options switches */ -#define ___DEFINE_SETTER(what) \ - PRIVATE_FUNCTION void ___USE_SETTER(what)(const char UNUSED *name, const char *value, void UNUSED *user) \ - { \ - what = value; \ +#define ___DEFINE_SETTER(what) \ + PRIVATE_FUNCTION void ___USE_SETTER(what)(const char UNUSED *name, const char *value, \ + void UNUSED *user) \ + { \ + what = value; \ } #define ___USE_SETTER(what) ___set_env_##what diff --git a/src/main/luka.c b/src/main/luka.c index 552f14ad..96587164 100644 --- a/src/main/luka.c +++ b/src/main/luka.c @@ -63,7 +63,8 @@ ___setup(void) reg_export(luka_reg); FAIL_UNLESS(database_new((lkt_db **)&__db), "Can't init sqlite database"); - FAIL_IF(config_detect_file(path, PATH_MAX), "Can't find a config file, did you run lektord at least once?"); + FAIL_IF(config_detect_file(path, PATH_MAX), + "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); @@ -85,14 +86,14 @@ ___setup(void) PRIVATE_FUNCTION EXIT_FUNCTION ___handle_queue_and_exit(void) { -#define __CASE(type, func) \ - case LKT_EVENT_##type: \ - if (evt.attr != NULL) { \ - LOG_DEBUG("EVENT", "Got event " #type " (%d) with attr (int: %d, ptr %0*p)", LKT_EVENT_##type, evt.attr, \ - sizeof(size_t) * CHAR_BIT / 4, evt.attr); \ - } else \ - LOG_DEBUG("EVENT", "Got event " #type " (%d) with NULL attr", LKT_EVENT_##type); \ - func; \ +#define __CASE(type, func) \ + case LKT_EVENT_##type: \ + if (evt.attr != NULL) { \ + LOG_DEBUG("EVENT", "Got event " #type " (%d) with attr (int: %d, ptr %0*p)", \ + LKT_EVENT_##type, evt.attr, sizeof(size_t) * CHAR_BIT / 4, evt.attr); \ + } else \ + LOG_DEBUG("EVENT", "Got event " #type " (%d) with NULL attr", LKT_EVENT_##type); \ + func; \ break; lkt_event evt; @@ -149,7 +150,8 @@ ___callback_plt_list(struct lkt_state UNUSED *srv, size_t UNUSED c, const char * } PRIVATE_FUNCTION bool -___callback_list_row(struct lkt_state UNUSED *srv, size_t UNUSED c, int id, int id_len, const char *sql_row) +___callback_list_row(struct lkt_state UNUSED *srv, size_t UNUSED c, int id, int id_len, + const char *sql_row) { LKT_OUTPUT("SEARCH", "%*d %s", id_len, id, sql_row); return true; @@ -186,7 +188,8 @@ ___search(struct cmd_args *args, ___init_search_function init_function) { long count; struct lkt_uri search_uri = { .type = URI_NULL }; - struct lkt_search *search = database_search_new(NULL, 0, 0, FUNCTION_POINTER(___callback_list_row)); + struct lkt_search *search = + database_search_new(NULL, 0, 0, FUNCTION_POINTER(___callback_list_row)); database_search_set_uri(search, &search_uri); database_search_set_name(search, args->argv[0]); @@ -197,9 +200,12 @@ ___search(struct cmd_args *args, ___init_search_function init_function) if (!lkt_uri_from(&search_uri, (char **)args->argv)) { /* Try from idx 1, in case of playlust searches */ - LOG_DEBUG("COMMAND", "URI may not starts at idx 0, may be because of playlist search. At idx 0, value was '%s'", - args[0]); - FAIL_UNLESS(lkt_uri_from(&search_uri, (char **)&(args->argv[1])), "Failed to create the uri"); + LOG_DEBUG( + "COMMAND", + "URI may not starts at idx 0, may be because of playlist search. At idx 0, value was '%s'", + args[0]); + FAIL_UNLESS(lkt_uri_from(&search_uri, (char **)&(args->argv[1])), + "Failed to create the uri"); } database_search_set_uri(search, &search_uri); @@ -317,8 +323,9 @@ __search_get(struct cmd_args *args) memset(filepath, 0, sizeof(filepath)); FAIL_UNLESS(database_kara_by_id(__db, id, &kara, filepath), "Failed to find kara %ld", id); - LKT_OUTPUT("SEARCH", "%s - %s / %s - %s%d - %s [%s]", kara.category, kara.language, kara.source_name, - kara.song_type, kara.song_number, kara.song_name, kara.author_name); + LKT_OUTPUT("SEARCH", "%s - %s / %s - %s%d - %s [%s]", kara.category, kara.language, + kara.source_name, kara.song_type, kara.song_number, kara.song_name, + kara.author_name); /* Print with the duration */ if (!kara_read_length(&duration, filepath)) { @@ -376,8 +383,8 @@ end_plt_add_uri: PRIVATE_FUNCTION EXIT_FUNCTION __plt_list(struct cmd_args *args) { - function_ptr callback = - args->argc ? FUNCTION_POINTER(___callback_list_row) : FUNCTION_POINTER(___callback_plt_list); + function_ptr callback = args->argc ? FUNCTION_POINTER(___callback_list_row) + : FUNCTION_POINTER(___callback_plt_list); struct lkt_uri null_uri = { .type = URI_NULL }; struct lkt_search *search = database_search_new(NULL, 0, 0, callback); database_search_set_name(search, args->argc ? args->argv[0] : NULL); @@ -390,7 +397,8 @@ __plt_list(struct cmd_args *args) PRIVATE_FUNCTION EXIT_FUNCTION __admin_rescan(struct cmd_args UNUSED *args) { - FAIL_IF(MOD_PROC(__mod_repo, "rescan"), "Failed to call the 'rescan' function from the repo module"); + FAIL_IF(MOD_PROC(__mod_repo, "rescan"), + "Failed to call the 'rescan' function from the repo module"); ___handle_queue_and_exit(); } @@ -403,14 +411,16 @@ __admin_populate(struct cmd_args UNUSED *args) PRIVATE_FUNCTION EXIT_FUNCTION __admin_update(struct cmd_args UNUSED *args) { - FAIL_IF(MOD_PROC(__mod_repo, "update"), "Failed to call the 'update' function from the repo module"); + FAIL_IF(MOD_PROC(__mod_repo, "update"), + "Failed to call the 'update' function from the repo module"); ___handle_queue_and_exit(); } PRIVATE_FUNCTION EXIT_FUNCTION __admin_import(struct cmd_args UNUSED *args) { - FAIL_IF(MOD_PROC(__mod_repo, "import"), "Failed to call the 'import' function from the repo module"); + FAIL_IF(MOD_PROC(__mod_repo, "import"), + "Failed to call the 'import' function from the repo module"); ___handle_queue_and_exit(); } @@ -423,11 +433,11 @@ __admin_config(struct cmd_args UNUSED *args) /* Sub commands functions */ -#define __SUB_COMMAND(name) /* Create sub-commands here */ \ - PRIVATE_FUNCTION EXIT_FUNCTION __##name(struct cmd_args *args) \ - { \ - FAIL_IF(args->argc == 0, "Invalid command, specify a sub command for " #name); \ - cmd_parse(__options_##name, args->argc, args->argv); \ +#define __SUB_COMMAND(name) /* Create sub-commands here */ \ + PRIVATE_FUNCTION EXIT_FUNCTION __##name(struct cmd_args *args) \ + { \ + FAIL_IF(args->argc == 0, "Invalid command, specify a sub command for " #name); \ + cmd_parse(__options_##name, args->argc, args->argv); \ } __SUB_COMMAND(plt) __SUB_COMMAND(search) diff --git a/src/main/server.c b/src/main/server.c index 93429bb8..32506136 100644 --- a/src/main/server.c +++ b/src/main/server.c @@ -34,8 +34,8 @@ ___tty_disable_echo(void) ___tty_save = ___tty_cur; ___tty_cur.c_lflag &= ~ECHO; - GOTO_IF((tcsetattr(STDIN_FILENO, TCSAFLUSH, &___tty_cur) == -1), "Failed to turned of echo in termios flags", - error); + GOTO_IF((tcsetattr(STDIN_FILENO, TCSAFLUSH, &___tty_cur) == -1), + "Failed to turned of echo in termios flags", error); ___tty_must_be_restored = 1; return; @@ -48,7 +48,8 @@ DESTRUCTOR_FUNCTION ___tty_enable_echo(void) { RETURN_UNLESS(___tty_must_be_restored, "No need to restore the tty", NOTHING); - RETURN_IF(tcsetattr(STDIN_FILENO, TCSANOW, &___tty_save) == -1, "Failed to reset termios flags", NOTHING); + RETURN_IF(tcsetattr(STDIN_FILENO, TCSANOW, &___tty_save) == -1, "Failed to reset termios flags", + NOTHING); errno = 0; RETURN_IF(fflush(stdin) != 0, "Failed to flush stdin", NOTHING); } @@ -106,19 +107,11 @@ main(int argc, char *argv[]) /* Check args */ while ((opt = getopt(argc, argv, "DhFf:")) != -1) { switch (opt) { - case 'F': - check_exclusive = 0; - break; - case 'f': - strncpy(conf_file, optarg, PATH_MAX); - break; - case 'D': - dump_and_abort = 1; - break; + case 'F': check_exclusive = 0; break; + case 'f': strncpy(conf_file, optarg, PATH_MAX); break; + case 'D': dump_and_abort = 1; break; case 'h': - default: - print_help(); - exit(EXIT_SUCCESS); + default: print_help(); exit(EXIT_SUCCESS); } } @@ -151,7 +144,8 @@ retry_config: __mkdir(conf_file); /* Create the folder for the file. */ FILE *file_desc = fopen(conf_file, "w+"); - FAIL_UNLESS(file_desc, "Failed to open default config file '%s' to initialize it", conf_file); + FAIL_UNLESS(file_desc, "Failed to open default config file '%s' to initialize it", + conf_file); config_default(file_desc); fclose(file_desc); @@ -218,7 +212,8 @@ retry_config: char *env_current = env_get(LKT_ENV_CURRENT); if (env_current && env_current[0] && !STR_MATCH(env_current, "NULL")) { LOG_INFO("INIT", "Restart playback from %s", env_current); - lkt_queue_send(&srv.queue, LKT_EVENT_PLAY_POS, (void *)(size_t)strtol(env_current, NULL, 0)); + lkt_queue_send(&srv.queue, LKT_EVENT_PLAY_POS, + (void *)(size_t)strtol(env_current, NULL, 0)); } } diff --git a/src/mkv/utils.c b/src/mkv/utils.c index 904785e1..ff37c848 100644 --- a/src/mkv/utils.c +++ b/src/mkv/utils.c @@ -6,12 +6,13 @@ void 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) + + 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 + 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, mdt->author_name); + 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, + mdt->author_name); } static const uint8_t __magic[] = { 0x1A, 0x45, 0xDF, 0xA3 }; @@ -31,5 +32,6 @@ mkv_check_magic(const char *file) int mkv_magic(uint8_t tab[4]) { - return ((tab[0] != __magic[0]) + (tab[1] != __magic[1])) + ((tab[2] != __magic[2]) + (tab[3] != __magic[3])); + return ((tab[0] != __magic[0]) + (tab[1] != __magic[1])) + + ((tab[2] != __magic[2]) + (tab[3] != __magic[3])); } diff --git a/src/mkv/write.c b/src/mkv/write.c index 0b00e109..bb680d8a 100644 --- a/src/mkv/write.c +++ b/src/mkv/write.c @@ -83,9 +83,12 @@ mkvpropedit__(const char *const args[]) if ((status = WEXITSTATUS(wstatus))) { LOG_ERROR("FORK", "Children failed with status %d", status); if (status == 2) - LOG_ERROR("FORK", "Status 2 with mkvpropedit could means that karas are not valid MKV files"); + LOG_ERROR( + "FORK", + "Status 2 with mkvpropedit could means that karas are not valid MKV files"); else if (status == 1) - LOG_WARN("FORK", "Status 1 on mkvpropedit means that it generated some warnings..."); + LOG_WARN("FORK", + "Status 1 on mkvpropedit means that it generated some warnings..."); return false; } } @@ -110,8 +113,8 @@ kara_metadata_write(struct kara_metadata *mdt, const char *filename) goto error; } - if (dprintf(fd, METADATA_TEMPLATE, mdt->source_name, mdt->song_name, mdt->category, mdt->language, mdt->author_name, - mdt->song_type, mdt->song_number) < 0) { + if (dprintf(fd, METADATA_TEMPLATE, mdt->source_name, mdt->song_name, mdt->category, + mdt->language, mdt->author_name, mdt->song_type, mdt->song_number) < 0) { LOG_ERROR("MKV", "Failed to write to temporary file: %s", metadafilepath); goto error; } @@ -200,9 +203,11 @@ metadata_set_directory(const char *kara_dir) strncat(path, "/", PATH_MAX - 1); strncat(path, dir->d_name, PATH_MAX - 1); - if (dir->d_type == DT_REG && metadata_from_path(path, &meta) && !kara_metadata_write(&meta, path)) + if (dir->d_type == DT_REG && metadata_from_path(path, &meta) && + !kara_metadata_write(&meta, path)) continue; - else if (dir->d_type == DT_DIR && !STR_MATCH(dir->d_name, ".") && !STR_MATCH(dir->d_name, "..")) + else if (dir->d_type == DT_DIR && !STR_MATCH(dir->d_name, ".") && + !STR_MATCH(dir->d_name, "..")) metadata_set_directory(path); } diff --git a/src/module/module_repo.c b/src/module/module_repo.c index 6656a9e1..4c704f26 100644 --- a/src/module/module_repo.c +++ b/src/module/module_repo.c @@ -143,13 +143,13 @@ ___craft_filename_non_obfuscate(char str[PATH_MAX], struct kara *kara) { /* Not obfuscate filename, need to create directories, won't fail if not * possible. The program will fail later, when write will be attempted. */ - size_t len = safe_snprintf(str, PATH_MAX, "%s%s/%s/%s/", kara->database_filepath, kara->mdt.category, - kara->mdt.language, kara->mdt.author_name); + size_t len = safe_snprintf(str, PATH_MAX, "%s%s/%s/%s/", kara->database_filepath, + kara->mdt.category, kara->mdt.language, kara->mdt.author_name); ___mkdir(str, 0); if (access(str, R_OK | W_OK)) LOG_ERROR("REPO", "No access in read / write for folder %s", str); - safe_snprintf(str + len, PATH_MAX - len, "%s - %s%d - %s.mkv", kara->mdt.source_name, kara->mdt.song_type, - kara->mdt.song_number, kara->mdt.song_name); + safe_snprintf(str + len, PATH_MAX - len, "%s - %s%d - %s.mkv", kara->mdt.source_name, + kara->mdt.song_type, kara->mdt.song_number, kara->mdt.song_name); } PRIVATE_FUNCTION void @@ -285,7 +285,9 @@ retest: } } -#pragma message(TODO "Buffered writes. The buffer needs to be 1Mio to do something (each time, packets are 10Kio...)") +#pragma message( \ + TODO \ + "Buffered writes. The buffer needs to be 1Mio to do something (each time, packets are 10Kio...)") struct ___file file = { .path = path, .index = 0, @@ -345,7 +347,8 @@ ___handle_got_json_dl(struct kara *kara, int current_id) } if (kara_metadata_write(&kara->mdt, kara->filename)) { - LOG_WARN("REPO", "Could not write metadata to kara '%ld' with path '%s'", kara->id, kara->filename); + LOG_WARN("REPO", "Could not write metadata to kara '%ld' with path '%s'", kara->id, + kara->filename); return; } @@ -353,7 +356,8 @@ ___handle_got_json_dl(struct kara *kara, int current_id) lkt_queue_send(kara->repo->queue, LKT_EVENT_TOUCH_KARA, (void *)(size_t)kara->id); database_stamp(kara->db); ++(kara->update_count); - LOG_INFO("REPO", "Added kara %ld from repo %s, filepath is %s", kara->id, kara->repo->name, kara->filename); + LOG_INFO("REPO", "Added kara %ld from repo %s, filepath is %s", kara->id, kara->repo->name, + kara->filename); } PRIVATE_FUNCTION int @@ -371,17 +375,17 @@ ___handle_got_json_internal_callback(const char *key, const char *val, int comp, /* Get the fields */ if (!comp && key && val) { -#define ___get_field_string(field) \ - { \ - if (STR_MATCH(#field, key)) { \ - safe_strncpy(kara->mdt.field, val, LEKTOR_TAG_MAX); \ - } \ - } -#define ___get_field_long_ex(field, json) \ - { \ - if (STR_MATCH(#json, key)) { \ - kara->field = strtol(val, NULL, 0); \ - } \ +#define ___get_field_string(field) \ + { \ + if (STR_MATCH(#field, key)) { \ + safe_strncpy(kara->mdt.field, val, LEKTOR_TAG_MAX); \ + } \ + } +#define ___get_field_long_ex(field, json) \ + { \ + if (STR_MATCH(#json, key)) { \ + kara->field = strtol(val, NULL, 0); \ + } \ } #define ___get_field_long_mdt(field) ___get_field_long_ex(mdt.field, field) #define ___get_field_long_kara(field) ___get_field_long_ex(field, field) @@ -481,7 +485,8 @@ ___handle_got_json(lkt_db *db, struct module_repo_internal *repo, const char *js .real_arg = (void *)&kara, }; int ret = json_parse(json, 2, ___handle_got_json_internal_callback, &arg); - LOG_INFO("REPO", "Updated %ld, ignored %ld, total is %ld", kara.update_count, kara.ignored_count, len); + LOG_INFO("REPO", "Updated %ld, ignored %ld, total is %ld", kara.update_count, + kara.ignored_count, len); return ret; } @@ -742,7 +747,8 @@ module_repo_new(struct module_repo_internal *repo_, struct queue *queue, lkt_db } obfuscate = obfuscate ? 1 : 0; /* Safe values */ - LOG_WARN("REPO", "Downloading base in %s mode, mode is number: %d", obfuscate ? "obfuscation" : "clear", obfuscate); + LOG_WARN("REPO", "Downloading base in %s mode, mode is number: %d", + obfuscate ? "obfuscation" : "clear", obfuscate); if (!database_config_obfuscation_check(db, obfuscate)) LOG_WARN("REPO", "Database obfuscation mismatch. File names may be inconsistent"); diff --git a/src/module/module_sdl2.c b/src/module/module_sdl2.c index b3a99e92..78d12ce1 100644 --- a/src/module/module_sdl2.c +++ b/src/module/module_sdl2.c @@ -98,7 +98,8 @@ static inline bool init_mpv_gl__(mpv_handle *mpv, mpv_render_context **mpv_gl, mpv_render_param *params) { int status; - RETURN_IF((status = mpv_render_context_create(mpv_gl, mpv, params)) < 0, mpv_error_string(status), 1); + RETURN_IF((status = mpv_render_context_create(mpv_gl, mpv, params)) < 0, + mpv_error_string(status), 1); wakeup_on_mpv_render_update = SDL_RegisterEvents(1); wakeup_on_mpv_events = SDL_RegisterEvents(1); @@ -331,8 +332,9 @@ sdl_thread__(struct poller_thread_arg *arg) RETURN_IF(SDL_Init(SDL_INIT_VIDEO) < 0, "Failed to init SDL", NULL); RETURN_IF(IMG_Init(IMG_INIT_JPG | IMG_INIT_PNG) < 0, "Failed to init", NULL) - sdl2->window = SDL_CreateWindow("lektord", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, WIDTH, HEIGHT, - SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE); + sdl2->window = + SDL_CreateWindow("lektord", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, WIDTH, HEIGHT, + SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE); RETURN_UNLESS(sdl2->window, "Failed to create the window", NULL); sdl2->glcontext = SDL_GL_CreateContext((SDL_Window *)sdl2->window); RETURN_UNLESS(sdl2->glcontext, "Failed to create the SDL context", NULL); @@ -386,8 +388,7 @@ loop: goto end; switch (event.type) { - case SDL_QUIT: - break; + case SDL_QUIT: break; case SDL_WINDOWEVENT: if (event.window.event == SDL_WINDOWEVENT_EXPOSED) { @@ -435,8 +436,7 @@ loop: } break; - case SDL_TEXTINPUT: - break; + case SDL_TEXTINPUT: break; default: if (event.type == wakeup_on_mpv_render_update) { @@ -496,7 +496,8 @@ module_sdl2_new(struct module_sdl2_window **win, struct queue *queue, lkt_db *db arg = LKT_ALLOC_STRUCT(poller_thread_arg); RETURN_UNLESS(arg, "Out of memory", false); arg->args = *win; - RETURN_IF(poller_new(&(*win)->self, sdl_thread__, arg), "Failed to launch the SDL thread", false); + RETURN_IF(poller_new(&(*win)->self, sdl_thread__, arg), "Failed to launch the SDL thread", + false); } else LOG_DEBUG("WINDOW", "SDL window already created"); diff --git a/src/module/mpv.h b/src/module/mpv.h index ce6c0162..cac89ac8 100644 --- a/src/module/mpv.h +++ b/src/module/mpv.h @@ -23,7 +23,8 @@ struct lmpv_handle_arg { volatile int *hinib; volatile int *set_seek; }; -int lmpv_handle(struct lkt_module *mod, mpv_handle *ctx, struct queue *queue, struct lmpv_handle_arg *); +int lmpv_handle(struct lkt_module *mod, mpv_handle *ctx, struct queue *queue, + struct lmpv_handle_arg *); enum { STATE_STOP = 0, @@ -31,4 +32,5 @@ enum { STATE_PAUSE = 2, }; -#define SET_STATE_FLAG(sta, STATUS) (LOG_DEBUG("WINDOW", "Set status flag to " #STATUS), (sta) = STATE_##STATUS) +#define SET_STATE_FLAG(sta, STATUS) \ + (LOG_DEBUG("WINDOW", "Set status flag to " #STATUS), (sta) = STATE_##STATUS) diff --git a/src/module/thread.h b/src/module/thread.h index 5c2907b5..109a3a94 100644 --- a/src/module/thread.h +++ b/src/module/thread.h @@ -111,10 +111,10 @@ th_head(struct stack *lst, pthread_mutex_t *lock, void **ptr) return ret; } -#define __POLLER_ATOMICS_DEFINE(operation, inout, level) \ - UNUSED static int poller_##operation##inout(struct poller_thread *th, void level ptr) \ - { \ - return th_##operation(&th->inout, &th->inout##_lock, ptr); \ +#define __POLLER_ATOMICS_DEFINE(operation, inout, level) \ + UNUSED static int poller_##operation##inout(struct poller_thread *th, void level ptr) \ + { \ + return th_##operation(&th->inout, &th->inout##_lock, ptr); \ } // clang-format off __POLLER_ATOMICS_DEFINE(append, input, *); diff --git a/src/module/worker.c b/src/module/worker.c index 2c248723..d35fc181 100644 --- a/src/module/worker.c +++ b/src/module/worker.c @@ -13,7 +13,8 @@ ___worker_thread(void *___pool) volatile struct worker_pool *pool = (volatile struct worker_pool *)___pool; volatile void *volatile arg; worker_function func; - FOR_EVER { + FOR_EVER + { assert(!pthread_mutex_lock((pthread_mutex_t *)&pool->lock)); if (pool->len) { --(pool->len); diff --git a/src/net/listen.c b/src/net/listen.c index b544020e..ba14da9f 100644 --- a/src/net/listen.c +++ b/src/net/listen.c @@ -33,8 +33,8 @@ typedef enum { } LKT_COMMAND_TYPE; struct cmd_trie_node { - LKT_COMMAND_TYPE type; /* The type of the command, to reinterpret the function pointer */ - void (*cmd_ptr)(void); /* The function pointer of the command */ + LKT_COMMAND_TYPE type; /* The type of the command, to reinterpret the function pointer */ + void (*cmd_ptr)(void); /* The function pointer of the command */ struct cmd_trie_node *children[CHARS_MAX]; /* Childrens, a byte is 256 possible values */ }; @@ -142,8 +142,7 @@ ___cmd_trie_print(struct cmd_trie_node *root, char *old_prefix, const size_t len switch (root->type) { /* Not a terminal node */ - case LKT_COMMAND_NULL: - break; + case LKT_COMMAND_NULL: break; /* A terminal node */ case LKT_COMMAND_SIMPLE: @@ -344,7 +343,8 @@ send_status(struct lkt_state *srv, size_t c, int status, const char *cmd_name) LOG_DEBUG("COMMAND", "Command '%s'", cmd_name); send_ok(srv, c); } else { - LOG_DEBUG("COMMAND", "Command '%s' %s", cmd_name, status == 2 ? "is unknown" : "has failed"); + LOG_DEBUG("COMMAND", "Command '%s' %s", cmd_name, + status == 2 ? "is unknown" : "has failed"); send_ack(srv, c, cmd_name); } } @@ -386,14 +386,10 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd) switch (cmd_node->type) { /* Basic command */ - case LKT_COMMAND_SIMPLE: - err = !handle_function.simple(srv, c, cmd.args); - break; + case LKT_COMMAND_SIMPLE: err = !handle_function.simple(srv, c, cmd.args); break; /* Anonymous client command */ - case LKT_COMMAND_ANON: - err = !handle_function.anon(srv, cmd.args); - break; + case LKT_COMMAND_ANON: err = !handle_function.anon(srv, cmd.args); break; /* Need the continuation */ case LKT_COMMAND_CONTINUATION: @@ -402,8 +398,7 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd) /* Unreachable */ case LKT_COMMAND_NULL: - default: - LOG_UNREACHABLE; + default: LOG_UNREACHABLE; } } @@ -432,9 +427,10 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd) goto end_no_send_status; } - else if (STR_MATCH(cmd.name, "search") || STR_MATCH(cmd.name, "find") || STR_MATCH(cmd.name, "list") || - STR_MATCH(cmd.name, "listall") || STR_MATCH(cmd.name, "listallinfo") || - STR_MATCH(cmd.name, "listfiles") || STR_MATCH(cmd.name, "lsinfo")) { + else if (STR_MATCH(cmd.name, "search") || STR_MATCH(cmd.name, "find") || + STR_MATCH(cmd.name, "list") || STR_MATCH(cmd.name, "listall") || + STR_MATCH(cmd.name, "listallinfo") || STR_MATCH(cmd.name, "listfiles") || + STR_MATCH(cmd.name, "lsinfo")) { err = !command_find(srv, c, cmd.args, cmd.cont, database_search_database_init); } @@ -523,7 +519,8 @@ handle_incoming_data(struct lkt_state *srv, size_t i) for (;;) { /* Recieve some data. */ - n = recv(srv->fds[i].fd, cli->buffer_in + cli->buffer_in_len, LKT_MESSAGE_MAX - cli->buffer_in_len, 0); + n = recv(srv->fds[i].fd, cli->buffer_in + cli->buffer_in_len, + LKT_MESSAGE_MAX - cli->buffer_in_len, 0); if (n < 0) { if (errno == EWOULDBLOCK || errno == EAGAIN) return 0; @@ -981,21 +978,21 @@ lkt_close_server(struct lkt_state *srv) static inline void handle_queue_events(struct lkt_state *srv) { -#define __CASE(type, func) \ - case LKT_EVENT_##type: \ - if (evt.attr != NULL) { \ - LOG_DEBUG("EVENT", "Got event " #type " (%d) with attr (int: %d, ptr %0*p)", LKT_EVENT_##type, evt.attr, \ - sizeof(size_t) * CHAR_BIT / 4, evt.attr); \ - } else { \ - LOG_DEBUG("EVENT", "Got event " #type " (%d) with NULL attr", LKT_EVENT_##type); \ - } \ - func; \ +#define __CASE(type, func) \ + case LKT_EVENT_##type: \ + if (evt.attr != NULL) { \ + LOG_DEBUG("EVENT", "Got event " #type " (%d) with attr (int: %d, ptr %0*p)", \ + LKT_EVENT_##type, evt.attr, sizeof(size_t) * CHAR_BIT / 4, evt.attr); \ + } else { \ + LOG_DEBUG("EVENT", "Got event " #type " (%d) with NULL attr", LKT_EVENT_##type); \ + } \ + func; \ break; -#define __ATTR_IS_STATE(state, func) \ - { \ - if ((__LKT_PLAY_##state) == (size_t)evt.attr) { \ - func; \ - } \ +#define __ATTR_IS_STATE(state, func) \ + { \ + if ((__LKT_PLAY_##state) == (size_t)evt.attr) { \ + func; \ + } \ } lkt_event evt; @@ -1075,10 +1072,10 @@ static int __lkt_signal_USR2 = 0; /* SIGUSR2 => not used */ static void __signal_handler(int sig) { -#define __HANDLE(signal) \ - case SIG##signal: \ - LOG_INFO("SIGNAL", "Got signal SIG" #signal); \ - __lkt_signal_##signal = 1; \ +#define __HANDLE(signal) \ + case SIG##signal: \ + LOG_INFO("SIGNAL", "Got signal SIG" #signal); \ + __lkt_signal_##signal = 1; \ break; switch (sig) { @@ -1087,9 +1084,7 @@ __signal_handler(int sig) __HANDLE(QUIT) __HANDLE(USR1) __HANDLE(USR2) - default: - LOG_WARN("SIGNAL", "Not handled signal %d", sig); - break; + default: LOG_WARN("SIGNAL", "Not handled signal %d", sig); break; } #undef __HANDLE @@ -1133,14 +1128,14 @@ __lkt_handle_USR2(struct lkt_state UNUSED *srv) static inline void handle_signals(struct lkt_state *srv) { -#define __HANDLE(srv, signal) \ - if (__lkt_signal_##signal) { \ - LOG_INFO("SIGNAL", "Server in handle phase for signal SIG" #signal); \ - if (srv->__signal_##signal) \ - srv->__signal_##signal(srv); \ - else \ - LOG_WARN("SIGNAL", "No signal handler in server for SIG" #signal); \ - } \ +#define __HANDLE(srv, signal) \ + if (__lkt_signal_##signal) { \ + LOG_INFO("SIGNAL", "Server in handle phase for signal SIG" #signal); \ + if (srv->__signal_##signal) \ + srv->__signal_##signal(srv); \ + else \ + LOG_WARN("SIGNAL", "No signal handler in server for SIG" #signal); \ + } \ __lkt_signal_##signal = 0; __HANDLE(srv, INT) @@ -1198,7 +1193,8 @@ lkt_listen(struct lkt_state *srv) } } - init_socket_func init_sock = is_unix_socket ? init_listening_socket_unix : init_listening_socket_net; + init_socket_func init_sock = + is_unix_socket ? init_listening_socket_unix : init_listening_socket_net; if ((srv->fds[0].fd = init_sock(srv->host, srv->port)) < 0) LOG_FATAL("Failed to init socket: %s:%s", srv->host, srv->port); -- GitLab