summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDenys Vlasenko2011-02-02 03:28:56 +0100
committerDenys Vlasenko2011-02-02 03:28:56 +0100
commitc71b469f5daceb717e31cc9ce46b0e058e2c57b6 (patch)
treeab428529615091f3d1759ad9fcd254f0cab46b19 /include
parent099e528919e2219772265e99ab8a43d188c1b8db (diff)
downloadbusybox-c71b469f5daceb717e31cc9ce46b0e058e2c57b6.zip
busybox-c71b469f5daceb717e31cc9ce46b0e058e2c57b6.tar.gz
libbb: make BB_EXECVP/LP try to exec real binary if there's no /proc/self/exe
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'include')
-rw-r--r--include/libbb.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/include/libbb.h b/include/libbb.h
index 182b479..e69e279 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -867,14 +867,16 @@ int exists_execable(const char *filename) FAST_FUNC;
* but it may exec busybox and call applet instead of searching PATH.
*/
#if ENABLE_FEATURE_PREFER_APPLETS
-int bb_execvp(const char *file, char *const argv[]) FAST_FUNC;
-#define BB_EXECVP(prog,cmd) bb_execvp(prog,cmd)
+int BB_EXECVP(const char *file, char *const argv[]) FAST_FUNC;
#define BB_EXECLP(prog,cmd,...) \
- execlp((find_applet_by_name(prog) >= 0) ? CONFIG_BUSYBOX_EXEC_PATH : prog, \
- cmd, __VA_ARGS__)
+ do { \
+ if (find_applet_by_name(prog) >= 0) \
+ execlp(bb_busybox_exec_path, cmd, __VA_ARGS__); \
+ execlp(prog, cmd, __VA_ARGS__); \
+ } while (0)
#else
#define BB_EXECVP(prog,cmd) execvp(prog,cmd)
-#define BB_EXECLP(prog,cmd,...) execlp(prog,cmd, __VA_ARGS__)
+#define BB_EXECLP(prog,cmd,...) execlp(prog,cmd,__VA_ARGS__)
#endif
int BB_EXECVP_or_die(char **argv) NORETURN FAST_FUNC;