]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/lib/tree.h
First cut of restore
[bacula/bacula] / bacula / src / lib / tree.h
index cbc80c188b13782c6ba0970acec9f8cd3d7bf491..9c7db8c734dafdf8a5f73eaef1579b41faadf733 100644 (file)
 
  */
 
+struct s_mem {
+   struct s_mem *next;               /* next buffer */
+   int rem;                          /* remaining bytes */
+   char *mem;                        /* memory pointer */
+   char first[];                     /* first byte */
+};
+
 struct s_tree_node {
    char *fname;                      /* file name */
    uint32_t FileIndex;               /* file index */
-   int type;                         /* node type */
+   uint32_t JobId;                   /* JobId */
+   short type;                       /* node type */
+   short extract;                    /* set if extracting */
    struct s_tree_node *parent;
    struct s_tree_node *sibling;
    struct s_tree_node *child;
@@ -38,7 +47,9 @@ typedef struct s_tree_node TREE_NODE;
 struct s_tree_root {
    char *fname;                      /* file name */
    uint32_t FileIndex;               /* file index */
-   int type;                         /* node type */
+   uint32_t JobId;                   /* JobId */
+   short type;                       /* node type */
+   short extract;                    /* set if extracting */
    struct s_tree_node *parent;
    struct s_tree_node *sibling;
    struct s_tree_node *child;
@@ -47,6 +58,7 @@ struct s_tree_root {
    /* The above ^^^ must be identical to a TREE_NODE structure */
    struct s_tree_node *first;        /* first entry in the tree */
    struct s_tree_node *last;         /* last entry in tree */
+   struct s_mem *mem;                /* tree memory */
 };
 typedef struct s_tree_root TREE_ROOT;
 
@@ -56,7 +68,8 @@ typedef struct s_tree_root TREE_ROOT;
 #define TN_DIR    3                  /* directory entry */
 #define TN_FILE    4                 /* file entry */
 
-TREE_NODE *new_tree_node(int type);
+TREE_ROOT *new_tree(int count);
+TREE_NODE *new_tree_node(TREE_ROOT *root, int type);
 TREE_NODE *insert_tree_node(char *path, TREE_NODE *node, TREE_ROOT *root, TREE_NODE *parent);
 TREE_NODE *make_tree_path(char *path, TREE_ROOT *root);
 TREE_NODE *first_tree_node(TREE_ROOT *root);
@@ -65,6 +78,5 @@ TREE_NODE *tree_cwd(char *path, TREE_ROOT *root, TREE_NODE *node);
 TREE_NODE *tree_relcwd(char *path, TREE_ROOT *root, TREE_NODE *node);
 void append_tree_node(char *fname, TREE_NODE *node, TREE_ROOT *root, TREE_NODE *parent);
 void print_tree(char *path, TREE_NODE *root);   
-void free_tree(TREE_NODE *node);
+void free_tree(TREE_ROOT *root);
 int tree_getpath(TREE_NODE *node, char *buf, int buf_size);
-