mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 10:27:34 +00:00
LibCore: Add File method to determine absolute path
This will generate absolute paths lexically rather than through a call to realpath. The motivation for this is to generate absolute paths for non-existent files in unveil calls, as realpath will not work if the file does not exist.
This commit is contained in:
parent
3ae64c7c3d
commit
068802d58d
2 changed files with 15 additions and 0 deletions
|
@ -207,6 +207,20 @@ String File::current_working_directory()
|
||||||
return cwd_as_string;
|
return cwd_as_string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String File::absolute_path(String const& path)
|
||||||
|
{
|
||||||
|
if (File::exists(path))
|
||||||
|
return File::real_path_for(path);
|
||||||
|
|
||||||
|
if (path.starts_with("/"sv))
|
||||||
|
return LexicalPath::canonicalized_path(path);
|
||||||
|
|
||||||
|
auto working_directory = File::current_working_directory();
|
||||||
|
auto full_path = LexicalPath::join(working_directory, path);
|
||||||
|
|
||||||
|
return LexicalPath::canonicalized_path(full_path.string());
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __serenity__
|
#ifdef __serenity__
|
||||||
|
|
||||||
String File::read_link(String const& link_path)
|
String File::read_link(String const& link_path)
|
||||||
|
|
|
@ -36,6 +36,7 @@ public:
|
||||||
static bool exists(const String& filename);
|
static bool exists(const String& filename);
|
||||||
static bool ensure_parent_directories(const String& path);
|
static bool ensure_parent_directories(const String& path);
|
||||||
static String current_working_directory();
|
static String current_working_directory();
|
||||||
|
static String absolute_path(String const& path);
|
||||||
|
|
||||||
enum class RecursionMode {
|
enum class RecursionMode {
|
||||||
Allowed,
|
Allowed,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue