From 47c7c3cfd21b17a57b98a212b084b5ad426329c3 Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Wed, 15 Apr 2020 12:15:02 +0200
Subject: [PATCH] Little updates

---
 inc/lektor/database.h |  1 +
 inc/lektor/net.h      |  2 ++
 src/commands.c        | 55 +++++++++++++------------------------------
 src/database/queue.c  |  3 ++-
 src/net/listen.c      |  6 +++++
 5 files changed, 27 insertions(+), 40 deletions(-)

diff --git a/inc/lektor/database.h b/inc/lektor/database.h
index 73c87476..796398e9 100644
--- a/inc/lektor/database.h
+++ b/inc/lektor/database.h
@@ -78,6 +78,7 @@ struct lkt_callback {
     bool (*call)(void *args, int id, int id_len, const char *sql_row);
     struct lkt_state *srv;
     size_t c;
+    int iterations;
 };
 
 /* List the content of the queue */
diff --git a/inc/lektor/net.h b/inc/lektor/net.h
index 1ae6e87d..7c64ff18 100644
--- a/inc/lektor/net.h
+++ b/inc/lektor/net.h
@@ -50,6 +50,8 @@ void lkt_state_send(struct lkt_state *srv, size_t c, struct lkt_message *msg);
 bool lkt_get_continuation(struct lkt_state *srv, size_t c);
 void lkt_set_continuation(struct lkt_state *srv, size_t c, int i);
 
+size_t lkt_remaining_msg(struct lkt_state *srv, size_t c);
+
 /* Get the mask to watch for events for a given client, to be used with the `idle` command.
  * Return a pointer to the client's mask */
 enum mpd_idle_flag *lkt_client_get_mask(struct lkt_state *srv, size_t c);
diff --git a/src/commands.c b/src/commands.c
index b04bd870..67314205 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -58,12 +58,10 @@ bool
 command_rescan(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX])
 {
     (void) argv;
-
     if (!lkt_client_auth(srv, c, false)) {
         fprintf(stderr, " ! command_rescan: Failed, user %lu not authentificated\n", c);
         return false;
     }
-
     return ! repo_get_allid_async();
 }
 
@@ -74,7 +72,6 @@ command_kill(struct lkt_state *srv, size_t c)
         fprintf(stderr, " ! command_restart: Failed to restart, user not authentificated %lu\n", c);
         return false;
     }
-
     fprintf(stderr, " * Stopping lektord\n");
     close(srv->fds[0].fd);
     exit(EXIT_SUCCESS);
