standalone shell / prefer_applets: fix "exe" in comm fields
authorDenys Vlasenko <vda.linux@googlemail.com>
Sat, 29 Jul 2017 00:19:01 +0000 (02:19 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sat, 29 Jul 2017 00:19:01 +0000 (02:19 +0200)
function                                             old     new   delta
main                                                  92     106     +14

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
libbb/appletlib.c

index 7a1a7f005a9c9c48146d860c74dbdae109909266..fa28d433b2a35c92ad8d13be3ba356958786d297 100644 (file)
 # 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
@@ -1056,6 +1063,17 @@ int main(int argc UNUSED_PARAM, char **argv)
        if (applet_name[0] == '-')
                applet_name++;
        applet_name = bb_basename(applet_name);
+
+# if defined(__linux__)
+       /* If we are a result of execv("/proc/self/exe"), fix ugly comm of "exe" */
+       if (ENABLE_FEATURE_SH_STANDALONE
+        || ENABLE_FEATURE_PREFER_APPLETS
+        || !BB_MMU
+       ) {
+               prctl(PR_SET_NAME, (long)applet_name, 0, 0, 0);
+       }
+# endif
+
        parse_config_file(); /* ...maybe, if FEATURE_SUID_CONFIG */
        run_applet_and_exit(applet_name, argv);