[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Lost] [Patch] LostIO - vfstree_delete_child
Hier ein Patch, der eine Funktion fürs Löschen von Unterknoten im
LostIO-Baum anhand ihres Namens zur Verfügung stellt.
Index: lib/lostio/vfstree.c
===================================================================
--- lib/lostio/vfstree.c (Revision 616)
+++ lib/lostio/vfstree.c (Arbeitskopie)
@@ -272,23 +272,17 @@
return vfstree_create_child(parent, name, type, size, data, flags);
}
-
-
/**
- * Einen Knoten anhand seines Pfades loeschen
+ * Kindknoten anhand seines Namens loeschen
*
- * @param path Pointer auf den Pfad
+ * @param parent Elternknoten
+ * @param name Name des gewuenschten Kindknotens
*
- * @return TRUE, wenn der Knoten fehlerfrei geloescht wurde, sonst FALSE.
+ * @return TRUE bei Erfolg, FALSE im Fehlerfall
*/
-bool vfstree_delete_node(char* path)
+bool vfstree_delete_child(vfstree_node_t* parent, const char* name)
{
- char* dirname = vfstree_dirname(path);
-
- vfstree_node_t* parent = vfstree_get_node_by_path(dirname);
- vfstree_node_t* node_del = vfstree_get_node_by_path(path);
- free(dirname);
-
+ vfstree_node_t* node_del = vfstree_get_node_by_name(parent, (char*) name);
if((parent == NULL) || (node_del == NULL))
{
return FALSE;
@@ -319,12 +313,34 @@
//TODO: Kinder-Knoten Loeschen
free(node->name);
free(node);
-
return TRUE;
}
+/**
+ * Einen Knoten anhand seines Pfades loeschen
+ *
+ * @param path Pointer auf den Pfad
+ *
+ * @return TRUE, wenn der Knoten fehlerfrei geloescht wurde, sonst FALSE.
+ */
+bool vfstree_delete_node(char* path)
+{
+ char* dirname = vfstree_dirname(path);
+ char* basename = vfstree_basename(path);
+ vfstree_node_t* parent = vfstree_get_node_by_path(dirname);
+ free(dirname);
+
+ if(parent == NULL)
+ {
+ return FALSE;
+ }
+
+ return vfstree_delete_child(parent, basename);
+}
+
+
void vfstree_clear_node(vfstree_node_t* node)
{
if(node->size != 0)
Index: include/lostio.h
===================================================================
--- include/lostio.h (Revision 616)
+++ include/lostio.h (Arbeitskopie)
@@ -142,6 +148,9 @@
///Knoten aus dem VFS-Baum loeschen
bool vfstree_delete_node(char* path);
+///Kindknoten loeschen
+bool vfstree_delete_child(vfstree_node_t* parent, const char* name);
+
///
void vfstree_clear_node(vfstree_node_t* node);