diff options
author | Jiri Pirko <jiri@nvidia.com> | 2023-09-06 13:11:10 +0200 |
---|---|---|
committer | David Ahern <dsahern@kernel.org> | 2023-09-11 09:16:27 -0600 |
commit | 8eb894eda67d4cc0eedf0e014a4484661e896f8d (patch) | |
tree | ff05063a4ac1002e880131ef20f0fa5c912bed85 | |
parent | 5d9f42124ccd9696d835e42527020ae9fece92e6 (diff) |
devlink: implement command line args dry parsing
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@nvidia.com>
Signed-off-by: David Ahern <dsahern@kernel.org>
-rw-r--r-- | devlink/devlink.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/devlink/devlink.c b/devlink/devlink.c index f383028e..083a30d7 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) { |