Исправил парсер активных дисков

pull/24/head
Igor Belitskiy 2 years ago
parent 196dfbe84e
commit 5610361769

@ -1,74 +1,65 @@
#include "my_device.h" #include "my_device.h"
device_config obj_device_config; vector vec_disk;
device_config *get_device_cfg() vector *get_device_vec()
{ {
return &obj_device_config; return &vec_disk;
} }
void device_disk_parsed() { void device_disk_parsed() {
// findmnt -lo source,target,fstype,label -t ext4 char *cmd = "findmnt -lo source,target,fstype,label -t ext4";
char *cmd = "lsblk --fs --raw --output PATH,FSTYPE --exclude 7,11,253"; vector_init(&vec_disk);
int size = 0; int size = 0;
char **responce = yon_config_load(cmd, &size); char **responce = yon_config_load(cmd, &size);
obj_device_config.size_disk = 0;
char *split_simvol = " "; char *split_simvol = " ";
for (int index = 1; index < size; index++) for (int index = 1; index < size; index++)
{ {
char *disk = yon_char_divide_search(responce[index], "\n", -1); char *disk = yon_char_divide_search(responce[index], "\n", -1);
if (yon_char_find_count(disk, " ") != 0) if (yon_char_find_count(disk, " ") != 0 && !strstr(disk, "zram") && !strstr(disk, "["))
{ {
int size_str = 0; int size_str = 0;
char* str_info = yon_char_parse(disk, size_str, ' '); char** name_disk = yon_char_parse(disk, &size_str, " ");
char** name_disk = yon_char_divide_search(disk, " ", -1);
int flag = 0; int flag = 0;
device_config* obj_device_config = malloc(sizeof(device_config));
for (int index_1 = 0; index_1 < size_str; index_1++) { for (int index_1 = 0; index_1 < size_str; index_1++) {
if (!strstr(name_disk[index_1], " ")) { if (strlen(name_disk[index_1])) {
flag+=1;
if (flag == 0) { if (flag == 0) {
obj_device_config.name_disk = yon_char_new(name_disk[index_1]) obj_device_config->name_disk = yon_char_new(name_disk[index_1]);
}
if (flag == 1) {
} }
if (flag == 2) { else if (flag == 1) {
obj_device_config->mounted = yon_char_new(name_disk[index_1]);
} }
if (flag == 3) { else if (flag == 2) {
obj_device_config->file_system = yon_char_new(name_disk[index_1]);
} }
} else if (flag == 3) {
obj_device_config->type_dick = yon_char_new(name_disk[index_1]);
} }
flag+=1;
obj_device_config.name_disk = yon_char_parsed_append(obj_device_config.name_disk, &obj_device_config.size_disk, name_disk); }
obj_device_config.size_disk--;
obj_device_config.file_system = yon_char_parsed_append(obj_device_config.file_system, &obj_device_config.size_disk, disk);
obj_device_config.size_disk--;
obj_device_config.mounted = yon_char_parsed_append(obj_device_config.mounted, &obj_device_config.size_disk, "");
obj_device_config.size_disk--;
obj_device_config.type_dick = yon_char_parsed_append(obj_device_config.type_dick, &obj_device_config.size_disk, "");
obj_device_config.size_disk--;
disk = yon_char_replace(disk, " ", "");
if (strlen(disk) != 0)
{
char *description_disk = yon_char_unite(name_disk,
split_simvol,
disk,
NULL);
obj_device_config.description_disk = yon_char_parsed_append(obj_device_config.description_disk, &obj_device_config.size_disk, description_disk);
free(description_disk);
} }
free(name_disk); obj_device_config->description_disk = yon_char_unite(obj_device_config->name_disk,split_simvol,
obj_device_config->file_system,
split_simvol,
obj_device_config->mounted,
split_simvol,
obj_device_config->type_dick, NULL);
vec_disk.pfVectorAdd(&vec_disk, obj_device_config);
philos_free_string_array(&name_disk, size_str);
} }
free(disk); free(disk);
} }
philos_free_string_array(&responce, size); philos_free_string_array(&responce, size);
} }
void device_fill_disk(GtkWidget *combo_box_text) void device_fill_disk(GtkWidget *combo_box_text)
{ {
for (int index = 0; index < obj_device_config.size_disk; index++) if (vec_disk.vectorList.total > 0) {
{ for (int index = 0; index < vec_disk.vectorList.total; index++)
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box_text), obj_device_config.description_disk[index]); {
device_config* obj_device_config = (device_config*)vec_disk.pfVectorGet(&vec_disk, index);
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box_text), yon_char_new(obj_device_config->description_disk));
}
} }
} }

@ -5,17 +5,17 @@
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
#include "philos_utils.h" #include "philos_utils.h"
#include "model.h"
typedef struct { typedef struct {
char** name_disk; char* name_disk;
char** file_system; char* file_system;
char** mounted; char* mounted;
char** type_dick; char* type_dick;
char** description_disk; char* description_disk;
int size_disk;
} device_config; } device_config;
void device_disk_parsed(); void device_disk_parsed();
device_config* get_device_cfg(); vector *get_device_vec();
void device_fill_disk(GtkWidget* combo_box_text); void device_fill_disk(GtkWidget* combo_box_text);
size_t get_mem_total(); size_t get_mem_total();
float get_size_pow_memory(size_t size_memory, int size); float get_size_pow_memory(size_t size_memory, int size);

@ -751,32 +751,6 @@ void philos_array_char_pars_to(char*** array, char* to) {
} }
} }
} }
void init_device_disk(temp_config* _config) {
for (int index = 0;index< (get_device_cfg()->size_disk*2);index++){
_config->disk_read = yon_char_parsed_append(_config->disk_read,&_config->size_disk, "-");
_config->size_disk--;
_config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size, &_config->size_disk, -3);
_config->size_disk--;
_config->i_o_limit_write = philos_int_append(_config->i_o_limit_write, &_config->size_disk, -3);
_config->size_disk--;
_config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size, &_config->size_disk, -3);
_config->size_disk--;
_config->disk_write = yon_char_parsed_append(_config->disk_write,&_config->size_disk, "-");
_config->size_disk--;
_config->i_o_limit_read = philos_int_append(_config->i_o_limit_read, &_config->size_disk, -3);
}
_config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size, &_config->size_disk, -2);
_config->size_disk--;
_config->disk_write = yon_char_parsed_append(_config->disk_write, &_config->size_disk, NULL);
_config->size_disk--;
_config->disk_read = yon_char_parsed_append(_config->disk_read, &_config->size_disk, NULL);
_config->size_disk--;
_config->i_o_limit_write = philos_int_append(_config->i_o_limit_write, &_config->size_disk, -2);
_config->size_disk--;
_config->i_o_limit_read = philos_int_append(_config->i_o_limit_read, &_config->size_disk, -2);
_config->size_disk--;
_config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size, &_config->size_disk, -2);
}
char** philos_char_parsed_append(char** parsed, int *size, char *string) { char** philos_char_parsed_append(char** parsed, int *size, char *string) {
parsed = yon_char_parsed_append(parsed, size, string); parsed = yon_char_parsed_append(parsed, size, string);

@ -17,7 +17,6 @@
#include <pwd.h> #include <pwd.h>
#include <stdbool.h> #include <stdbool.h>
#include "my_device.h"
#define catch(x) ExitJmp:if(__HadError) #define catch(x) ExitJmp:if(__HadError)
#define throw(x) {__HadError=true;goto ExitJmp;} #define throw(x) {__HadError=true;goto ExitJmp;}

Loading…
Cancel
Save