static int updater_rehash_file_by_id (xmmsv_t *value, void *udata) { xmmsc_result_t *res; updater_t *updater; int mid; updater = (updater_t *) udata; g_return_val_if_fail (updater, FALSE); if (!xmmsv_get_int (value, &mid)) { return FALSE; } if (!mid) { g_warning ("Couldn't find requested medialib entry."); return FALSE; } res = xmmsc_medialib_rehash (updater->conn, mid); xmmsc_result_unref (res); return FALSE; }
/* Apply operation to an idlist */ void apply_ids (cli_infos_t *infos, xmmsc_result_t *res, idlist_command_t cmd) { const gchar *err; xmmsc_result_t *cmdres; xmmsv_t *val; val = xmmsc_result_get_value (res); if (!xmmsv_get_error (val, &err)) { xmmsv_list_iter_t *it; xmmsv_get_list_iter (val, &it); for (xmmsv_list_iter_first (it); xmmsv_list_iter_valid (it); xmmsv_list_iter_next (it)) { xmmsv_t *entry; guint id; xmmsv_list_iter_entry (it, &entry); if (xmmsv_get_uint (entry, &id)) { switch (cmd) { case IDLIST_CMD_REHASH: cmdres = xmmsc_medialib_rehash (infos->sync, id); break; case IDLIST_CMD_REMOVE: cmdres = xmmsc_medialib_remove_entry (infos->sync, id); break; default: break; } xmmsc_result_wait (cmdres); xmmsc_result_unref (cmdres); } } } else { g_printf (_("Server error: %s\n"), err); } cli_infos_loop_resume (infos); xmmsc_result_unref (res); }
static int handle_mlib_update (xmmsv_t *v, void *userdata) { xmonitor_t *mon = userdata; xmmsc_result_t *res2; guint32 id; if (!xmmsv_get_uint (v, &id)) { ERR ("Failed to get id for entry!"); return FALSE; } if (id == 0) { DBG ("Entry not in db!"); return FALSE; } res2 = xmmsc_medialib_rehash (mon->conn, id); xmmsc_result_unref (res2); return FALSE; }