Исправил баг заполнением таблицы группами

pull/24/head
Igor Belitskiy 2 years ago
parent 82effd11cf
commit 0c6de34cdd

@ -239,14 +239,7 @@ void tree_view_select(GtkWidget* self, vector* vec_temp, hotebook* widgets) {
gtk_widget_set_sensitive(widgets->btnEdit, 0);
}
}
void del_disk_to_vector_device(vector* vec_temp, char* str_disk) {
for (int i = 0; i < vec_temp->vectorList.total; i++) {
config_u_g_p* _config = (config_u_g_p*)vec_temp->pfVectorGet(vec_temp, i);
if (strstr(_config->UNIX_file, str_disk)) {
vec_temp->pfVectorDelete(vec_temp, i);
}
}
}
void device_remove() {
if (note_selected == 3) {
GtkTreeIter iter;

@ -294,3 +294,11 @@ int fill_tree_view_device(vector* vec_device, hotebook* widget, int flag_gui_add
}
return flag_searhc;
}
void del_disk_to_vector_device(vector* vec_temp, char* str_disk) {
for (int i = 0; i < vec_temp->vectorList.total; i++) {
config_u_g_p* _config = (config_u_g_p*)vec_temp->pfVectorGet(vec_temp, i);
if (strstr(_config->UNIX_file, str_disk)) {
vec_temp->pfVectorDelete(vec_temp, i);
}
}
}

@ -70,6 +70,7 @@ void model_clear_cfg(config_u_g_p* _config);
void model_array_size_memory();
char* format_actors(vector* vec_actors);
void model_free_vector_string(vector* vec_str);
void del_disk_to_vector_device(vector* vec_temp, char* str_disk);
int fill_tree_view_user_group(config_all* all_config, hotebook* widget,char* str_fill , int flag_gui_add);
int fill_tree_view_project(config_all* all_config, hotebook* widget, char* str_fill , int flag_gui_add);
int fill_tree_view_generate(vector* vec_fill, vector* vec_status_disk, char* str_fill, GtkWidget* tree_view, GtkListStore* liststoreGeneral);

@ -212,22 +212,22 @@ config_str philos_list_group(int* size, int flag_lim) {
unsigned short uid_min = philos_read_uid_min_max(file_source_login_min_max, str_uid_min);
unsigned short uid_max = philos_read_uid_min_max(file_source_login_min_max, str_uid_max);
config_str str_users = malloc(1);
while (1) {
errno = 0;
struct passwd* entry = getpwent();
if (!entry) {
if (errno) {
return str_users;
}
break;
}
char *cmd = "cat /etc/group";
int size_groups = 0;
size_t pw_gid = 0;
char **responce = yon_config_load(cmd, &size_groups);
for (int i = 0; i< size_groups; i++) {
char* str_data = yon_char_new(responce[i]);
char* str_group = yon_char_divide_search(str_data,":x:",-1);
char* num = yon_char_divide_search(str_data, ":", -1);
pw_gid = atoll(yon_char_divide_search(str_data, ":", -1));
if (flag_lim == 1) {
if ((entry->pw_uid >= uid_min && entry->pw_uid < uid_max) || entry->pw_uid == 0) {
str_users = yon_char_parsed_append(str_users, size, entry->pw_name);
if ((pw_gid >= uid_min && pw_gid < uid_max) || pw_gid == 0) {
str_users = yon_char_parsed_append(str_users, size, str_group);
}
}
else {
str_users = yon_char_parsed_append(str_users, size, entry->pw_name);
str_users = yon_char_parsed_append(str_users, size, str_group);
}
}
endpwent();

@ -29,6 +29,7 @@ void table_u_g_set_fill_user_group() {
char** array_user = philos_list_user(&size, active1);
table_u_g_fill_tree_view(array_user, size);
}
set_actors(_actors);
}
table_u_g *setup_table_u_g(){
@ -44,7 +45,6 @@ table_u_g *setup_table_u_g(){
table_widgets->checkColUserGroup = GTK_CELL_RENDERER_TOGGLE(gtk_builder_get_object(builder,"checkColUserGroup"));
table_widgets->liststoreUsersGroups = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststoreUsersGroups"));
table_u_g_set_fill_user_group();
set_actors(_actors);
table_u_g_event();
g_signal_connect(G_OBJECT(table_widgets->chkActivUsersGroup), "toggled", G_CALLBACK(table_u_g_set_fill_user_group), NULL);
}
@ -54,10 +54,6 @@ void table_u_g_set_glade_path(char* _glade_path) {
glade_path = _glade_path;
}
void table_u_g_get_data() {
}
void table_u_g_set_flag(char* _flag_u_g, char* _table_u_g_set_add_edit) {
flag_u_g = _flag_u_g;
table_u_g_set_add_edit = _table_u_g_set_add_edit;

@ -198,6 +198,17 @@ void view_device_get_gui_data() {
_config->status = status_id;
}
}
else {
del_disk_to_vector_device(&view_device_all_config_temp->v_user, _config->device);
del_disk_to_vector_device(&view_device_all_config_temp->v_group, _config->device);
del_disk_to_vector_device(&view_device_all_config_temp->v_general, _config->device);
if (status_id == 0) {
_config->status = 1;
}
else {
_config->status = status_id;
}
}
if (view_device_index == -1) {
vec_device->pfVectorAdd(vec_device, _config);
}

@ -486,8 +486,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<property name="active">0</property>
<property name="active-id">0</property>
<property name="active">1</property>
<property name="active-id">1</property>
<items>
<item translatable="yes">Not set</item>
<item translatable="yes">Off</item>

Loading…
Cancel
Save