diff --git a/Userland/which.cpp b/Userland/which.cpp new file mode 100644 index 00000000000..7d9c50c3573 --- /dev/null +++ b/Userland/which.cpp @@ -0,0 +1,29 @@ +#include +#include +#include +#include + +int main(int argc, char** argv) +{ + if (argc < 2) { + printf("usage: which \n"); + return 0; + } + + char* filename = argv[1]; + + String path = getenv("PATH"); + if (path.is_empty()) + path = "/bin:/usr/bin"; + + auto parts = path.split(':'); + for (auto& part : parts) { + auto candidate = String::format("%s/%s", part.characters(), filename); + if(access(candidate.characters(), X_OK) == 0) { + printf("%s\n", candidate.characters()); + return 0; + } + } + + return 1; +}