[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Lost] [Patch] LostIO - vfstree_create_child



Hier eine Funktion zum erstellen eines Knotens in LostIO, die den Knoten
nicht anhand eines Pfades einordnet, sondern direkt den Elternknoten als
Parameter nimmt.
Index: src/modules/include/lostio.h
===================================================================
--- src/modules/include/lostio.h	(Revision 606)
+++ src/modules/include/lostio.h	(Arbeitskopie)
@@ -40,8 +40,8 @@
 #define _LOSTIO_H_
 #include "types.h"
 #include "collections.h"
+#include "io.h"
 
-
 ///ID des Verzeichnis Typs
 #define LOSTIO_TYPES_DIRECTORY  1
 
@@ -135,6 +135,9 @@
 ///Neuen Knoten im VFS-Baum erstellen
 bool vfstree_create_node(char* path, typeid_t type, size_t size, void* data, dword flags);
 
+///Neuen Kindknoten erstellen
+bool vfstree_create_child(vfstree_node_t* parent, char* name, typeid_t type, size_t size, void* data, dword flags);
+
 ///Knoten aus dem VFS-Baum loeschen
 bool vfstree_delete_node(char* path);
 
Index: src/modules/lib/lostio/vfstree.c
===================================================================
--- src/modules/lib/lostio/vfstree.c	(Revision 606)
+++ src/modules/lib/lostio/vfstree.c	(Arbeitskopie)
@@ -214,27 +214,16 @@
  * Erstellt einen neuen Knoten. Die Daten werden dabei _nicht kopiert sondern
  * nur ein Pointer darauf angelegt.
  *
- * @param path Pfad des neuen Knoten
+ * @param parent Eltern-Node
+ * @param name Knotenname
  * @param type Typ des neuen Knoten
  * @param size Groesse
- * @param data Pointer auf den Inhalt(_nickt_ kopiert)
+ * @param data Pointer auf den Inhalt(_nicht_ kopiert)
  *
  * @return TRUE, wenn der Knoten fehlerfrei erstellt wurde, sonst FALSE.
  */
-bool vfstree_create_node(char* path, typeid_t type, size_t size, void* data, dword flags)
-{
-    char* dirname = vfstree_dirname(path);
-    char* name = vfstree_basename(path);
-    //printf("Erstelle Knoten '%s', '%s' ('%s')\n", dirname, name, path);
-    vfstree_node_t* parent = vfstree_get_node_by_path(dirname);
-    free(dirname);
-
-    if(parent == NULL)
-    {
-        puts("Fehler beim erstellen der Datei");
-        return FALSE;
-    }
-    
+bool vfstree_create_child(vfstree_node_t* parent, char* name, typeid_t type, size_t size, void* data, dword flags)
+{  
     vfstree_node_t* new_file = malloc(sizeof(vfstree_node_t));
 
     parent->children = list_push((list_t*)parent->children, (void*) new_file);
@@ -256,6 +245,36 @@
 
 
 /**
+ * Erstellt einen neuen Knoten. Die Daten werden dabei _nicht kopiert sondern
+ * nur ein Pointer darauf angelegt.
+ *
+ * @param path Pfad des neuen Knoten
+ * @param type Typ des neuen Knoten
+ * @param size Groesse
+ * @param data Pointer auf den Inhalt(_nickt_ kopiert)
+ *
+ * @return TRUE, wenn der Knoten fehlerfrei erstellt wurde, sonst FALSE.
+ */
+bool vfstree_create_node(char* path, typeid_t type, size_t size, void* data, dword flags)
+{
+    char* dirname = vfstree_dirname(path);
+    char* name = vfstree_basename(path);
+    //printf("Erstelle Knoten '%s', '%s' ('%s')\n", dirname, name, path);
+    vfstree_node_t* parent = vfstree_get_node_by_path(dirname);
+    free(dirname);
+
+    if(parent == NULL)
+    {
+        puts("Fehler beim erstellen der Datei");
+        return FALSE;
+    }
+    
+    return vfstree_create_child(parent, name, type, size, data, flags);
+}
+
+
+
+/**
  * Einen Knoten anhand seines Pfades loeschen
  *
  * @param path Pointer auf den Pfad