void create_directory(unsigned char * d){ struct unsigned_char_ptr_list components; unsigned int parent_directory_inode; unsigned char * directory_name; unsigned int i; unsigned_char_ptr_list_create(&components); resolve_path_components(d, &components); /* Last path component is directory to create */ directory_name = unsigned_char_ptr_list_get(&components, unsigned_char_ptr_list_size(&components) -1); unsigned_char_ptr_list_remove_all(&components, directory_name); /* Last component is new directory to create */ parent_directory_inode = get_directory_inode_from_path_parts(&components); printf("Creating directory %s with full path %s\n", directory_name, d); create_file_given_parent_inode(parent_directory_inode, directory_name, 1); for(i = 0; i < unsigned_char_ptr_list_size(&components);i++){ free(unsigned_char_ptr_list_get(&components, i)); } unsigned_char_ptr_list_destroy(&components); free(directory_name); }
void load_file(unsigned char * d, FILE * f, struct memory_pool_collection * m){ struct unsigned_char_ptr_list components; unsigned int parent_directory_inode; unsigned int new_file_inode; unsigned char * file_name; unsigned int i; unsigned_char_ptr_list_create(&components); resolve_path_components(d, &components, m); /* Last path component is file to create */ file_name = unsigned_char_ptr_list_get(&components, unsigned_char_ptr_list_size(&components) -1); unsigned_char_ptr_list_remove_all(&components, file_name, unsigned_char_ptr_cmp); /* Last component is new file to create */ parent_directory_inode = get_directory_inode_from_path_parts(m, &components); printf("Creating file %s with full path %s\n", file_name, d); new_file_inode = create_file_given_parent_inode(parent_directory_inode, file_name, 0); load_file_given_new_inode(new_file_inode, f); for(i = 0; i < unsigned_char_ptr_list_size(&components);i++){ heap_memory_pool_free(m->heap_pool, unsigned_char_ptr_list_get(&components, i)); } unsigned_char_ptr_list_destroy(&components); heap_memory_pool_free(m->heap_pool, file_name); }