void remmina_string_array_remove(RemminaStringArray* array, const gchar *str) { gint i; i = remmina_string_array_find(array, str); if (i >= 0) { remmina_string_array_remove_index(array, i); } }
void remmina_string_array_intersect(RemminaStringArray* array, const gchar *dest_strs) { RemminaStringArray *dest_array; gint i, j; dest_array = remmina_string_array_new_from_string(dest_strs); i = 0; while (i < array->len) { j = remmina_string_array_find(dest_array, remmina_string_array_index(array, i)); if (j < 0) { remmina_string_array_remove_index(array, i); continue; } i++; } remmina_string_array_free(dest_array); }
void remmina_pref_add_recent (const gchar *protocol, const gchar *server) { RemminaStringArray *array; GKeyFile *gkeyfile; gchar key[20]; gchar *val; gchar *content; gsize length; if (remmina_pref.recent_maximum <= 0 || server == NULL || server[0] == 0) return; /* Load original value into memory */ gkeyfile = g_key_file_new (); g_key_file_load_from_file (gkeyfile, remmina_pref_file, G_KEY_FILE_NONE, NULL); g_snprintf (key, sizeof (key), "recent_%s", protocol); array = remmina_string_array_new_from_allocated_string ( g_key_file_get_string (gkeyfile, "remmina_pref", key, NULL)); /* Add the new value */ remmina_string_array_remove (array, server); while (array->len >= remmina_pref.recent_maximum) { remmina_string_array_remove_index (array, 0); } remmina_string_array_add (array, server); /* Save */ val = remmina_string_array_to_string (array); g_key_file_set_string (gkeyfile, "remmina_pref", key, val); g_free (val); content = g_key_file_to_data (gkeyfile, &length, NULL); g_file_set_contents (remmina_pref_file, content, length, NULL); g_key_file_free (gkeyfile); g_free (content); }