Luna/libos/include/os/Path.h

37 lines
678 B
C
Raw Normal View History

#pragma once
#include <fcntl.h>
#include <luna/StringView.h>
namespace os
{
class Path
{
public:
Path(const char* path);
Path(StringView path);
Path(int fd);
Path(int dirfd, StringView name);
int dirfd() const
{
return m_dirfd.value_or(AT_FDCWD);
}
StringView name() const
{
return m_name.value_or(""_sv);
}
int is_empty_path() const
{
if (m_dirfd.has_value() && !m_name.has_value()) return AT_EMPTY_PATH;
return 0;
}
private:
Option<int> m_dirfd;
Option<StringView> m_name;
};
}