From 7f1fbc734080b4233dd5a6a838e29a92848e8abd Mon Sep 17 00:00:00 2001 From: Elliu <goyard.louis@gmail.com> Date: Thu, 14 May 2020 16:14:03 +0200 Subject: [PATCH] WIP adding multiaddid --- PKGBUILD | 2 +- inc/lektor/commands.h | 1 + inc/lektor/database.h | 1 + src/commands.c | 30 ++++++++++++++++++++++++++++++ src/mkv/mkv.c | 2 ++ src/net/listen.c | 2 ++ 6 files changed, 37 insertions(+), 1 deletion(-) diff --git a/PKGBUILD b/PKGBUILD index c487010d..80eda5ce 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,6 +1,6 @@ # Maintainer: Maël 'Kubat' MARTIN <mael.martin31@gmail.com> pkgname=lektor -pkgver=mk7.818.a4f399d +pkgver=mk7.956.1e4b3aa pkgrel=1 pkgdesc="The lektor kara player, from the Bakaclub" arch=(x86_64 i686) diff --git a/inc/lektor/commands.h b/inc/lektor/commands.h index 617046af..a75b27a7 100644 --- a/inc/lektor/commands.h +++ b/inc/lektor/commands.h @@ -31,6 +31,7 @@ bool command_set_pos(volatile sqlite3 *db, struct lkt_win *win, mpd_idle_flag *w bool command_add (volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr, int priority); bool command_addid (volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr); +bool command_multiaddid (volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr); bool command_del (volatile sqlite3 *db, struct lkt_win *win, char *pos_range, mpd_idle_flag *watch_mask_ptr); bool command_delid (volatile sqlite3 *db, struct lkt_win *win, char *id, mpd_idle_flag *watch_mask_ptr); bool command_clear (volatile sqlite3 *db, mpd_idle_flag *watch_mask_ptr); diff --git a/inc/lektor/database.h b/inc/lektor/database.h index 080c507b..87c63aa1 100644 --- a/inc/lektor/database.h +++ b/inc/lektor/database.h @@ -55,6 +55,7 @@ void database_update_touch (volatile sqlite3 *db, int id); /* Control the content of the queue. */ bool database_queue_add_uri(volatile sqlite3 *db, struct lkt_uri *uri, int priority); +bool database_queue_add_id(volatile sqlite3 *db, int id, int priority); bool database_queue_del_id (volatile sqlite3 *db, int id); bool database_queue_del_pos(volatile sqlite3 *db, int pos); bool database_queue_clear (volatile sqlite3 *db); diff --git a/src/commands.c b/src/commands.c index a4b34dba..0e615fe6 100644 --- a/src/commands.c +++ b/src/commands.c @@ -278,6 +278,36 @@ command_addid(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ return database_queue_add_uri(db, &uri, 1); } +bool +command_multiaddid(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr) +{ + UNUSED(win); + RETURN_UNLESS(args, "Invalid argument", false); + long id; + char *endptr = NULL, err = 0; + struct lkt_uri uri = { .type = uri_id }; + *watch_mask_ptr |= MPD_IDLE_PLAYLIST; + STRTOL(id, args[0], endptr, err); + RETURN_IF(err, "STRTOL failed", false); + uri.value = (void *) (size_t) id; + return database_queue_add_uri(db, &uri, 1); + /* + UNUSED(win); + RETURN_UNLESS(args, "Invalid argument", false); + long id; + char *endptr = malloc(sizeof(char)), err = 0; + *watch_mask_ptr |= MPD_IDLE_PLAYLIST; + //STRTOL(id, args[0], endptr, err); + while ( (id=strtol(args[0], &endptr, 10)) != 0 ) + { + RETURN_IF(err, "STRTOL failed", false); + database_queue_add_id(db, id, 1); + args[0] = endptr; + } + return true; + */ +} + inline bool command_clear(volatile sqlite3 *db, mpd_idle_flag *watch_mask_ptr) { diff --git a/src/mkv/mkv.c b/src/mkv/mkv.c index ff516442..d1384bc1 100644 --- a/src/mkv/mkv.c +++ b/src/mkv/mkv.c @@ -403,6 +403,8 @@ mkv_seek_tags(struct bufferfd *bf, size_t header_len) while (seekhead_len > 0) { struct mkv_seek s; + s.id = 0; + s.pos = 0; uint32_t eid; ssize_t n; diff --git a/src/net/listen.c b/src/net/listen.c index daad13d8..4eb1b1fe 100644 --- a/src/net/listen.c +++ b/src/net/listen.c @@ -228,6 +228,8 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd) err = !command_add((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events, 1); else if (STR_MATCH(cmd.name, "addid")) err = !command_addid((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events); + else if (STR_MATCH(cmd.name, "multiaddid")) + err = !command_multiaddid((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events); else if (STR_MATCH(cmd.name, "deleteid")) err = ! (cmd.args[0] != NULL && command_delid((sqlite3 *) srv->db, &srv->win, cmd.args[0], &srv->mpd_idle_events)); -- GitLab