@@ -243,10 +240,8 @@ command_stop(sqlite3 *db, struct lkt_win *win, enum mpd_idle_flag *watch_mask_pt
 {
     *watch_mask_ptr |= MPD_IDLE_PLAYER;
     bool res = database_queue_stop(db);
-
     if (res)
         win->close(win);
-
     return res;
 }
 
@@ -263,16 +258,11 @@ command_add(sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX],
     struct lkt_uri_t uri;
     char *query = args[0];
     bool ret, is_insert = false;
-    int priority = 1; /* To be modified according to the command (insert or add) later */
-
+    int priority = 1;   /* To be modified according to the command (insert or add) later */
 
     (void) is_insert;   // Don't know what insert looks like
     (void) win;         // No callbacks to the window for the moment
 
-    int i;
-    for (i = 0; args[i] != NULL; ++i)
-        printf("%s", args[i]);
-
     if (!lkt_uri_from(&uri, query)) {
         fprintf(stderr, " ! command_add: failed to parse query '%s', invalid uri\n", query);
         return false;
@@ -342,14 +332,14 @@ command_addid(sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX]
     return database_queue_add_id(db, id, priority);
 }
 
-bool
+inline bool
 command_clear(sqlite3 *db, enum mpd_idle_flag *watch_mask_ptr)
 {
     *watch_mask_ptr |= MPD_IDLE_PLAYLIST;
     return database_queue_clear(db);
 }
 
-bool
+inline bool
 command_crop(sqlite3 *db, enum mpd_idle_flag *watch_mask_ptr)
 {
     *watch_mask_ptr |= MPD_IDLE_PLAYLIST;
@@ -502,12 +492,11 @@ command_idle(struct lkt_state *srv, size_t c, struct lkt_command *cmd)
     return true;
 }
 
-bool
+inline bool
 command_noidle(struct lkt_state *srv, size_t c)
 {
     enum mpd_idle_flag *clt_mask = lkt_client_get_mask(srv, c);
     *clt_mask = MPD_IDLE_NONE;
-
     return true;
 }
 
@@ -524,9 +513,7 @@ static bool
 lkt_callback_send_row_v1(void *_args, int id, int id_len, const char *sql_row)
 {
     struct lkt_callback *args = (struct lkt_callback *) _args;
-    struct lkt_message *out;
-
-    out = lkt_message_new();
+    struct lkt_message *out = lkt_message_new();
     out->data_len = snprintf(out->data, LKT_MESSAGE_MAX, "%*d %s\n", id_len, id, sql_row);
     lkt_state_send(args->srv, args->c, out);
     return true;
@@ -537,14 +524,11 @@ lkt_callback_insert_v1(void *_args, int id, int id_len, const char *sql_row)
 {
     (void) sql_row;
     (void) id_len;
-    struct lkt_callback *args = (struct lkt_callback *) _args;
-    return database_queue_add_id(args->srv->db, id, 5);
+    return database_queue_add_id(((struct lkt_callback *) _args)->srv->db, id, 5);
 }
 
 bool
-command_find(struct lkt_state *srv,
-             size_t c,
-             char *cmd_args[LKT_MESSAGE_ARGS_MAX],
+command_find(struct lkt_state *srv, size_t c, char *cmd_args[LKT_MESSAGE_ARGS_MAX],
              enum lkt_find_action action)
 {
     sqlite3_stmt *stmt;
@@ -571,7 +555,6 @@ command_find(struct lkt_state *srv,
         callback.call = lkt_callback_insert_v1;
         srv->mpd_idle_events |= MPD_IDLE_PLAYLIST;
         break;
-    case LKT_FND_ACT_NONE:
     default:
         return false;
     }
@@ -644,8 +627,7 @@ command_set_playback_option(struct lkt_state *srv, size_t c,
         return false;
 
     (void) c;
-    long val;
-    bool ret = false;
+    long val, ret = false;
     char *endptr;
     struct lkt_win *win = &srv->win;
 
@@ -899,11 +881,9 @@ command_shuffle(sqlite3 *db, enum mpd_idle_flag *watch_mask_ptr)
 }
 
 bool
-command_queue_list(struct lkt_state *srv, size_t c,
-                   char *args[LKT_MESSAGE_ARGS_MAX])
+command_queue_list(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX])
 {
-    unsigned int count;
-    unsigned int from, to, tmp_switch;
+    unsigned int count, from, to, tmp_switch;
     long val;
     char *endptr, *str;
     struct lkt_callback callback = {
@@ -1021,13 +1001,11 @@ command_user_add(sqlite3 *db, char *argv[LKT_MESSAGE_ARGS_MAX])
 static bool
 sticker_send_one_value(void *_args, const char *sticker, const char *type, int uri, int value)
 {
-    struct sticker_callback *args = (struct sticker_callback *) _args;
-    struct lkt_message *out;
     (void) sticker;
     (void) type;
     (void) uri;
-
-    out = lkt_message_new();
+    struct sticker_callback *args = (struct sticker_callback *) _args;
+    struct lkt_message *out = lkt_message_new();
     out->data_len = snprintf(out->data, LKT_MESSAGE_MAX, "value: %d\n", value);
     lkt_state_send(args->srv, args->c, out);
     return false;
@@ -1037,9 +1015,7 @@ static bool
 sticker_send_all(void *_args, const char *sticker, const char *type, int uri, int value)
 {
     struct sticker_callback *args = (struct sticker_callback *) _args;
-    struct lkt_message *out;
-
-    out = lkt_message_new();
+    struct lkt_message *out = lkt_message_new();
     out->data_len = snprintf(out->data, LKT_MESSAGE_MAX, "%s: %d\nsticker: %s\nvalue: %d\n",
                              type, uri, sticker, value);
     lkt_state_send(args->srv, args->c, out);
@@ -1050,11 +1026,10 @@ static bool
 sticker_send_check_uri(void *_args, const char *sticker, const char *type, int uri, int value)
 {
     struct sticker_callback *args = (struct sticker_callback *) _args;
-    struct lkt_message *out;
     (void) type;
 
     if (uri == args->uri) {
-        out = lkt_message_new();
+        struct lkt_message *out = lkt_message_new();
         out->data_len = snprintf(out->data, LKT_MESSAGE_MAX, "%s: %d\n", sticker, value);
         lkt_state_send(args->srv, args->c, out);
     }
@@ -1147,6 +1122,7 @@ command_sticker_set(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS
         return false;
     }
 
+    srv->mpd_idle_events |= MPD_IDLE_STICKER;
     return true;
 }
 
@@ -1229,5 +1205,6 @@ command_sticker_delete(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_A
 
     (void) c;
     int uri = atoi(argv[1]);
+    srv->mpd_idle_events |= MPD_IDLE_STICKER;
     return database_sticker_delete_specify(srv->db, argv[0], uri, argv[2]);
 }
diff --git a/src/database/queue.c b/src/database/queue.c
index 5e042014..ff7f174e 100644
--- a/src/database/queue.c
+++ b/src/database/queue.c
@@ -701,6 +701,7 @@ database_queue_list_abs(sqlite3 *db, unsigned int from, unsigned int to, struct
             id = sqlite3_column_int(stmt, 0);
             row = (const char *) sqlite3_column_text(stmt, 1);
             id_len = sqlite3_column_int(stmt, 2);
+            ++(callback->iterations);
             if (callback->call(callback, id, id_len, row))
                 continue;
             else
@@ -748,11 +749,11 @@ database_queue_list_from(sqlite3 *db, unsigned int count, struct lkt_callback *c
     for (;;) {
         code = sqlite3_step(stmt);
 
-
         if (code == SQLITE_ROW) {
             id = sqlite3_column_int(stmt, 0);
             row = (const char *) sqlite3_column_text(stmt, 1);
             id_len = sqlite3_column_int(stmt, 2);
+            ++(callback->iterations);
             if (callback->call(callback, id, id_len, row))
                 continue;
             else
diff --git a/src/net/listen.c b/src/net/listen.c
index 2c7b7396..11418168 100644
--- a/src/net/listen.c
+++ b/src/net/listen.c
@@ -75,6 +75,12 @@ lkt_set_continuation(struct lkt_state *srv, size_t c, int i)
     srv->clients[c - 1].continuation = i;
 }
 
+inline size_t
+lkt_remaining_msg(struct lkt_state *srv, size_t c)
+{
+    return BUFFER_OUT_MAX - srv->clients[c - 1].buffer_out_len;
+}
+
 void
 lkt_state_send(struct lkt_state *srv, size_t c, struct lkt_message *msg)
 {
-- 
GitLab