sbase

suckless unix tools
git clone git://git.suckless.org/sbase
Log | Files | Refs | README | LICENSE

commit 5b66e55a83fd9b7bceabbc043e50f77cfe048c35
parent d15f49e71539eca632e9c27c78a7f8582879c060
Author: Pieter Kockx <pieterkockx@gmail.com>
Date:   Wed, 11 Oct 2017 03:12:31 +0200

which: handle relative/absolute pathnames

Diffstat:
which.c | 11++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)

diff --git 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; } }