From 17657c6e7382428481d6f866ca355e328bc17cfe Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Wed, 6 Jan 2021 15:24:49 +0100
Subject: [PATCH] CMD: Add the '__import' command in the protocol to import
 favorites

---
 inc/lektor/commands.h | 1 +
 src/base/commands.c   | 9 +++++++++
 src/main/lkt.c        | 2 +-
 src/net/listen.c      | 2 ++
 4 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/inc/lektor/commands.h b/inc/lektor/commands.h
index 7cc63b06..bae6beeb 100644
--- a/inc/lektor/commands.h
+++ b/inc/lektor/commands.h
@@ -85,6 +85,7 @@ bool command_user_add(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_AR
 /* Program management control */
 bool command_restart(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX]);
 bool command_kill   (struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX]);
+bool command_import (struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX]);
 bool command_update (struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX]);
 bool command_rescan (struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS_MAX], int forced);
 
diff --git a/src/base/commands.c b/src/base/commands.c
index 9b7b4933..d5b442ec 100644
--- a/src/base/commands.c
+++ b/src/base/commands.c
@@ -60,6 +60,15 @@ command_update(struct lkt_state *srv, size_t c, char UNUSED *argv[LKT_MESSAGE_AR
     return ! MOD_PROC(srv->repo_mod, "update");
 }
 
+bool
+command_import(struct lkt_state *srv, size_t c, char UNUSED *argv[LKT_MESSAGE_ARGS_MAX])
+{
+    RETURN_UNLESS(lkt_client_auth(srv, c, false), "Failed to authentificate user", false);
+    srv->mpd_idle_events |= MPD_IDLE_UPDATE;
+    srv->mpd_idle_events |= MPD_IDLE_DATABASE;
+    return ! MOD_PROC(srv->repo_mod, "import");
+}
+
 bool
 command_rescan(struct lkt_state *srv, size_t c, char UNUSED *argv[LKT_MESSAGE_ARGS_MAX],
                int UNUSED forced)
diff --git a/src/main/lkt.c b/src/main/lkt.c
index 5edcc32d..af3f49ec 100644
--- a/src/main/lkt.c
+++ b/src/main/lkt.c
@@ -358,7 +358,7 @@ update__(struct cmd_args *args)
 noreturn void
 import__(struct cmd_args *args)
 {
-    rescan_or_update__(args, "import");
+    rescan_or_update__(args, "__import");
 }
 
 noreturn void
diff --git a/src/net/listen.c b/src/net/listen.c
index 00f7c7f8..908c026b 100644
--- a/src/net/listen.c
+++ b/src/net/listen.c
@@ -162,6 +162,8 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd)
             err = ! command_update(srv, c, cmd.args);
         else if (STR_MATCH(cmd.name, "rescan"))
             err = ! command_rescan(srv, c, cmd.args, false);
+        else if (STR_MATCH(cmd.name, "__import"))
+            err = ! command_import(srv, c, cmd.args);
         else if (STR_MATCH(cmd.name, "__rescan"))
             err = ! command_rescan(srv, c, cmd.args, true);
 
-- 
GitLab