diff options
author | Mike Frysinger <vapier@gentoo.org> | 2014-03-21 01:28:35 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2014-03-21 01:28:35 -0400 |
commit | 214d027f0d92d1d042451765e875f0a84c3fa37d (patch) | |
tree | de0b57ddca10e6d8f78a400962ef3604f6855e4b | |
parent | qpkg: document the chdir() usage (diff) | |
download | portage-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-- | .depend | 2 | ||||
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | libq/libq.c | 1 | ||||
-rw-r--r-- | libq/which.c | 25 | ||||
-rw-r--r-- | q.c | 13 |
5 files changed, 5 insertions, 37 deletions
@@ -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; -} @@ -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); |