gid_t
group_settings_find_new_gid (void)
{
    OobsGroupsConfig *config;
    OobsList *list;
    OobsListIter list_iter;
    GObject *group;
    gboolean valid;
    gid_t new_gid, gid, gid_min, gid_max;

    config = OOBS_GROUPS_CONFIG (GST_USERS_TOOL (tool)->groups_config);
    list = oobs_groups_config_get_groups (config);
    valid = oobs_list_get_iter_first (list, &list_iter);

    gid_min = GST_USERS_TOOL (tool)->minimum_gid;
    gid_max = GST_USERS_TOOL (tool)->maximum_gid;

    new_gid = gid_min - 1;

    while (valid) {
        group = oobs_list_get (list, &list_iter);
        gid = oobs_group_get_gid (OOBS_GROUP (group));
        g_object_unref (group);

        if (gid <= gid_max && gid >= gid_min && new_gid < gid)
            new_gid = gid;

        valid = oobs_list_iter_next (list, &list_iter);
    }

    new_gid++;

    return new_gid;
}
gboolean
group_delete (GtkTreeModel *model, GtkTreePath *path)
{
    GtkTreeIter iter;
    OobsGroupsConfig *config;
    OobsGroup *group;
    OobsList *groups_list;
    OobsListIter *list_iter;

    if (!gtk_tree_model_get_iter (model, &iter, path))
        return FALSE;

    gtk_tree_model_get (model, &iter,
                        COL_GROUP_OBJECT, &group,
                        COL_GROUP_ITER, &list_iter,
                        -1);

    if (check_group_delete (group)) {
        config = OOBS_GROUPS_CONFIG (GST_USERS_TOOL (tool)->groups_config);
        groups_list = oobs_groups_config_get_groups (config);
        oobs_list_remove (groups_list, list_iter);

        gtk_list_store_remove (GTK_LIST_STORE (model), &iter);

        return TRUE;
    }

    return FALSE;

}
static gboolean
group_exists (const gchar *name)
{
    OobsGroupsConfig *config;
    OobsList *groups_list;
    OobsListIter iter;
    GObject *group;
    gboolean valid;
    const gchar *group_name;

    config = OOBS_GROUPS_CONFIG (GST_USERS_TOOL (tool)->groups_config);
    groups_list = oobs_groups_config_get_groups (config);
    valid = oobs_list_get_iter_first (groups_list, &iter);

    while (valid) {
        group = oobs_list_get (groups_list, &iter);
        group_name = oobs_group_get_name (OOBS_GROUP (group));
        g_object_unref (group);

        if (group_name && strcmp (name, group_name) == 0)
            return TRUE;

        valid = oobs_list_iter_next (groups_list, &iter);
    }

    return FALSE;
}
Esempio n. 4
0
int
main (int argc, char *argv[])
{
	gst_init_tool ("users-admin", argc, argv, NULL);
	tool = GST_TOOL (gst_users_tool_new ());

	gst_dialog_connect_signals (tool->main_dialog, signals);
	main_window_prepare (GST_USERS_TOOL (tool));

	gtk_widget_show (GTK_WIDGET (tool->main_dialog));
	gtk_main ();
	
	return 0;
}