From 1ad1a1a3e55b6a73a99583d03ff99739e5b9ecab Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 2 Sep 2024 15:54:07 +0600 Subject: [PATCH] Fixes --- source/ubl-settings-usergroups.c | 96 ++++++++++++++++++-------------- source/ubl-settings-usergroups.h | 3 + 2 files changed, 58 insertions(+), 41 deletions(-) diff --git a/source/ubl-settings-usergroups.c b/source/ubl-settings-usergroups.c index d4803d2..ab42b25 100644 --- a/source/ubl-settings-usergroups.c +++ b/source/ubl-settings-usergroups.c @@ -1280,29 +1280,33 @@ void on_user_choose(GtkWidget *self, GtkEntry *target){ void on_GID_update(GtkWidget *self, ubl_settings_usergroups_group_creation_window *window){ if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck))){ - int config_size=0; - int final_size=0; - config_str config_groups = yon_config_get_all_by_key(GROUPADD_parameter,&config_size); - yon_char_parsed_prepend_strings(config_groups,config_size,":"); - config_str final = yon_char_parsed_merge(main_config.groups,main_config.groups_size,config_groups,config_size,&final_size); - long prev_busy=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))?0:main_config.MINGID; - for (int i=0;i=main_config.MINGID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))){ - if (atol(parsed[2])>main_config.MAXGID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))) - break; - if (atol(parsed[2])==prev_busy+1) - prev_busy=atol(parsed[2]); - else { + if (window->last_gid){ + gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),window->last_gid); + } else { + int config_size=0; + int final_size=0; + config_str config_groups = yon_config_get_all_by_key(GROUPADD_parameter,&config_size); + yon_char_parsed_prepend_strings(config_groups,config_size,":"); + config_str final = yon_char_parsed_merge(main_config.groups,main_config.groups_size,config_groups,config_size,&final_size); + long prev_busy=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))?0:main_config.MINGID; + for (int i=0;i=main_config.MINGID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))){ + if (atol(parsed[2])>main_config.MAXGID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->SystemGroupCheck))) + break; + if (atol(parsed[2])==prev_busy+1) + prev_busy=atol(parsed[2]); + else { + yon_char_parsed_free(parsed, parsed_size); + break; + } + } yon_char_parsed_free(parsed, parsed_size); - break; } + gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),yon_char_from_long(prev_busy+1)); } - yon_char_parsed_free(parsed, parsed_size); - } - gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),yon_char_from_long(prev_busy+1)); } else { gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),""); } @@ -1458,6 +1462,7 @@ ubl_settings_usergroups_group_creation_window *yon_ubl_settings_usergroups_group window->AdminGroupsButton=yon_gtk_builder_get_widget(builder,"AdminGroupsButton"); window->GroupaddShutdownCheck=yon_gtk_builder_get_widget(builder,"GroupaddShutdownCheck"); window->groupExtraOptionsEntry=yon_gtk_builder_get_widget(builder,"groupExtraOptionsEntry"); + window->last_gid=NULL; gtk_window_set_title(GTK_WINDOW(window->CreateGroupWindow),GROUPS_TITLE_LABEL); @@ -1841,29 +1846,33 @@ void on_user_shell_changed(GtkWidget *self, ubl_settings_usergroups_user_window void on_UID_update(GtkWidget *self, ubl_settings_usergroups_user_window *window){ if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck))){ - int config_size=0; - int final_size=0; - config_str config_users = yon_config_get_all_by_key(USERADD_SEARCH_macro,&config_size); - yon_char_parsed_prepend_strings(config_users,config_size,":"); - config_str final = yon_char_parsed_merge(main_config.users,main_config.users_size,config_users,config_size,&final_size); - long prev_busy=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck))?0:main_config.MINGID; - for (int i=0;i=main_config.MINUID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck))){ - if (atol(parsed[2])>main_config.MAXUID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck))) - break; - if (atol(parsed[2])==prev_busy+1) - prev_busy=atol(parsed[2]); - else { + if (window->last_uid){ + gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),window->last_uid); + } else { + int config_size=0; + int final_size=0; + config_str config_users = yon_config_get_all_by_key(USERADD_SEARCH_macro,&config_size); + yon_char_parsed_prepend_strings(config_users,config_size,":"); + config_str final = yon_char_parsed_merge(main_config.users,main_config.users_size,config_users,config_size,&final_size); + long prev_busy=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck))?0:main_config.MINGID; + for (int i=0;i=main_config.MINUID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck))){ + if (atol(parsed[2])>main_config.MAXUID||gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->userCreateSystemCheck))) + break; + if (atol(parsed[2])==prev_busy+1) + prev_busy=atol(parsed[2]); + else { + yon_char_parsed_free(parsed, parsed_size); + break; + } + } yon_char_parsed_free(parsed, parsed_size); - break; } + gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),yon_char_from_long(prev_busy+1)); } - yon_char_parsed_free(parsed, parsed_size); - } - gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),yon_char_from_long(prev_busy+1)); } else { gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),""); } @@ -2378,6 +2387,7 @@ ubl_settings_usergroups_user_window *yon_ubl_settings_usergroups_user_new(){ window->UsershadowShutdownCheck=yon_gtk_builder_get_widget(builder,"UsershadowShutdownCheck"); window->userTitleNameLabel=yon_gtk_builder_get_widget(builder,"userTitleNameLabel"); window->expiration_unix=NULL; + window->last_uid=NULL; time_t t = time(NULL); struct tm tm = *localtime(&t); @@ -2523,8 +2533,11 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ if (parsed_size>2){ if (!strcmp(parameters[2],"x")) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userGroupsCheck),1); - else + else { gtk_entry_set_text(GTK_ENTRY(window->userGroupsEntry), parsed_size>2?parameters[2]:""); + if (!yon_char_is_empty(parameters[2])) + window->last_uid=yon_char_new(parameters[2]); + } } if (parsed_size>3){ if (strcmp(parameters[3],"x")){ @@ -2652,6 +2665,7 @@ void on_main_edit(GtkWidget *self, main_window *widgets){ if (strcmp(parsed[1],"")&&strcmp(parsed[1],"x")){ gtk_entry_set_text(GTK_ENTRY(window->userUIDEntry),parsed[1]); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->userUIDAutoCheck),0); + window->last_gid=yon_char_new(parsed[1]); } } if (size>2&&!yon_char_is_empty(parsed[2])){ diff --git a/source/ubl-settings-usergroups.h b/source/ubl-settings-usergroups.h index bc99321..4959afc 100644 --- a/source/ubl-settings-usergroups.h +++ b/source/ubl-settings-usergroups.h @@ -235,6 +235,8 @@ typedef struct{ GtkWidget *AdminGroupsButton; GtkWidget *GroupaddShutdownCheck; GtkWidget *groupExtraOptionsEntry; + + char *last_gid; } ubl_settings_usergroups_group_creation_window; typedef struct{ @@ -320,6 +322,7 @@ typedef struct{ char *old_password; char *old_username; + char *last_uid; } ubl_settings_usergroups_user_window; typedef struct {