diff options
Diffstat (limited to 'Source/Kernel/VFS/File.class.h')
-rw-r--r-- | Source/Kernel/VFS/File.class.h | 42 |
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 |