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