bool spl_move_index(const char *utf8path, unsigned src, unsigned dest, GError **error_r) { char *uri; if (src == dest) /* this doesn't check whether the playlist exists, but what the hell.. */ return true; GPtrArray *list = spl_load(utf8path, error_r); if (list == NULL) return false; if (src >= list->len || dest >= list->len) { spl_free(list); g_set_error_literal(error_r, playlist_quark(), PLAYLIST_RESULT_BAD_RANGE, "Bad range"); return false; } uri = spl_remove_index_internal(list, src); spl_insert_index_internal(list, dest, uri); bool result = spl_save(list, utf8path, error_r); spl_free(list); idle_add(IDLE_STORED_PLAYLIST); return result; }
enum playlist_result spl_move_index(const char *utf8path, unsigned src, unsigned dest) { GPtrArray *list; char *uri; enum playlist_result result; if (src == dest) /* this doesn't check whether the playlist exists, but what the hell.. */ return PLAYLIST_RESULT_SUCCESS; if (!(list = spl_load(utf8path))) return PLAYLIST_RESULT_NO_SUCH_LIST; if (src >= list->len || dest >= list->len) { spl_free(list); return PLAYLIST_RESULT_BAD_RANGE; } uri = spl_remove_index_internal(list, src); spl_insert_index_internal(list, dest, uri); result = spl_save(list, utf8path); spl_free(list); idle_add(IDLE_STORED_PLAYLIST); return result; }