diff --git a/PKGBUILD b/PKGBUILD index c487010d7ff9c14f968afffc25661f213a152fa3..298803707ad273232e5b0f2cb0cbd891440dd055 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.957.7f1fbc7 pkgrel=1 pkgdesc="The lektor kara player, from the Bakaclub" arch=(x86_64 i686) diff --git a/inc/lektor/database.h b/inc/lektor/database.h index 080c507b0b88f84e734a54abe5a8c3fa6cd76863..87c63aa1f5fcfea8ec479d0fd679987b09402b90 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/inc/lektor/uri.h b/inc/lektor/uri.h index b9ab50874ab07d438ef3a30bc666c337a9f41348..c24f82ef38b92034bdc84f80e7bcb340fef0cba8 100644 --- a/inc/lektor/uri.h +++ b/inc/lektor/uri.h @@ -17,7 +17,11 @@ enum lkt_uri_type { struct lkt_uri { enum lkt_uri_type type; - void *value; + union { + void *value; + size_t id; + }; + bool _allocated; }; diff --git a/src/commands.c b/src/commands.c index a4b34dba0172ee2f7eb35c07706c8e64f748f4b2..5d53ae23ea0f33641ac397d7bcd6aaa3e8876e30 100644 --- a/src/commands.c +++ b/src/commands.c @@ -247,7 +247,9 @@ command_stop(volatile sqlite3 *db, struct lkt_win *win, mpd_idle_flag *watch_mas } bool -command_add(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr, int priority) +command_add(volatile sqlite3 *db, struct lkt_win *win, + char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr, + int priority) { RETURN_UNLESS(args, "Invalid argument", false); *watch_mask_ptr |= MPD_IDLE_PLAYLIST; @@ -264,18 +266,19 @@ command_add(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_AR } bool -command_addid(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr) +command_addid(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; + errno = 0; + int i; struct lkt_uri uri = { .type = uri_id }; + for (i = 0; (uri.id = strtol(args[i], NULL, 0)) && ! errno; ++i) { + errno |= database_queue_add_id(db, uri.id, 1); + } *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); + return ! errno; } inline bool diff --git a/src/database/queue.c b/src/database/queue.c index e7815cd29e16dc1921275399283e9531bff09bcb..6c131af43e9d1d4355f8892993afe144dfbef209 100644 --- a/src/database/queue.c +++ b/src/database/queue.c @@ -266,7 +266,7 @@ database_queue_add_uri(volatile sqlite3 *db, struct lkt_uri *uri, int priority) return queue_add_with_col_like_str(db, LKT_DATABASE_KARA_ALL, uri->value, priority); case uri_id: - return database_queue_add_id(db, *(int *) uri->value, priority); + return database_queue_add_id(db, uri->id, priority); case uri_type: return queue_add_with_col_like_str(db, LKT_DATABASE_NAME_KTYPE, uri->value, priority); diff --git a/src/mkv/mkv.c b/src/mkv/mkv.c index ff5164427ff0220ce289e4a17e55088c6bd46452..d1384bc1d1888609c5b165f95dff1cf7e071d550 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 4fe673c28a86f3bd0e0c0c2c079d714c823ee0fa..05110a2d59a968d6747e98ff6fb43eca4f769163 100644 --- a/src/net/listen.c +++ b/src/net/listen.c @@ -223,11 +223,11 @@ handle_simple_command(struct lkt_state *srv, size_t c, struct lkt_command cmd) err = !command_help(srv, c); else if (STR_MATCH(cmd.name, "__insert")) - err = !command_add((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events, 5); + err = ! command_add((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events, 5); else if (STR_MATCH(cmd.name, "searchadd") || STR_MATCH(cmd.name, "findadd") || STR_MATCH(cmd.name, "add")) - err = !command_add((sqlite3 *) srv->db, &srv->win, cmd.args, &srv->mpd_idle_events, 1); + 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); + err = ! command_addid((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));