diff options
author | Eric Andersen | 2000-12-08 19:03:12 +0000 |
---|---|---|
committer | Eric Andersen | 2000-12-08 19:03:12 +0000 |
commit | 5e09b6e3a83c83fe3db99ef9f8b2cdf6dc21cec4 (patch) | |
tree | fca52cc08e30b0c0884add1e1413da9c730d82ff /applets/busybox.c | |
parent | f3b2b52b589bccae28b1740c155733028f2b8fd5 (diff) | |
download | busybox-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.c | 29 |
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)); } |