diff --git a/Userland/Libraries/LibCore/File.cpp b/Userland/Libraries/LibCore/File.cpp index 8cdb47130a..5c403544a7 100644 --- a/Userland/Libraries/LibCore/File.cpp +++ b/Userland/Libraries/LibCore/File.cpp @@ -193,6 +193,20 @@ bool File::ensure_parent_directories(const String& path) return rc == 0; } +String File::current_working_directory() +{ + char* cwd = getcwd(nullptr, 0); + if (!cwd) { + perror("getcwd"); + return {}; + } + + auto cwd_as_string = String(cwd); + free(cwd); + + return cwd_as_string; +} + #ifdef __serenity__ String File::read_link(String const& link_path) diff --git a/Userland/Libraries/LibCore/File.h b/Userland/Libraries/LibCore/File.h index 86738aba94..814d21a6fc 100644 --- a/Userland/Libraries/LibCore/File.h +++ b/Userland/Libraries/LibCore/File.h @@ -35,6 +35,7 @@ public: static bool exists(const String& filename); static bool ensure_parent_directories(const String& path); + static String current_working_directory(); enum class RecursionMode { Allowed,