]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - buffer_tree.c
buffer_tree.c: Add documentation of btr_parent().
[paraslash.git] / buffer_tree.c
index 63be36d7a10042c5f21b6a95677cdea369ffa12c..fd0a59cad58c0027e3911b08eb5f0bd20a176ed5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009-2012 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2009-2013 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -295,9 +295,10 @@ struct btr_node *btr_new_node(struct btr_node_description *bnd)
                bnd->child->parent = btrn;
                goto out;
        }
-       PARA_EMERG_LOG("inserting internal nodes not yet supported.\n");
-       exit(EXIT_FAILURE);
-       assert(bnd->child->parent == bnd->parent);
+       list_add_tail(&btrn->node, &bnd->parent->children);
+       list_move(&bnd->child->node, &btrn->children);
+       bnd->child->parent = btrn;
+       PARA_INFO_LOG("added %s as internal node\n", bnd->name);
 out:
        return btrn;
 }
@@ -385,7 +386,8 @@ void btr_add_output(char *buf, size_t size, struct btr_node *btrn)
 {
        struct btr_buffer *btrb;
 
-       assert(size != 0);
+       if (size == 0)
+               return;
        if (list_empty(&btrn->children)) {
                free(buf);
                return;
@@ -414,7 +416,8 @@ void btr_add_output_dont_free(const char *buf, size_t size, struct btr_node *btr
 {
        struct btr_buffer *btrb;
 
-       assert(size != 0);
+       if (size == 0)
+               return;
        if (list_empty(&btrn->children))
                return;
        btrb = new_btrb((char *)buf, size);
@@ -441,7 +444,8 @@ void btr_add_output_pool(struct btr_pool *btrp, size_t size,
        char *buf;
        size_t avail;
 
-       assert(size != 0);
+       if (size == 0)
+               return;
        if (list_empty(&btrn->children))
                return;
        avail = btr_pool_get_buffer(btrp, &buf);
@@ -1225,3 +1229,18 @@ void btr_get_node_start(struct btr_node *btrn, struct timeval *tv)
 {
        *tv = btrn->start;
 }
+
+/**
+ * Get the parent node of a buffer tree node.
+ *
+ * \param btrn The node whose parent should be returned.
+ *
+ * \a btrn must not be \p NULL.
+ *
+ * \return The parent of \a btrn, or \p NULL if \a btrn is the
+ * root node of the buffer tree.
+ */
+struct btr_node *btr_parent(struct btr_node *btrn)
+{
+       return btrn->parent;
+}