/*
- * 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.
*/
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;
}
{
struct btr_buffer *btrb;
- assert(size != 0);
+ if (size == 0)
+ return;
if (list_empty(&btrn->children)) {
free(buf);
return;
{
struct btr_buffer *btrb;
- assert(size != 0);
+ if (size == 0)
+ return;
if (list_empty(&btrn->children))
return;
btrb = new_btrb((char *)buf, 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);
*
* \param btrn The node whose input queue is to be queried.
* \param omit Number of bytes to be omitted.
- * \param bufp Result pointer.
+ * \param bufp Result pointer. It is OK to pass \p NULL here.
*
* If a buffer tree node needs more input data but can not consume the data it
* already has (because it might be needed again later) this function can be
}
/**
- * Execute a inter-node command on the given node or on a parent node.
+ * Execute an inter-node command on the given node or on a parent node.
*
* \param btrn The node to start looking.
* \param command The command to execute.
{
*tv = btrn->start;
}
+
+struct btr_node *btr_parent(struct btr_node *btrn)
+{
+ return btrn->parent;
+}