void cmd_insertid (xmmsc_connection_t *conn, gint argc, gchar **argv) { gchar *playlist = NULL; guint pos, mlib_id; char *endptr; xmmsc_result_t *res; if (argc < 4) { print_error ("Need a position and a medialib id"); } pos = strtol (argv[2], &endptr, 10); if (*endptr == '\0') { mlib_id = strtol (argv[3], NULL, 10); /* No playlist name */ } else { playlist = argv[2]; /* extract playlist name */ pos = strtol (argv[3], NULL, 10); mlib_id = strtol (argv[4], NULL, 10); } res = xmmsc_playlist_insert_id (conn, playlist, pos, mlib_id); xmmsc_result_wait (res); if (xmmsc_result_iserror (res)) { print_error ("Unable to insert %u at position %u: %s", mlib_id, pos, xmmsc_result_get_error (res)); } print_info ("Inserted %u at position %u", mlib_id, pos); xmmsc_result_unref (res); }
void add_list (xmmsc_result_t *matching, cli_infos_t *infos, gchar *playlist, gint pos) { /* FIXME: w00t at code copy-paste, please modularize */ xmmsc_result_t *insres; guint id; gint offset; const gchar *err; xmmsv_t *val; val = xmmsc_result_get_value (matching); offset = 0; if (xmmsv_get_error (val, &err) || !xmmsv_is_list (val)) { g_printf (_("Error retrieving the media matching the pattern!\n")); } else { xmmsv_list_iter_t *it; xmmsv_get_list_iter (val, &it); /* Loop on the matched media */ for (xmmsv_list_iter_first (it); xmmsv_list_iter_valid (it); xmmsv_list_iter_next (it)) { xmmsv_t *entry; xmmsv_list_iter_entry (it, &entry); if (xmmsv_get_uint (entry, &id)) { insres = xmmsc_playlist_insert_id (infos->sync, playlist, pos + offset, id); xmmsc_result_wait (insres); xmmsc_result_unref (insres); offset++; } } } cli_infos_loop_resume (infos); xmmsc_result_unref (matching); }
/* * call-seq: * pl.insert_entry(pos, arg) -> result * * Inserts an entry to the current playlist at position _pos_ in the playlist. * _arg_ can be either a URL or an id. */ static VALUE c_insert_entry (VALUE self, VALUE pos, VALUE arg) { int32_t id; int32_t ipos; PLAYLIST_METHOD_HANDLER_HEADER ipos = check_int32 (pos); if (!NIL_P (rb_check_string_type (arg))) res = xmmsc_playlist_insert_url (xmms->real, pl->name, ipos, StringValuePtr (arg)); else { id = check_int32 (arg); res = xmmsc_playlist_insert_id (xmms->real, pl->name, ipos, id); } PLAYLIST_METHOD_HANDLER_FOOTER }