Exemple #1
0
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);
}
Exemple #2
0
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);
}