[hackers] [sbase] which: handle relative/absolute pathnames || Pieter Kockx
commit 5b66e55a83fd9b7bceabbc043e50f77cfe048c35
Author: Pieter Kockx <pieterkockx_AT_gmail.com>
AuthorDate: Wed Oct 11 03:12:31 2017 +0200
Commit: Michael Forney <mforney_AT_mforney.org>
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
_AT_@ -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++) {
_AT_@ -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;
}
}
Received on Sat Oct 21 2017 - 21:57:39 CEST
This archive was generated by hypermail 2.3.0
: Sat Oct 21 2017 - 22:00:31 CEST