diff --git a/src/commands.c b/src/commands.c index 3ac24119993f1f56208f4f91025ffaef2283dcb8..64aa02c716aa9160fcba5363cc48a234358d5103 100644 --- a/src/commands.c +++ b/src/commands.c @@ -871,27 +871,49 @@ command_plt_rename(sqlite3 *db, char *args[LKT_MESSAGE_ARGS_MAX], long long int bool command_plt_export(sqlite3 *db, char *args[LKT_MESSAGE_ARGS_MAX], long long int *watch_mask_ptr) { + int ret = false; + if (args == NULL || args[0] == NULL || args[1] == NULL) return false; - // if (database_plt_export(db, args[0], args[1])) { - // *watch_mask_ptr |= MPD_IDLE_PLAYLIST; - // return true; - // } else - // return false; + if (!database_attach(db, args[0], args[1])) + goto error; + + if (!database_plt_export(db, args[0])) + goto error; + + if (!database_detach(db, args[0])) + goto error; + + fprintf(stderr, " * Exported playlist %s with path '%s'\n", args[0], args[1]); + *watch_mask_ptr |= MPD_IDLE_PLAYLIST; + ret = true; +error: + return ret; } bool command_plt_import(sqlite3 *db, char *args[LKT_MESSAGE_ARGS_MAX], long long int *watch_mask_ptr) { + int ret = false; + if (args == NULL || args[0] == NULL || args[1] == NULL) return false; - // if (database_plt_import(db, args[0], args[1])) { - // *watch_mask_ptr |= MPD_IDLE_PLAYLIST; - // return true; - // } else - // return false; + if (!database_attach(db, args[0], args[1])) + goto error; + + if (!database_plt_import(db, args[0])) + goto error; + + if (!database_detach(db, args[0])) + goto error; + + fprintf(stderr, " * Imported playlist %s with path '%s'\n", args[0], args[1]); + *watch_mask_ptr |= MPD_IDLE_PLAYLIST; + ret = true; +error: + return ret; } bool diff --git a/src/net/listen.c b/src/net/listen.c index c2bda8accbaadffe95388f57770524a4fbe4cd3b..cade02db046d9f3d707a630feecfe0e5dda06667 100644 --- a/src/net/listen.c +++ b/src/net/listen.c @@ -212,6 +212,10 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd) err = ! command_plt_add(srv->db, cmd.args, &srv->mpd_idle_events); else if (!strcmp(cmd.name, "rm") && cmd.args[0] != NULL && cmd.args[1] == NULL) err = ! command_plt_remove(srv->db, cmd.args, &srv->mpd_idle_events); + else if (!strcmp(cmd.name, "save")) + err = ! command_plt_export(srv->db, cmd.args, &srv->mpd_idle_events); + else if (!strcmp(cmd.name, "__import")) + err = ! command_plt_import(srv->db, cmd.args, &srv->mpd_idle_events); else if (!strcmp(cmd.name, "random")) err = !command_set_playback_option(srv, c, lkt_playback_option_random, cmd.args);