aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2014-03-21 01:28:35 -0400
committerMike Frysinger <vapier@gentoo.org>2014-03-21 01:28:35 -0400
commit214d027f0d92d1d042451765e875f0a84c3fa37d (patch)
treede0b57ddca10e6d8f78a400962ef3604f6855e4b
parentqpkg: document the chdir() usage (diff)
downloadportage-utils-214d027f0d92d1d042451765e875f0a84c3fa37d.tar.gz
portage-utils-214d027f0d92d1d042451765e875f0a84c3fa37d.tar.bz2
portage-utils-214d027f0d92d1d042451765e875f0a84c3fa37d.zip
which: punt!
This code is only used by --install, and only when /proc/self/exe does not work. We rarely utilize --install, and it's rare for /proc to be broken in a way we can't rely on. So having this func just for that does not make much sense. Even then, the code was not correct. It walked $PATH in reverse order (when it should have been forward order), and it would abort scanning beofre it checked the first element. It also doesn't support empty path elements (which is supposed to be $PWD). If we want a which() in the future, we can grab the updated version from Gentoo's pax-utils project.
-rw-r--r--.depend2
-rw-r--r--Makefile.am1
-rw-r--r--libq/libq.c1
-rw-r--r--libq/which.c25
-rw-r--r--q.c13
5 files changed, 5 insertions, 37 deletions
diff --git a/.depend b/.depend
index 259c95ce..3b63d1fd 100644
--- a/.depend
+++ b/.depend
@@ -1,7 +1,7 @@
main.o: main.c porting.h main.h libq/libq.c libq/busybox.h libq/i18n.h \
libq/libq.h libq/colors.c libq/xmalloc.c libq/xstrdup.c libq/xasprintf.c \
libq/hash_fd.c libq/md5_sha1_sum.c libq/human_readable.c libq/rmspace.c \
- libq/which.c libq/compat.c libq/copy_file.c libq/safe_io.c libq/xchdir.c \
+ libq/compat.c libq/copy_file.c libq/safe_io.c libq/xchdir.c \
libq/xgetcwd.c libq/xmkdir.c libq/xreadlink.c libq/xregex.c \
libq/xsystem.c libq/xarray.c libq/atom_explode.c libq/atom_compare.c \
libq/basename.c libq/scandirat.c libq/prelink.c libq/profile.c \
diff --git a/Makefile.am b/Makefile.am
index ed5c184c..14bc6491 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -112,7 +112,6 @@ EXTRA_DIST += \
libq/vdb.c \
libq/vdb_get_next_dir.c \
libq/virtuals.c \
- libq/which.c \
libq/xarray.c \
libq/xasprintf.c \
libq/xchdir.c \
diff --git a/libq/libq.c b/libq/libq.c
index 528db756..5c6eb5c7 100644
--- a/libq/libq.c
+++ b/libq/libq.c
@@ -17,7 +17,6 @@
#include "md5_sha1_sum.c"
#include "human_readable.c"
#include "rmspace.c"
-#include "which.c"
#include "compat.c"
#include "copy_file.c"
diff --git a/libq/which.c b/libq/which.c
deleted file mode 100644
index ce33121a..00000000
--- a/libq/which.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/* find the path to a file by name */
-static char *which(const char *fname)
-{
- static char fullpath[BUFSIZ];
- char *ret, *path, *p;
-
- ret = NULL;
-
- path = getenv("PATH");
- if (!path)
- return ret;
-
- path = xstrdup(path);
- while ((p = strrchr(path, ':')) != NULL) {
- snprintf(fullpath, sizeof(fullpath), "%s/%s", p + 1, fname);
- *p = 0;
- if (access(fullpath, R_OK) != -1) {
- ret = fullpath;
- break;
- }
- }
- free(path);
-
- return ret;
-}
diff --git a/q.c b/q.c
index 394a035c..443ce4be 100644
--- a/q.c
+++ b/q.c
@@ -104,15 +104,10 @@ int q_main(int argc, char **argv)
rret = readlink("/proc/self/exe", buf, sizeof(buf) - 1);
if (rret == -1) {
- char *ptr = which("q");
- if (ptr == NULL) {
- warnfp("haha no symlink love for you");
- return 1;
- }
- strncpy(buf, ptr, sizeof(buf));
- buf[sizeof(buf) - 1] = '\0';
- } else
- buf[rret] = '\0';
+ warnfp("haha no symlink love for you");
+ return 1;
+ }
+ buf[rret] = '\0';
prog = basename(buf);
dir = dirname(buf);