static directory_t * create_structure(int depth, char *pathname) { directory_t *dir; unsigned i; assert(depth == 0); /* Create the root directory descriptor. */ dir = allocate_directory(1); dir->depth = 0; dir->pathname = strdup(pathname); allocate_directories(dir, 0); dir->n_sources = 0; /* top level directory never has sources */ dir->sources = NULL; initialize_sources(dir, depth); initialize_directories(dir, depth + 1); for (i = 0; i < dir->n_directories; ++i) { create_subdirectory_tree(&dir->directories[i], dir->pathname, depth + 2, i); } return dir; }
int bd_readdir(const char *pDirLocation, DirEntry **ppListeFichiers) { int iNode = find_iNode(pDirLocation); if (iNode != -1) { return allocate_directory(iNode, ppListeFichiers); } return iNode; }
static void allocate_directories(directory_t *dir, unsigned allow_zero) { unsigned n_directories = random_in_range(arg_subdirs); while (!allow_zero && n_directories == 0) { n_directories = random_in_range(arg_subdirs); } dir->n_directories = n_directories; dir->directories = allocate_directory(n_directories); }