diff --git a/file.h b/file.h index 3eb57fe..22e29ec 100644 --- a/file.h +++ b/file.h @@ -61,30 +61,32 @@ void name_file_w(char* name, FILE * f_names, uint64_t *names_offset){ *names_offset += len + sizeof(uint16_t); } 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.size = meta->size; - file.tipe_dir = meta->tipe_dir; + file.size = meta->size; + file.tipe_dir = meta->tipe_dir; fwrite(&file, 1, sizeof(struct metadata_file), f_nodes); *nodes_offset += sizeof(struct metadata_file); } 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){ + DEBUG_PRINT("НЕ dir_list->file\n"); dir_list = dir_list->next; 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); // возвращаем байт обратно struct metadata_file file; fread(&file, sizeof(file), 1, f_nodes); mata_local->size = file.size; mata_local->tipe_dir = file.tipe_dir; + //if(mata_local->tipe_dir){ fread(len, 1, sizeof(uint16_t), f_names); mata_local->name = malloc(*len+1); 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; mata_local->top = mata_local_top; @@ -100,6 +102,7 @@ void nanaaa_2(struct metadata* mata){ struct metadata* mata_local_top = mata; mata_local->name = "./"; 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; int marker = fgetc(f_nodes); while(marker != EOF){ @@ -112,7 +115,7 @@ void nanaaa_2(struct metadata* mata){ else{ DEBUG_PRINT("Контлоьные точки закончелись, поднимаюсь!\n"); if (mata_local->top == NULL){ - printf("Подём отменён!\n"); + DEBUG_PRINT("Подём отменён!\n"); break; } 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; continue; }else if (marker == 0xFE){ - printf("SAS_xxxx\n"); + DEBUG_PRINT("=0xFE=\n"); mata_local->jamp = dir_list; //struct dir_list_struct* dir_list = je_malloc(sizeof(struct dir_list_struct)); mata_local->dir_list = dir_list; @@ -139,10 +142,18 @@ void nanaaa_2(struct metadata* mata){ // DOWN_MARKER: начало детей, идём вниз // Ваша логика: вызывать рекурсивный парсер детей }else{ - printf("SAS_AAA\n"); + DEBUG_PRINT("FAIL\n"); + //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; aaasss(dir_list, mata_local, mata_local_top, f_nodes, f_names, &marker, &len); - dir_list = dir_list->next; - dir_list = je_malloc(sizeof(struct dir_list_struct)); + //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)); } } diff --git a/main.c b/main.c index 39cf448..26dccad 100644 --- a/main.c +++ b/main.c @@ -29,7 +29,7 @@ unsigned narenas = 4; -#define DEBUG 0 +#define DEBUG 1 #define jemalloc 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; } + +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[]){ //mallctl("opt.narenas", NULL, NULL, &narenas, sizeof(narenas)); char *path; @@ -404,40 +430,27 @@ int main(int argc, char *argv[]){ js_logok = opts.json; int_depth = opts.recursion; path = opts.dir; + - struct metadata * mata = je_malloc(sizeof(stack_element)); - meta_data_init(mata); - mata->name = path; - 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); - */ + struct metadata * mata = je_malloc(sizeof(stack_element)); + if (opts.dir) reid_dir(mata); + else read_file(mata); char output[64]; struct dir_list_struct* list = mata->dir_list; - cJSON *main_Array = cJSON_CreateArray(); - main_Array = print_statistik(main_Array, list, output, 0); + //cJSON *main_Array = cJSON_CreateArray(); + //main_Array = print_statistik(main_Array, list, output, 0); //while(list->next != NULL); //save_cache(mata, int cache_size) DEBUG_PRINT("ПППП!\n"); - char *string = cJSON_Print(main_Array); + //char *string = cJSON_Print(main_Array); DEBUG_PRINT("ччччч!\n"); - printf("AA: %s\n", string); + //printf("AA: %s\n", string); printf("%s","bye.\n"); //file_weit(mata); - nanaaa(mata); + //nanaaa(mata); return 0;