Промежуточный комит доделование десерилизации
This commit is contained in:
parent
b5c0f5ba02
commit
9393d91906
2 changed files with 57 additions and 33 deletions
27
file.h
27
file.h
|
|
@ -61,7 +61,7 @@ void name_file_w(char* name, FILE * f_names, uint64_t *names_offset){
|
||||||
*names_offset += len + sizeof(uint16_t);
|
*names_offset += len + sizeof(uint16_t);
|
||||||
}
|
}
|
||||||
void nodes_file_w(struct metadata* meta, FILE * f_nodes, uint64_t *nodes_offset, uint64_t names_offset){
|
void nodes_file_w(struct metadata* meta, FILE * f_nodes, uint64_t *nodes_offset, uint64_t names_offset){
|
||||||
struct metadata_file file;
|
struct metadata_file file = {0};
|
||||||
file.name_offset = names_offset;
|
file.name_offset = names_offset;
|
||||||
file.size = meta->size;
|
file.size = meta->size;
|
||||||
file.tipe_dir = meta->tipe_dir;
|
file.tipe_dir = meta->tipe_dir;
|
||||||
|
|
@ -71,20 +71,22 @@ void nodes_file_w(struct metadata* meta, FILE * f_nodes, uint64_t *nodes_offset,
|
||||||
|
|
||||||
void aaasss(struct dir_list_struct* dir_list, struct metadata* mata_local, struct metadata* mata_local_top, FILE *f_nodes, FILE *f_names, int* marker, uint16_t* len){
|
void aaasss(struct dir_list_struct* dir_list, struct metadata* mata_local, struct metadata* mata_local_top, FILE *f_nodes, FILE *f_names, int* marker, uint16_t* len){
|
||||||
if (NULL != dir_list->file){
|
if (NULL != dir_list->file){
|
||||||
|
DEBUG_PRINT("НЕ dir_list->file\n");
|
||||||
dir_list = dir_list->next;
|
dir_list = dir_list->next;
|
||||||
dir_list = je_malloc(sizeof(struct dir_list_struct));
|
dir_list = je_malloc(sizeof(struct dir_list_struct));
|
||||||
}
|
}
|
||||||
mata_local = malloc(sizeof(struct metadata));
|
//mata_local = malloc(sizeof(struct metadata));
|
||||||
// Это не маркер — значит начало структуры!
|
// Это не маркер — значит начало структуры!
|
||||||
ungetc(*marker, f_nodes); // возвращаем байт обратно
|
ungetc(*marker, f_nodes); // возвращаем байт обратно
|
||||||
struct metadata_file file;
|
struct metadata_file file;
|
||||||
fread(&file, sizeof(file), 1, f_nodes);
|
fread(&file, sizeof(file), 1, f_nodes);
|
||||||
mata_local->size = file.size;
|
mata_local->size = file.size;
|
||||||
mata_local->tipe_dir = file.tipe_dir;
|
mata_local->tipe_dir = file.tipe_dir;
|
||||||
|
//if(mata_local->tipe_dir){
|
||||||
fread(len, 1, sizeof(uint16_t), f_names);
|
fread(len, 1, sizeof(uint16_t), f_names);
|
||||||
mata_local->name = malloc(*len+1);
|
mata_local->name = malloc(*len+1);
|
||||||
fread(mata_local->name, 1, *len, f_names);
|
fread(mata_local->name, 1, *len, f_names);
|
||||||
printf("Файл: %s\n", mata_local->name);
|
DEBUG_PRINT("Файл: %s\n", mata_local->name);
|
||||||
// Дальше обработка структуры...
|
// Дальше обработка структуры...
|
||||||
dir_list->top = mata_local_top;
|
dir_list->top = mata_local_top;
|
||||||
mata_local->top = mata_local_top;
|
mata_local->top = mata_local_top;
|
||||||
|
|
@ -100,6 +102,7 @@ void nanaaa_2(struct metadata* mata){
|
||||||
struct metadata* mata_local_top = mata;
|
struct metadata* mata_local_top = mata;
|
||||||
mata_local->name = "./";
|
mata_local->name = "./";
|
||||||
struct dir_list_struct* dir_list = je_malloc(sizeof(struct dir_list_struct));
|
struct dir_list_struct* dir_list = je_malloc(sizeof(struct dir_list_struct));
|
||||||
|
//dir_list->next = je_malloc(sizeof(struct dir_list_struct));
|
||||||
mata_local->dir_list = dir_list;
|
mata_local->dir_list = dir_list;
|
||||||
int marker = fgetc(f_nodes);
|
int marker = fgetc(f_nodes);
|
||||||
while(marker != EOF){
|
while(marker != EOF){
|
||||||
|
|
@ -112,7 +115,7 @@ void nanaaa_2(struct metadata* mata){
|
||||||
else{
|
else{
|
||||||
DEBUG_PRINT("Контлоьные точки закончелись, поднимаюсь!\n");
|
DEBUG_PRINT("Контлоьные точки закончелись, поднимаюсь!\n");
|
||||||
if (mata_local->top == NULL){
|
if (mata_local->top == NULL){
|
||||||
printf("Подём отменён!\n");
|
DEBUG_PRINT("Подём отменён!\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
aaasss(dir_list, mata_local, mata_local_top, f_nodes, f_names, &marker, &len);
|
aaasss(dir_list, mata_local, mata_local_top, f_nodes, f_names, &marker, &len);
|
||||||
|
|
@ -130,7 +133,7 @@ void nanaaa_2(struct metadata* mata){
|
||||||
//return;
|
//return;
|
||||||
continue;
|
continue;
|
||||||
}else if (marker == 0xFE){
|
}else if (marker == 0xFE){
|
||||||
printf("SAS_xxxx\n");
|
DEBUG_PRINT("=0xFE=\n");
|
||||||
mata_local->jamp = dir_list;
|
mata_local->jamp = dir_list;
|
||||||
//struct dir_list_struct* dir_list = je_malloc(sizeof(struct dir_list_struct));
|
//struct dir_list_struct* dir_list = je_malloc(sizeof(struct dir_list_struct));
|
||||||
mata_local->dir_list = dir_list;
|
mata_local->dir_list = dir_list;
|
||||||
|
|
@ -139,10 +142,18 @@ void nanaaa_2(struct metadata* mata){
|
||||||
// DOWN_MARKER: начало детей, идём вниз
|
// DOWN_MARKER: начало детей, идём вниз
|
||||||
// Ваша логика: вызывать рекурсивный парсер детей
|
// Ваша логика: вызывать рекурсивный парсер детей
|
||||||
}else{
|
}else{
|
||||||
printf("SAS_AAA\n");
|
DEBUG_PRINT("FAIL\n");
|
||||||
aaasss(dir_list, mata_local, mata_local_top, f_nodes, f_names, &marker, &len);
|
//dir_list->file = mata_local;
|
||||||
|
struct metadata* mata_local = malloc(sizeof(struct metadata));;
|
||||||
|
dir_list->file = mata_local;
|
||||||
|
dir_list->next = je_malloc(sizeof(struct dir_list_struct));
|
||||||
dir_list = dir_list->next;
|
dir_list = dir_list->next;
|
||||||
dir_list = je_malloc(sizeof(struct dir_list_struct));
|
aaasss(dir_list, mata_local, mata_local_top, f_nodes, f_names, &marker, &len);
|
||||||
|
//dir_list->next = mata_local;
|
||||||
|
DEBUG_PRINT("NN - %s\n", mata_local->name);
|
||||||
|
//dir_list->next = je_malloc(sizeof(struct dir_list_struct));
|
||||||
|
//dir_list = dir_list->next;
|
||||||
|
//dir_list = je_malloc(sizeof(struct dir_list_struct));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
57
main.c
57
main.c
|
|
@ -29,7 +29,7 @@ unsigned narenas = 4;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define DEBUG 0
|
#define DEBUG 1
|
||||||
#define jemalloc 1
|
#define jemalloc 1
|
||||||
|
|
||||||
#if defined(DEBUG) && DEBUG > 1
|
#if defined(DEBUG) && DEBUG > 1
|
||||||
|
|
@ -380,6 +380,32 @@ cJSON *print_statistik(cJSON *main_Array, struct dir_list_struct* list, char* ou
|
||||||
return main_Array;
|
return main_Array;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void reid_dir(struct metadata * mata){
|
||||||
|
meta_data_init(mata);
|
||||||
|
mata->name = opts.dir;
|
||||||
|
mata->tipe_dir = 1;
|
||||||
|
scanning(mata);
|
||||||
|
scan_dir(mata);
|
||||||
|
nanaaa(mata);
|
||||||
|
}
|
||||||
|
|
||||||
|
void read_file(struct metadata * mata){
|
||||||
|
nanaaa_2(mata);
|
||||||
|
printf("AAAA0: %s\n", mata->name);
|
||||||
|
printf("AAAA1: %s\n", mata->dir_list->file->name);
|
||||||
|
printf("tipe_dir: %i\n", mata->dir_list->file->tipe_dir);
|
||||||
|
printf("size: %li\n", mata->dir_list->file->size);
|
||||||
|
if (mata->dir_list->next == NULL) printf("SUKA\n");
|
||||||
|
else{
|
||||||
|
printf("AAAA2: %s\n", mata->dir_list->next->file->name);
|
||||||
|
//printf("AAAA2: %s\n", mata->dir_list->file->dir_list->file->name);
|
||||||
|
}
|
||||||
|
//printf("AAAA1: %s\n", mata->dir_list->next->file->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]){
|
int main(int argc, char *argv[]){
|
||||||
//mallctl("opt.narenas", NULL, NULL, &narenas, sizeof(narenas));
|
//mallctl("opt.narenas", NULL, NULL, &narenas, sizeof(narenas));
|
||||||
char *path;
|
char *path;
|
||||||
|
|
@ -405,39 +431,26 @@ int main(int argc, char *argv[]){
|
||||||
int_depth = opts.recursion;
|
int_depth = opts.recursion;
|
||||||
path = opts.dir;
|
path = opts.dir;
|
||||||
|
|
||||||
|
|
||||||
struct metadata * mata = je_malloc(sizeof(stack_element));
|
struct metadata * mata = je_malloc(sizeof(stack_element));
|
||||||
meta_data_init(mata);
|
if (opts.dir) reid_dir(mata);
|
||||||
mata->name = path;
|
else read_file(mata);
|
||||||
mata->tipe_dir = 1;
|
|
||||||
scanning(mata);
|
|
||||||
scan_dir(mata);
|
|
||||||
/*
|
|
||||||
struct metadata * mata = je_malloc(sizeof(stack_element));
|
|
||||||
nanaaa_2(mata);
|
|
||||||
printf("AAAA0: %s\n", mata->name);
|
|
||||||
printf("AAAA1: %s\n", mata->dir_list->file->name);
|
|
||||||
printf("tipe_dir: %i\n", mata->dir_list->file->tipe_dir);
|
|
||||||
printf("size: %li\n", mata->dir_list->file->size);
|
|
||||||
if (mata->dir_list->next == NULL) printf("SUKA\n");
|
|
||||||
//printf("AAAA2: %s\n", mata->dir_list->next->file->name);
|
|
||||||
//printf("AAAA2: %s\n", mata->dir_list->file->dir_list->file->name);
|
|
||||||
*/
|
|
||||||
|
|
||||||
char output[64];
|
char output[64];
|
||||||
struct dir_list_struct* list = mata->dir_list;
|
struct dir_list_struct* list = mata->dir_list;
|
||||||
cJSON *main_Array = cJSON_CreateArray();
|
//cJSON *main_Array = cJSON_CreateArray();
|
||||||
main_Array = print_statistik(main_Array, list, output, 0);
|
//main_Array = print_statistik(main_Array, list, output, 0);
|
||||||
//while(list->next != NULL);
|
//while(list->next != NULL);
|
||||||
//save_cache(mata, int cache_size)
|
//save_cache(mata, int cache_size)
|
||||||
DEBUG_PRINT("ПППП!\n");
|
DEBUG_PRINT("ПППП!\n");
|
||||||
char *string = cJSON_Print(main_Array);
|
//char *string = cJSON_Print(main_Array);
|
||||||
DEBUG_PRINT("ччччч!\n");
|
DEBUG_PRINT("ччччч!\n");
|
||||||
printf("AA: %s\n", string);
|
//printf("AA: %s\n", string);
|
||||||
printf("%s","bye.\n");
|
printf("%s","bye.\n");
|
||||||
|
|
||||||
//file_weit(mata);
|
//file_weit(mata);
|
||||||
|
|
||||||
nanaaa(mata);
|
//nanaaa(mata);
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue