BarryServer : Git

All the code for all my projects
// BarryServer : Git / Nucleus / commit / 77a8df88b03707e14f840df6b0daeb9fa081f613 / vfs / file.c

// Related

Nucleus

Barry FS Object wrapper functions 77a8df8 (3 years, 3 months ago)
diff --git a/vfs/file.c b/vfs/file.c
index 8aef18f..f73c8e1 100644
--- a/vfs/file.c
+++ b/vfs/file.c
@@ -7,6 +7,7 @@
  * generic version.
  */
 
+#include <errno.h>
 #include <nucleus/object.h>
 #include <nucleus/vfs.h>
 
@@ -14,6 +15,7 @@ static void file_delete(Object *);
 
 /* File object type */
 ObjectType fileType = {
+	.name = "FILE",
 	.size = sizeof(File),
 	.delete = file_delete,
 };
@@ -28,3 +30,36 @@ file_delete(Object *obj)
 	if (file->path)
 		destroy_list(file->path);
 }
+
+/* Open a file */
+int
+file_open(File *file)
+{
+	if (!file->ops || !file->ops->open)
+		return -EINVAL;
+	return file->ops->open(file);
+}
+
+/* Read a file */
+size_t
+file_read(File *file, char *buf, size_t size)
+{
+	size_t count = 0;
+	if (!file->ops || !file->ops->read)
+		return count;
+	count = file->ops->read(file, buf, size, file->pos);
+	file->pos += count;
+	return count;
+}
+
+/* Write a file */
+size_t
+file_write(File *file, char *buf, size_t size)
+{
+	size_t count = 0;
+	if (!file->ops || !file->ops->write)
+		return count;
+	count = file->ops->write(file, buf, size, file->pos);
+	file->pos += count;
+	return count;
+}