diff --git a/inc/lektor/commands.h b/inc/lektor/commands.h index bfa1d47fd8af71a719ed5e6a5815297fd38f489a..617046afe664f37f5bbd4af2bf5ae855f76cef8e 100644 --- a/inc/lektor/commands.h +++ b/inc/lektor/commands.h @@ -28,17 +28,16 @@ bool command_stop (volatile sqlite3 *db, struct lkt_win *win, bool command_set_pos(volatile sqlite3 *db, struct lkt_win *win, mpd_idle_flag *watch_mask_ptr, int index); /* The queue */ -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); -bool command_crop (volatile sqlite3 *db, mpd_idle_flag *watch_mask_ptr); -bool command_move (volatile sqlite3 *db, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr); -bool command_shuffle (volatile sqlite3 *db, mpd_idle_flag *watch_mask_ptr); -bool command_playid (volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr); +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_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); +bool command_crop (volatile sqlite3 *db, mpd_idle_flag *watch_mask_ptr); +bool command_move (volatile sqlite3 *db, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr); +bool command_shuffle(volatile sqlite3 *db, mpd_idle_flag *watch_mask_ptr); +bool command_playid (volatile sqlite3 *db, struct lkt_win *win, char *args[LKT_MESSAGE_ARGS_MAX], mpd_idle_flag *watch_mask_ptr); bool command_queue_list(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX]); diff --git a/src/commands.c b/src/commands.c index 5a84e9a1d617199ac4415e7aa74641eb20742faf..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,44 +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); - char *endptr = NULL, err = 0; + errno = 0; + int i; struct lkt_uri uri = { .type = uri_id }; - *watch_mask_ptr |= MPD_IDLE_PLAYLIST; - STRTOL(uri.id, args[0], endptr, err); - RETURN_IF(err, "STRTOL failed", false); - 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); - char *endptr = NULL, err = 0; - struct lkt_uri uri = { .type = uri_id }; - *watch_mask_ptr |= MPD_IDLE_PLAYLIST; - STRTOL(uri.id, args[0], endptr, err); - RETURN_IF(err, "STRTOL failed", false); - 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; + for (i = 0; (uri.id = strtol(args[i], NULL, 0)) && ! errno; ++i) { + errno |= database_queue_add_id(db, uri.id, 1); } - return true; - */ + *watch_mask_ptr |= MPD_IDLE_PLAYLIST; + return ! errno; } inline bool diff --git a/src/net/listen.c b/src/net/listen.c index 4eb1b1fe9a62c5c6df78d385e06ceaf304cba2c5..230e6a96c14468b0b1bd738bf5e1b23c56b5daa2 100644 --- a/src/net/listen.c +++ b/src/net/listen.c @@ -223,13 +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); - else if (STR_MATCH(cmd.name, "multiaddid")) - err = !command_multiaddid((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));