Esempio n. 1
0
RemminaStringArray*
remmina_string_array_new_from_string(const gchar *strs)
{
	RemminaStringArray *array;
	gchar *buf, *ptr1, *ptr2;

	array = remmina_string_array_new();
	if (!strs || strs[0] == '\0')
		return array;

	buf = g_strdup(strs);
	ptr1 = buf;
	while (ptr1)
	{
		ptr2 = strchr(ptr1, ',');
		if (ptr2)
			*ptr2++ = '\0';
		remmina_string_array_add(array, ptr1);
		ptr1 = ptr2;
	}

	g_free(buf);

	return array;
}
Esempio n. 2
0
static void remmina_main_save_expanded_group_func(GtkTreeView *tree_view, GtkTreePath *path, RemminaMain *remminamain)
{
	GtkTreeIter iter;
	gchar *group;

	gtk_tree_model_get_iter(remminamain->priv->file_model_sort, &iter, path);
	gtk_tree_model_get(remminamain->priv->file_model_sort, &iter, GROUP_COLUMN, &group, -1);
	if (group)
	{
		remmina_string_array_add(remminamain->priv->expanded_group, group);
		g_free(group);
	}
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
gchar* remmina_file_manager_get_groups(void)
{
	gchar dirname[MAX_PATH_LEN];
	gchar filename[MAX_PATH_LEN];
	GDir* dir;
	const gchar* name;
	RemminaFile* remminafile;
	RemminaStringArray* array;
	const gchar* group;
	gchar* groups;

	array = remmina_string_array_new();

	g_snprintf(dirname, MAX_PATH_LEN, "%s/.remmina", g_get_home_dir());
	dir = g_dir_open(dirname, 0, NULL);
	if (dir == NULL)
		return 0;
	while ((name = g_dir_read_name(dir)) != NULL)
	{
		if (!g_str_has_suffix(name, ".remmina"))
			continue;
		g_snprintf(filename, MAX_PATH_LEN, "%s/%s", dirname, name);
		remminafile = remmina_file_load(filename);
		group = remmina_file_get_string(remminafile, "group");
		if (group && remmina_string_array_find(array, group) < 0)
		{
			remmina_string_array_add(array, group);
		}
		remmina_file_free(remminafile);
	}
	g_dir_close(dir);
	remmina_string_array_sort(array);
	groups = remmina_string_array_to_string(array);
	remmina_string_array_free(array);
	return groups;
}