Kernel: Inode can now return full mode value
Kernel::Inode::Mode is an union of bitmasked fields for every possible bit
This commit is contained in:
@@ -122,13 +122,12 @@ namespace Kernel
|
||||
class Ext2Inode : public Inode
|
||||
{
|
||||
public:
|
||||
virtual bool is_directory() const override;
|
||||
virtual bool is_regular_file() const override;
|
||||
|
||||
virtual uint16_t uid() const override { return m_inode.uid; }
|
||||
virtual uint16_t gid() const override { return m_inode.gid; }
|
||||
virtual uint32_t size() const override { return m_inode.size; }
|
||||
|
||||
virtual Mode mode() const override { return { .mode = m_inode.mode }; }
|
||||
|
||||
virtual BAN::StringView name() const override { return m_name; }
|
||||
|
||||
virtual BAN::ErrorOr<BAN::Vector<uint8_t>> read_all() override;
|
||||
|
||||
@@ -11,13 +11,40 @@ namespace Kernel
|
||||
class Inode
|
||||
{
|
||||
public:
|
||||
virtual bool is_directory() const = 0;
|
||||
virtual bool is_regular_file() const = 0;
|
||||
union Mode
|
||||
{
|
||||
struct
|
||||
{
|
||||
uint16_t IXOTH : 1; // 0x0001
|
||||
uint16_t IWOTH : 1; // 0x0002
|
||||
uint16_t IROTH : 1; // 0x0004
|
||||
uint16_t IXGRP : 1; // 0x0008
|
||||
uint16_t IWGRP : 1; // 0x0010
|
||||
uint16_t IRGRP : 1; // 0x0020
|
||||
uint16_t IXUSR : 1; // 0x0040
|
||||
uint16_t IWUSR : 1; // 0x0080
|
||||
uint16_t IRUSR : 1; // 0x0100
|
||||
uint16_t ISVTX : 1; // 0x0200
|
||||
uint16_t ISGID : 1; // 0x0400
|
||||
uint16_t ISUID : 1; // 0x0800
|
||||
uint16_t IFIFO : 1; // 0x1000
|
||||
uint16_t IFCHR : 1; // 0x2000
|
||||
uint16_t IFDIR : 1; // 0x4000
|
||||
uint16_t IFREG : 1; // 0x8000
|
||||
};
|
||||
uint16_t mode;
|
||||
};
|
||||
|
||||
public:
|
||||
bool ifdir() const { return mode().IFDIR; }
|
||||
bool ifreg() const { return mode().IFREG; }
|
||||
|
||||
virtual uint16_t uid() const = 0;
|
||||
virtual uint16_t gid() const = 0;
|
||||
virtual uint32_t size() const = 0;
|
||||
|
||||
virtual Mode mode() const = 0;
|
||||
|
||||
virtual BAN::StringView name() const = 0;
|
||||
|
||||
virtual BAN::ErrorOr<BAN::Vector<uint8_t>> read_all() = 0;
|
||||
|
||||
Reference in New Issue
Block a user