int cmd_insert (int argc, char ** argv, struct mpd_connection *conn ) { int ret; struct mpd_status *status = getStatus(conn); const int from = mpd_status_get_queue_length(status); ret = cmd_add(argc, argv, conn); const int cur_pos = mpd_status_get_song_pos(status); mpd_status_free(status); if (ret != 0) { return ret; } return mpd_run_move_range(conn, from, from+argc, cur_pos+1); }
int mpd_insert (char *song_path ) { struct mpd_status *status = mpd_run_status(mpd.conn); if (status == NULL) return 0; const unsigned from = mpd_status_get_queue_length(status); const int cur_pos = mpd_status_get_song_pos(status); mpd_status_free(status); if (mpd_run_add(mpd.conn, song_path) != true) return 0; /* check the new queue length to find out how many songs were * appended */ const unsigned end = mpd_get_queue_length(); if (end == from) return 0; /* move those songs to right after the current one */ return mpd_run_move_range(mpd.conn, from, end, cur_pos + 1); }