diff --git a/inc/lektor/uri.h b/inc/lektor/uri.h index e9bc81c2a24de53542b0a1aeb624dfb9dc5be9e2..caf9342595517146ef32e9ae22a4c69c93dce474 100644 --- a/inc/lektor/uri.h +++ b/inc/lektor/uri.h @@ -16,13 +16,17 @@ enum lkt_uri_type { struct lkt_uri { enum lkt_uri_type type; - void *value; + union { + void *value; + size_t id; + }; bool _allocated; }; /* Create and delete URIs */ bool lkt_uri_from(struct lkt_uri *ret, char *const str); +bool lkt_uri_from_list(struct lkt_uri *ret, char **list); void lkt_uri_free(struct lkt_uri *ret); /* Make an URL to download from kurisu. diff --git a/src/commands.c b/src/commands.c index 9b25a076a3e931fb1bbea1413f4ad677fee17366..7d155a86dba2be377f521bdd9d3d732573a6d3e0 100644 --- a/src/commands.c +++ b/src/commands.c @@ -267,13 +267,11 @@ command_addid(volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ { 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); + STRTOL(uri.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); } diff --git a/src/database/queue.c b/src/database/queue.c index e421ea06f2d080c3583e6f3b51200323568d711c..d59484b986b9519945be9ed79f3bb092e33077c6 100644 --- a/src/database/queue.c +++ b/src/database/queue.c @@ -265,7 +265,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);