Reverse my previous changes and make a note about why its dont this way
authorGlenn L McGrath <bug1@ihug.co.nz>
Fri, 3 Oct 2003 13:21:10 +0000 (13:21 -0000)
committerGlenn L McGrath <bug1@ihug.co.nz>
Fri, 3 Oct 2003 13:21:10 +0000 (13:21 -0000)
applets/busybox.c

index 13b9f6fcbc878609f5eb4e4f8c21d4ce848cda43..9d41b52f76fdf6593b06e58c140bd46c826ad7e9 100644 (file)
@@ -162,7 +162,18 @@ int busybox_main(int argc, char **argv)
        been_there_done_that = 1;
 
        /* Move the command line down a notch */
-       return (main(argc, argv+1));
+       /* Preserve pointers so setproctitle() works consistently */
+       len = argv[argc] + strlen(argv[argc]) - argv[1];
+       memmove(argv[0], argv[1], len);
+       memset(argv[0] + len, 0, argv[1] - argv[0]);
+
+       /* Fix up the argv pointers */
+       len = argv[1] - argv[0];
+       memmove(argv, argv + 1, sizeof(char *) * (argc + 1));
+       for (i = 0; i < argc; i++)
+               argv[i] -= len;
+
+       return (main(argc, argv));
 }
 
 /*