Luna/libos/include/os/Directory.h

42 lines
740 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>
2023-04-28 20:41:44 +00:00
#include <luna/Vector.h>
2023-04-28 19:15:41 +00:00
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);
2023-04-28 20:41:44 +00:00
Result<Vector<String>> list(Filter filter);
void rewind();
2023-04-28 19:15:41 +00:00
int fd()
{
return dirfd(m_dirp);
}
~Directory();
private:
Directory(Badge<Directory>);
DIR* m_dirp { nullptr };
};
}