[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