[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230906111113.690815-4-jiri@resnulli.us>
Date: Wed, 6 Sep 2023 13:11:10 +0200
From: Jiri Pirko <jiri@...nulli.us>
To: netdev@...r.kernel.org
Cc: stephen@...workplumber.org,
dsahern@...il.com
Subject: [patch iproute2-next v2 3/6] devlink: implement command line args dry parsing
From: Jiri Pirko <jiri@...dia.com>
In preparation to the follow-up dump selector patch, introduce function
dl_argv_dry_parse() which allows to do dry parsing of command line
arguments without printing out any error messages to the user.
Signed-off-by: Jiri Pirko <jiri@...dia.com>
---
devlink/devlink.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/devlink/devlink.c b/devlink/devlink.c
index f383028ec560..083a30d7536c 100644
--- a/devlink/devlink.c
+++ b/devlink/devlink.c
@@ -64,6 +64,7 @@
static int g_new_line_count;
static int g_indent_level;
static bool g_indent_newline;
+static bool g_err_suspended;
#define INDENT_STR_STEP 2
#define INDENT_STR_MAXLEN 32
@@ -74,6 +75,8 @@ pr_err(const char *fmt, ...)
{
va_list ap;
+ if (g_err_suspended)
+ return;
va_start(ap, fmt);
vfprintf(stderr, fmt, ap);
va_end(ap);
@@ -2284,6 +2287,21 @@ static int dl_argv_parse(struct dl *dl, uint64_t o_required,
return dl_args_finding_required_validate(o_required, o_found);
}
+static int dl_argv_dry_parse(struct dl *dl, uint64_t o_required,
+ uint64_t o_optional)
+{
+ char **argv = dl->argv;
+ int argc = dl->argc;
+ int err;
+
+ g_err_suspended = true;
+ err = dl_argv_parse(dl, o_required, o_optional);
+ g_err_suspended = false;
+ dl->argv = argv;
+ dl->argc = argc;
+ return err;
+}
+
static void
dl_function_attr_put(struct nlmsghdr *nlh, const struct dl_opts *opts)
{
--
2.41.0
Powered by blists - more mailing lists