1/* vi: set sw=4 ts=4: */ 2/* 3 * Which implementation for busybox 4 * 5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> 6 * Copyright (C) 2006 Gabriel Somlo <somlo at cmu.edu> 7 * 8 * Licensed under the GPL v2 or later, see the file LICENSE in this tarball. 9 * 10 * Based on which from debianutils 11 */ 12 13#include "libbb.h" 14 15int which_main(int argc, char **argv); 16int which_main(int argc, char **argv) 17{ 18 int status = EXIT_SUCCESS; 19 char *p; 20 21 if (argc <= 1 || argv[1][0] == '-') { 22 bb_show_usage(); 23 } 24 25/* We shouldn't do this. Ever. Not our business. 26 if (!getenv("PATH")) { 27 putenv((char*)bb_PATH_root_path); 28 } 29*/ 30 31 while (--argc > 0) { 32 argv++; 33 if (strchr(*argv, '/')) { 34 if (execable_file(*argv)) { 35 puts(*argv); 36 continue; 37 } 38 } else { 39 p = find_execable(*argv); 40 if (p) { 41 puts(p); 42 free(p); 43 continue; 44 } 45 } 46 status = EXIT_FAILURE; 47 } 48 49 fflush_stdout_and_exit(status); 50} 51