Luna/libos/include/os/Directory.h

37 lines
638 B
C
Raw Normal View History

2023-04-28 19:15:41 +00:00
#pragma once
#include <dirent.h>
#include <luna/SharedPtr.h>
#include <luna/String.h>
namespace os
{
class Directory
{
public:
static Result<SharedPtr<Directory>> open(StringView path);
static Result<SharedPtr<Directory>> openat(int dirfd, StringView path);
enum class Filter
{
None,
Hidden,
ParentAndBase
};
Result<String> next(Filter filter);
int fd()
{
return dirfd(m_dirp);
}
~Directory();
private:
Directory(Badge<Directory>);
DIR* m_dirp { nullptr };
};
}