summaryrefslogtreecommitdiff
path: root/applets/busybox.c
diff options
context:
space:
mode:
authorEric Andersen2000-12-08 19:03:12 +0000
committerEric Andersen2000-12-08 19:03:12 +0000
commit5e09b6e3a83c83fe3db99ef9f8b2cdf6dc21cec4 (patch)
treefca52cc08e30b0c0884add1e1413da9c730d82ff /applets/busybox.c
parentf3b2b52b589bccae28b1740c155733028f2b8fd5 (diff)
downloadbusybox-5e09b6e3a83c83fe3db99ef9f8b2cdf6dc21cec4.zip
busybox-5e09b6e3a83c83fe3db99ef9f8b2cdf6dc21cec4.tar.gz
when invoked as 'busybox foo args' remove the "busybox"
so ps shows only what we want it to show...
Diffstat (limited to 'applets/busybox.c')
-rw-r--r--applets/busybox.c29
1 files changed, 25 insertions, 4 deletions
diff --git a/applets/busybox.c b/applets/busybox.c
index 212d467..c8c060b 100644
--- a/applets/busybox.c
+++ b/applets/busybox.c
@@ -126,8 +126,6 @@ int main(int argc, char **argv)
applet_name = s;
}
- *argv = (char*)applet_name;
-
#ifdef BB_SH
/* Add in a special case hack -- whenever **argv == '-'
* (i.e. '-su' or '-sh') always invoke the shell */
@@ -153,10 +151,12 @@ int main(int argc, char **argv)
int busybox_main(int argc, char **argv)
{
int col = 0;
+ int ps_index;
+ char *index, *index2;
argc--;
- argv++;
+ /* If we've already been here once, exit now */
if (been_there_done_that == 1 || argc < 1) {
const struct BB_applet *a = applets;
@@ -181,8 +181,29 @@ int busybox_main(int argc, char **argv)
fprintf(stderr, "\n\n");
exit(-1);
}
- /* If we've already been here once, exit now */
+
+ /* Flag that we've been here already */
been_there_done_that = 1;
+
+ /* We do not want the word "busybox" to show up in ps, so we move
+ * everything in argv around to fake ps into showing what we want it to
+ * show. Since we are only shrinking the string, we don't need to move
+ * __environ or any of that tedious stuff... */
+ ps_index = 0;
+ index=*argv;
+ index2=argv[argc];
+ index2+=strlen(argv[argc]);
+ while(ps_index < argc) {
+ argv[ps_index]=index;
+ memmove(index, argv[ps_index+1], strlen(argv[ps_index+1])+1);
+ index+=(strlen(index));
+ *index='\0';
+ index++;
+ ps_index++;
+ }
+ while(index<=index2)
+ *index++='\0';
+
return (main(argc, argv));
}