diff --git a/inc/lektor/database.h b/inc/lektor/database.h index 41ef160a072bab994fb540efb9f2548139f68f8c..cd8c6c93af0836e01aae049c0f3cc9458c0864b6 100644 --- a/inc/lektor/database.h +++ b/inc/lektor/database.h @@ -86,8 +86,7 @@ bool database_queue_list_abs(sqlite3 *db, unsigned int from, unsigned int to, st /* Search the database */ bool database_search_queue_init(sqlite3 *db, char *col_name, char *rgx, sqlite3_stmt **ret); -bool database_search_iter(sqlite3 *db, sqlite3_stmt *item, void *args, - struct lkt_callback callback, bool *need_free); +bool database_search_iter(sqlite3 *db, sqlite3_stmt *item, struct lkt_callback *callback, bool *need_free); /* Next and prev operation on the queue. */ bool database_queue_next(sqlite3 *db, char filepath[PATH_MAX]); diff --git a/src/commands.c b/src/commands.c index 11b8f1f45c35d6c86bbf47cc69fd3163cc7e46ea..d7de4629c6e8e9049b56f5e962b69e974cc47082 100644 --- a/src/commands.c +++ b/src/commands.c @@ -524,7 +524,7 @@ command_noidle(struct lkt_state *srv, size_t c) static bool lkt_callback_print_row_v1(void *args, int id, int id_len, const char *sql_row) { - printf(" . from client %ld:\t%*d:%s\n", ((struct _client_trace_t *) args)->c, + printf(" . from client %ld:\t%*d:%s\n", ((struct lkt_callback *) args)->c, id_len, id, sql_row); return true; } @@ -532,7 +532,7 @@ lkt_callback_print_row_v1(void *args, int id, int id_len, const char *sql_row) static bool lkt_callback_send_row_v1(void *_args, int id, int id_len, const char *sql_row) { - struct _client_trace_t *args = (struct _client_trace_t *) _args; + struct lkt_callback *args = (struct lkt_callback *) _args; struct lkt_message *out; out = lkt_message_new(); @@ -546,7 +546,7 @@ lkt_callback_insert_v1(void *_args, int id, int id_len, const char *sql_row) { (void) sql_row; (void) id_len; - struct _client_trace_t *args = (struct _client_trace_t *) _args; + struct lkt_callback *args = (struct lkt_callback *) _args; return database_queue_add_id(args->srv->db, id, 5); } @@ -559,9 +559,8 @@ command_find(struct lkt_state *srv, sqlite3_stmt *stmt; char rgx[PATH_MAX], *col_name, *mpd_tag; bool once, free_stmt; - struct _client_trace_t args; struct lkt_message *not_found_msg; - struct lkt_callback callback; + struct lkt_callback callback = { .srv = srv, .c = c }; // Check args // if (cmd_args == NULL || cmd_args[0] == NULL) { @@ -573,8 +572,6 @@ command_find(struct lkt_state *srv, switch (action) { case LKT_FND_ACT_RESPOND: callback.call = lkt_callback_send_row_v1; - args.srv = srv; - args.c = c; break; case LKT_FND_ACT_PRINT: callback.call = lkt_callback_print_row_v1; @@ -582,8 +579,6 @@ command_find(struct lkt_state *srv, case LKT_FND_ACT_ENQUEUE: callback.call = lkt_callback_insert_v1; srv->mpd_idle_events |= MPD_IDLE_PLAYLIST; - args.srv = srv; - args.c = c; break; case LKT_FND_ACT_NONE: default: @@ -631,7 +626,7 @@ command_find(struct lkt_state *srv, return false; } - for (once = false; database_search_iter(srv->db, stmt, &args, callback, &free_stmt); once |= true) + for (once = false; database_search_iter(srv->db, stmt, &callback, &free_stmt); once |= true) continue; // End // diff --git a/src/database/find.c b/src/database/find.c index cdccbb42f26eb833ff1e501338ae4c56ece9ba50..22f60e0a4940abc7acf725be78be05dc300ecf7d 100644 --- a/src/database/find.c +++ b/src/database/find.c @@ -35,7 +35,7 @@ error: } bool -database_search_iter(sqlite3 *db, sqlite3_stmt *item, void *args, struct lkt_callback callback, +database_search_iter(sqlite3 *db, sqlite3_stmt *item, struct lkt_callback *callback, bool *need_free) { const char *sql_row; @@ -56,7 +56,7 @@ database_search_iter(sqlite3 *db, sqlite3_stmt *item, void *args, struct lkt_cal id = sqlite3_column_int(item, 0); sql_row = (const char *) sqlite3_column_text(item, 1); id_len = sqlite3_column_int(item, 2); - return callback.call(args, id, id_len, sql_row); + return callback->call(callback, id, id_len, sql_row); } fprintf(stderr, " ! database_search_iter: sqlite3_step failed: %s\n", sqlite3_errmsg(db));