summaryrefslogtreecommitdiff
path: root/Source/Kernel/VFS/File.class.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Kernel/VFS/File.class.h')
-rw-r--r--Source/Kernel/VFS/File.class.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/Source/Kernel/VFS/File.class.h b/Source/Kernel/VFS/File.class.h
new file mode 100644
index 0000000..dace2cf
--- /dev/null
+++ b/Source/Kernel/VFS/File.class.h
@@ -0,0 +1,42 @@
+#ifndef DEF_FILE_CLASS_H
+#define DEF_FILE_CLASS_H
+
+#include <VFS/FileNode.class.h>
+
+enum {
+ FM_READ = 0, //Open for read, put cursor at beginning
+ FM_TRUNCATE = 1, //Open for write, truncating file before
+ FM_APPEND = 2, //Open for write, put cursor at end
+ FM_REPLACE = 3 //Open for write, put cursor at beginning
+};
+
+enum {
+ SM_FORWARD = 0, //Seek from actual position
+ SM_BACKWARD = 1, //Seek from actual position, backward
+ SM_BEGINNING = 2, //Seek from start of file
+ SM_END = 3, //Seek from end of file
+};
+
+class File {
+ private:
+ FileNode* m_file;
+ bool m_valid; //Is a file opened and valid ?
+ bool m_writable; //Is file opened for write ?
+ u64int m_position;
+
+ public:
+ File();
+ File(String filename, u8int mode = FM_READ, FSNode* start = 0);
+ ~File();
+
+ bool open(String filename, u8int mode = FM_READ, FSNode* start = 0);
+ u32int read(u32int max_length, u8int *data);
+ bool write(u32int length, u8int *data);
+ bool seek(u64int count, u8int mode);
+ u64int getPosition() { return m_position; }
+ void close(bool unregisterFD = true); //unregisterFD = whether or not we must unregister the file descriptor from process
+
+ bool valid() { return m_valid; }
+};
+
+#endif