From 6697e4927883843e1bd537d778fc58bebd9a0b4e Mon Sep 17 00:00:00 2001 From: Nikias Bassen Date: Tue, 24 Apr 2012 01:10:46 +0200 Subject: libcnary: return removed/detached index in node_list_remove/node_detach --- libcnary/node.c | 7 ++++--- libcnary/node_list.c | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/libcnary/node.c b/libcnary/node.c index 264c78e..0a8f414 100644 --- a/libcnary/node.c +++ b/libcnary/node.c @@ -95,11 +95,12 @@ int node_attach(node_t* parent, node_t* child) { } int node_detach(node_t* parent, node_t* child) { - if (!parent || !child) return 0; - if (node_list_remove(parent->children, child) == 0) { + if (!parent || !child) return -1; + int index = node_list_remove(parent->children, child); + if (index >= 0) { parent->count--; } - return 0; + return index; } int node_insert(node_t* parent, unsigned int index, node_t* child) diff --git a/libcnary/node_list.c b/libcnary/node_list.c index 78f450e..5b291e7 100644 --- a/libcnary/node_list.c +++ b/libcnary/node_list.c @@ -124,6 +124,7 @@ int node_list_remove(node_list_t* list, node_t* node) { if (!list || !node) return -1; if (list->count == 0) return -1; + int index = 0; node_t* n; for (n = list->begin; n; n = n->next) { if (node == n) { @@ -144,8 +145,9 @@ int node_list_remove(node_list_t* list, node_t* node) { list->begin = newnode; } list->count--; - return 0; + return index; } + index++; } return -1; } -- cgit v1.1-32-gdbae