diff options
-rw-r--r-- | libbb/appletlib.c | 16 | ||||
-rw-r--r-- | libbb/vfork_daemon_rexec.c | 33 |
2 files changed, 24 insertions, 25 deletions
diff --git a/libbb/appletlib.c b/libbb/appletlib.c index 5b84920a4..cbca7ef17 100644 --- a/libbb/appletlib.c +++ b/libbb/appletlib.c @@ -34,14 +34,6 @@ # include <malloc.h> /* for mallopt */ #endif -#include <sys/prctl.h> -#ifndef PR_SET_NAME -#define PR_SET_NAME 15 -#endif -#ifndef PR_GET_NAME -#define PR_GET_NAME 16 -#endif - /* Declare <applet>_main() */ #define PROTOTYPES #include "applets.h" @@ -911,14 +903,6 @@ int busybox_main(int argc UNUSED_PARAM, char **argv) } # endif -#if defined(__linux__) && (NUM_APPLETS > 1) -void FAST_FUNC set_task_comm(const char *comm) -{ - /* okay if too long (truncates) */ - prctl(PR_SET_NAME, (long)comm, 0, 0, 0); -} -#endif - # if NUM_APPLETS > 0 void FAST_FUNC run_applet_no_and_exit(int applet_no, const char *name, char **argv) { diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c index c96cd61a5..e55847f93 100644 --- a/libbb/vfork_daemon_rexec.c +++ b/libbb/vfork_daemon_rexec.c @@ -14,14 +14,32 @@ * * Licensed under GPLv2 or later, see file LICENSE in this source tree. */ +#include <sys/prctl.h> +#ifndef PR_SET_NAME +#define PR_SET_NAME 15 +#endif +#ifndef PR_GET_NAME +#define PR_GET_NAME 16 +#endif + #include "busybox.h" /* uses applet tables */ #include "NUM_APPLETS.h" +#define NOFORK_SUPPORT ((NUM_APPLETS > 1) && (ENABLE_FEATURE_PREFER_APPLETS || ENABLE_FEATURE_SH_NOFORK)) +#define NOEXEC_SUPPORT ((NUM_APPLETS > 1) && (ENABLE_FEATURE_PREFER_APPLETS || ENABLE_FEATURE_SH_STANDALONE)) + +#if defined(__linux__) && (NUM_APPLETS > 1) +void FAST_FUNC set_task_comm(const char *comm) +{ + /* okay if too long (truncates) */ + prctl(PR_SET_NAME, (long)comm, 0, 0, 0); +} +#endif + /* - * NOFORK support + * NOFORK/NOEXEC support */ -#if ENABLE_FEATURE_PREFER_APPLETS \ - || ENABLE_FEATURE_SH_NOFORK +#if NOFORK_SUPPORT static jmp_buf die_jmp; static void jump(void) { @@ -109,12 +127,9 @@ int FAST_FUNC run_nofork_applet(int applet_no, char **argv) return rc & 0xff; /* don't confuse people with "exitcodes" >255 */ } -#endif /* FEATURE_PREFER_APPLETS || FEATURE_SH_NOFORK */ +#endif -/* - * NOEXEC support - */ -#if (NUM_APPLETS > 1) && (ENABLE_FEATURE_PREFER_APPLETS || ENABLE_FEATURE_SH_STANDALONE) +#if NOEXEC_SUPPORT void FAST_FUNC run_noexec_applet_and_exit(int a, const char *name, char **argv) { /* reset some state and run without execing */ @@ -212,7 +227,7 @@ int FAST_FUNC spawn_and_wait(char **argv) } # endif } -#endif /* FEATURE_PREFER_APPLETS */ +#endif rc = spawn(argv); return wait4pid(rc); } |