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;
+}