[v2] abicompat: Add prompt message for abnormal operation
Commit Message
When using abicompat, if the --redundant option and --no-redundant
option are used at the same time, no error will be prompted, the
actual option will prevail.
This patch provides a error to notify the user that error.
* tools/abicompat.cc (parse_command_line): Notify the user when --redundant
and --no-redundant are used at the same time
Signed-off-by: tangmeng <tangmeng@uniontech.com>
---
tools/abicompat.cc | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
Comments
Hello,
tangmeng <tangmeng@uniontech.com> a écrit:
> When using abicompat, if the --redundant option and --no-redundant
> option are used at the same time, no error will be prompted, the
> actual option will prevail.
>
> This patch provides a error to notify the user that error.
>
> * tools/abicompat.cc (parse_command_line): Notify the user when --redundant
> and --no-redundant are used at the same time
>
> Signed-off-by: tangmeng <tangmeng@uniontech.com>
Thanks for the patch!
I have applied a slightly modified version to yours that does
essentially the same thing. Only minor nits have been picked. Please
find the applied patch below.
Thanks again!
Cheers,
From 38d883cc7425cc945a8f51fd4cb66e90e2d8d825 Mon Sep 17 00:00:00 2001
From: tangmeng <tangmeng@uniontech.com>
Date: Fri, 5 Nov 2021 17:38:28 +0800
Subject: [PATCH] abicompat: Add prompt message for abnormal operation
When using abicompat, if the --redundant option and --no-redundant
option are used at the same time, no error is prompted and none of the
options have an impact.
This patch emits an error message in that case.
* tools/abicompat.cc (parse_command_line): Notify the user
when --redundant and --no-redundant are used at the same time
Signed-off-by: tangmeng <tangmeng@uniontech.com>
Signed-off-by: Dodji Seketeli <dodji@redhat.com>
---
tools/abicompat.cc | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/tools/abicompat.cc b/tools/abicompat.cc
index cf944a49..addd03a9 100644
--- a/tools/abicompat.cc
+++ b/tools/abicompat.cc
@@ -71,6 +71,8 @@ public:
bool list_undefined_symbols_only;
bool show_base_names;
bool show_redundant;
+ bool redundant_opt_set;
+ bool no_redundant_opt_set;
bool show_locs;
options(const char* program_name)
@@ -81,6 +83,8 @@ public:
list_undefined_symbols_only(),
show_base_names(),
show_redundant(true),
+ redundant_opt_set(),
+ no_redundant_opt_set(),
show_locs(true)
{}
}; // end struct options
@@ -191,9 +195,15 @@ parse_command_line(int argc, char* argv[], options& opts)
++i;
}
else if (!strcmp(argv[i], "--redundant"))
- opts.show_redundant = true;
+ {
+ opts.show_redundant = true;
+ opts.redundant_opt_set = true;
+ }
else if (!strcmp(argv[i], "--no-redundant"))
- opts.show_redundant = false;
+ {
+ opts.show_redundant = false;
+ opts.no_redundant_opt_set = true;
+ }
else if (!strcmp(argv[i], "--no-show-locs"))
opts.show_locs = false;
else if (!strcmp(argv[i], "--help")
@@ -645,6 +655,14 @@ main(int argc, char* argv[])
<< opts.lib2_path << " will be ignored automatically\n";
}
+ if (opts.redundant_opt_set && opts.no_redundant_opt_set)
+ {
+ emit_prefix(argv[0], cerr)
+ << "ERROR: The \'--redundant\' and '--no-redundant' option are in conflict. "
+ << "Please select only one option to use.\n";
+ return 1;
+ }
+
ABG_ASSERT(!opts.app_path.empty());
if (!abigail::tools_utils::check_file(opts.app_path, cerr, opts.prog_name))
return abigail::tools_utils::ABIDIFF_ERROR;
@@ -71,6 +71,8 @@ public:
bool list_undefined_symbols_only;
bool show_base_names;
bool show_redundant;
+ bool seted_redundant;
+ bool seted_no_redundant;
bool show_locs;
options(const char* program_name)
@@ -191,9 +193,15 @@ parse_command_line(int argc, char* argv[], options& opts)
++i;
}
else if (!strcmp(argv[i], "--redundant"))
- opts.show_redundant = true;
+ {
+ opts.show_redundant = true;
+ opts.seted_redundant = true;
+ }
else if (!strcmp(argv[i], "--no-redundant"))
- opts.show_redundant = false;
+ {
+ opts.show_redundant = false;
+ opts.seted_no_redundant = true;
+ }
else if (!strcmp(argv[i], "--no-show-locs"))
opts.show_locs = false;
else if (!strcmp(argv[i], "--help")
@@ -645,6 +653,14 @@ main(int argc, char* argv[])
<< opts.lib2_path << " will be ignored automatically\n";
}
+ if (opts.seted_redundant && opts.seted_no_redundant)
+ {
+ emit_prefix(argv[0], cerr)
+ << "ERROR: The \'--redundant\' and '--no-redundant' option are in conflict. "
+ << "Please select only one option to use.\n";
+ return 1;
+ }
+
ABG_ASSERT(!opts.app_path.empty());
if (!abigail::tools_utils::check_file(opts.app_path, cerr, opts.prog_name))
return abigail::tools_utils::ABIDIFF_ERROR;