diff options
author | Ian Moffett <ian@osmora.org> | 2025-06-29 20:49:14 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-06-29 20:50:41 -0400 |
commit | 1551310aa5484a483cad4e6ae4a358cb509cbef8 (patch) | |
tree | 3b765845a7fb7e2d9bcaab2ecfa56af9dec49f68 /usr.sbin/init/main.c | |
parent | 5920cf33f368b8de20919c44fa574fd6c69f69e8 (diff) |
usr.sbin: init: Allow start path to be overridden
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'usr.sbin/init/main.c')
-rw-r--r-- | usr.sbin/init/main.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/usr.sbin/init/main.c b/usr.sbin/init/main.c index 7ad7946..bad8201 100644 --- a/usr.sbin/init/main.c +++ b/usr.sbin/init/main.c @@ -34,13 +34,22 @@ #define INIT_RC_PATH "/usr/rc/init.rc" int -main(void) +main(int argc, char **argv) { - char *argv[] = { SHELL_PATH, INIT_RC_PATH, NULL }; - char *envp[] = { NULL }; + char *start_argv[] = { SHELL_PATH, INIT_RC_PATH, NULL }; + char *start_envp[] = { NULL }; - spawn(SHELL_PATH, argv, envp, 0); - argv[1] = NULL; - spawn(SHELL_PATH, argv, envp, SPAWN_WAIT); + spawn(SHELL_PATH, start_argv, start_envp, 0); + start_argv[1] = NULL; + + /* + * We can override the start program header + * if there is something specified. + */ + if (argc > 1) { + start_argv[0] = argv[1]; + } + + spawn(start_argv[0], start_argv, start_envp, SPAWN_WAIT); return 0; } |