diff options
Diffstat (limited to 'init/init.c')
-rw-r--r-- | init/init.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/init/init.c b/init/init.c index 125084a9..d7e42467 100644 --- a/init/init.c +++ b/init/init.c @@ -529,13 +529,19 @@ main (int argc, char **argv, char **envp) { volatile int err; int i; + int flags; mach_port_t consdev; struct argp argp = { options, parse_opt, 0, doc }; - /* Parse the arguments. We don't want the vector reordered, - we should pass on to our child the exact arguments we got - and just ignore any arguments that aren't flags for us. */ - argp_parse (&argp, argc, argv, ARGP_NO_ERRS|ARGP_IN_ORDER, 0, 0); + /* Parse the arguments. We don't want the vector reordered, we + should pass on to our child the exact arguments we got and just + ignore any arguments that aren't flags for us. ARGP_NO_ERRS + suppresses --help and --version, so we only use that option if we + are booting. */ + flags = ARGP_IN_ORDER; + if (getpid () == 0) + flags |= ARGP_NO_ERRS; + argp_parse (&argp, argc, argv, flags, 0, 0); if (getpid () > 0) error (2, 0, "can only be run by bootstrap filesystem"); |