summaryrefslogtreecommitdiff
path: root/Libraries/LibCore/DirIterator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Libraries/LibCore/DirIterator.cpp')
-rw-r--r--Libraries/LibCore/DirIterator.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/Libraries/LibCore/DirIterator.cpp b/Libraries/LibCore/DirIterator.cpp
index 537b29eb85..3272e05921 100644
--- a/Libraries/LibCore/DirIterator.cpp
+++ b/Libraries/LibCore/DirIterator.cpp
@@ -25,6 +25,7 @@
*/
#include <LibCore/DirIterator.h>
+#include <AK/Vector.h>
#include <errno.h>
namespace Core {
@@ -98,4 +99,23 @@ String DirIterator::next_full_path()
return String::format("%s/%s", m_path.characters(), next_path().characters());
}
+String find_executable_in_path(String filename)
+{
+ if (filename.starts_with('/')) {
+ if (access(filename.characters(), X_OK) == 0)
+ return filename;
+
+ return {};
+ }
+
+ for (auto directory : StringView { getenv("PATH") }.split_view(':')) {
+ auto fullpath = String::format("%s/%s", directory, filename);
+
+ if (access(fullpath.characters(), X_OK) == 0)
+ return fullpath;
+ }
+
+ return {};
+}
+
}