From 1d3ab47e13a7d16db43c2b6b19e85115681e23c9 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Wed, 4 Jul 2012 23:39:03 +0200 Subject: hush getopt: shift argv arguments Make the nonopt arguments to a script available starting from $1 after running getopt. This allows for scripts which use option parsing but also have nonopts. Signed-off-by: Sascha Hauer --- common/hush.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'common/hush.c') diff --git a/common/hush.c b/common/hush.c index 3ac1d10195..8200931387 100644 --- a/common/hush.c +++ b/common/hush.c @@ -521,6 +521,8 @@ static int builtin_getopt(struct p_context *ctx, struct child_prog *child, o->optarg = xstrdup(optarg); list_add_tail(&o->list, &ctx->options); } + ctx->global_argv += optind - 1; + ctx->global_argc -= optind - 1; } ctx->options_parsed = 1; @@ -1899,7 +1901,8 @@ static const __maybe_unused char cmd_getopt_help[] = "hush option parser. is a string with valid options. Add\n" "a colon to an options if this option has a required argument or two\n" "colons for an optional argument. The current option is saved in ,\n" -"arguments are saved in OPTARG.\n"; +"arguments are saved in OPTARG. After this command additional nonopts\n" +"can be accessed starting from $1\n"; BAREBOX_CMD_START(getopt) .cmd = do_getopt, -- cgit v1.2.3