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; }
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; }