37 lines
666 B
C
37 lines
666 B
C
|
#pragma once
|
||
|
#include "fs/VFS.h"
|
||
|
#include <luna/SharedPtr.h>
|
||
|
#include <luna/String.h>
|
||
|
|
||
|
struct OpenFileDescription : public Shareable
|
||
|
{
|
||
|
SharedPtr<VFS::Inode> inode;
|
||
|
int flags { 0 };
|
||
|
String path;
|
||
|
|
||
|
OpenFileDescription(SharedPtr<VFS::Inode>, int);
|
||
|
~OpenFileDescription();
|
||
|
};
|
||
|
|
||
|
struct FileDescriptor
|
||
|
{
|
||
|
SharedPtr<OpenFileDescription> description;
|
||
|
usize offset { 0 };
|
||
|
int flags { 0 };
|
||
|
|
||
|
bool should_append();
|
||
|
bool should_block();
|
||
|
bool is_writable();
|
||
|
bool is_readable();
|
||
|
|
||
|
SharedPtr<VFS::Inode> inode()
|
||
|
{
|
||
|
return description->inode;
|
||
|
}
|
||
|
|
||
|
int& status_flags()
|
||
|
{
|
||
|
return description->flags;
|
||
|
}
|
||
|
};
|