coan 4.2.4
#include "file_tree.h"
#include "filesys.h"
#include "platform.h"
#include "report.h"
#include "swiss_army.h"
Include dependency graph for file_tree.c:

Go to the source code of this file.

Data Structures

struct  file_tree

Defines

#define PARENT_PENDING   ((void *)-1)
#define IS_UNLINKED(ftree)   ((ftree)->parent == PARENT_PENDING)
#define IS_ROOT(ftree)   ((ftree)->parent == NULL)
#define IS_FILE(ftree)   ((ftree)->children == NULL)
#define IS_DIR(ftree)   (!IS_FILE(ftree))
#define COUNT_FILES(flags)   (((flags) & FT_COUNT_FILES) == FT_COUNT_FILES)
#define COUNT_FILES_ONLY(flags)   (((flags) & FT_COUNT_ALL) == FT_COUNT_FILES)
#define COUNT_DIRS(flags)   (((flags) & FT_COUNT_DIRS) == FT_COUNT_DIRS)
#define COUNT_DIRS_ONLY(flags)   (((flags) & FT_COUNT_ALL) == FT_COUNT_DIRS)
#define COUNT_ALL(flags)   (((flags) & FT_COUNT_ALL) == FT_COUNT_ALL)
#define COUNT_CHILDREN(flags)   (((flags) & FT_COUNT_CHILDREN) == FT_COUNT_CHILDREN)

Functions

static bool null_filter (char const *leafname)
static void null_callback (file_tree_h ft, char const *name, file_tree_traverse_state_t context)
static file_tree_h new_node (char const *leafname, size_t len)
static file_tree_h new_file_node (char const *leafname, file_filter_t filter)
static file_tree_h get_parent (file_tree_h child)
static void link_in (file_tree_h parent, file_tree_h child)
static void file_tree_add_symlink (file_tree_h root, fs_dir_t parent, char const *symlink, file_tree_callback_t callback)
static file_tree_h new_dir_node (file_tree_h root, char const *leafname, fs_dir_t dir, file_filter_t filter, file_tree_callback_t callback)
static file_tree_h get_root (file_tree_h ft)
static file_tree_h seek_child (file_tree_h node, char const *childname)
static file_tree_h seek (file_tree_h ft, char const **path)
static file_tree_h deepen (file_tree_h ft, char const **path)
static void traverse (file_tree_h ft, file_tree_callback_t callback, char *path_start, char *path_end)
static void file_tree_add_canon (file_tree_h root, char const *path, file_tree_callback_t callback)
static void file_tree_init (file_tree_h ft)
static void file_tree_copy_init (file_tree_h dest, file_tree_const_h src)
static void file_tree_finis (file_tree_h ft)
heap_str file_tree_name (file_tree_const_h ft)
file_tree_h file_tree_new (void)
file_tree_h file_tree_copy (file_tree_const_h src)
void file_tree_swap (file_tree_h lhs, file_tree_h rhs)
void file_tree_assign (file_tree_h dest, file_tree_const_h src)
bool file_tree_equal (file_tree_const_h lhs, file_tree_const_h rhs)
bool file_tree_set_filter (file_tree_h ft, file_filter_t filter)
void file_tree_dispose (file_tree_h ft)
void file_tree_add (file_tree_h root, char const *path, file_tree_callback_t callback)
void file_tree_traverse (file_tree_h ft, file_tree_callback_t callback)
bool file_tree_is_empty (file_tree_const_h ft)
size_t file_tree_count (file_tree_const_h ft, unsigned flags, file_tree_count_t *counter)
file_tree_const_h file_tree_child (file_tree_const_h ft, size_t which)

Detailed Description

This file implements the File Tree component

Definition in file file_tree.c.

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines