commit 5b66e55a83fd9b7bceabbc043e50f77cfe048c35
Author:     Pieter Kockx <[email protected]>
AuthorDate: Wed Oct 11 03:12:31 2017 +0200
Commit:     Michael Forney <[email protected]>
CommitDate: Sat Oct 21 12:44:09 2017 -0700

    which: handle relative/absolute pathnames

diff --git a/which.c b/which.c
index ce312ae..dfc1551 100644
--- a/which.c
+++ b/which.c
@@ -21,6 +21,15 @@ which(const char *path, const char *name)
        struct stat st;
        int dirfd, found = 0;
 
+       if (strchr(name, '/')) {
+               if (!fstatat(AT_FDCWD, name, &st, 0) &&
+                   S_ISREG(st.st_mode) &&
+                   !access(name, X_OK)) {
+                       puts(name);
+                       return 1;
+               }
+       }
+
        ptr = p = enstrdup(3, path);
        len = strlen(p);
        for (i = 0; i < len + 1; i++) {
@@ -80,7 +89,7 @@ main(int argc, char *argv[])
                if (which(path, *argv)) {
                        found = 1;
                } else {
-                       weprintf("%s: command not found.\n", *argv);
+                       weprintf("%s: not an external command\n", *argv);
                        foundall = 0;
                }
        }

Reply via email to