[Pdbg] [PATCH 2/6] main: Print specific errors for invalid arguments
Amitay Isaacs
amitay at ozlabs.org
Fri May 25 14:52:36 AEST 2018
This avoids the large usage message obscuring the actual errors from
parsing options. Print usage only if an option is invalid.
Signed-off-by: Amitay Isaacs <amitay at ozlabs.org>
---
src/main.c | 31 +++++++++++++++----------------
1 file changed, 15 insertions(+), 16 deletions(-)
diff --git a/src/main.c b/src/main.c
index 457cda2..4a1b0e0 100644
--- a/src/main.c
+++ b/src/main.c
@@ -226,7 +226,7 @@ static bool parse_list(const char *arg, int max, int *list, int *count)
static bool parse_options(int argc, char *argv[])
{
int c;
- bool opt_error = true;
+ bool opt_error = false;
int p_list[MAX_PROCESSORS];
int c_list[MAX_CHIPS];
int t_list[MAX_THREADS];
@@ -255,8 +255,6 @@ static bool parse_options(int argc, char *argv[])
switch(c) {
case 'a':
- opt_error = false;
-
if (p_count == 0) {
p_count = MAX_PROCESSORS;
for (i=0; i<MAX_PROCESSORS; i++)
@@ -277,28 +275,27 @@ static bool parse_options(int argc, char *argv[])
break;
case 'p':
- if (!parse_list(optarg, MAX_PROCESSORS, p_list, &p_count))
+ if (!parse_list(optarg, MAX_PROCESSORS, p_list, &p_count)) {
fprintf(stderr, "Failed to parse '-p %s'\n", optarg);
- else
- opt_error = false;
+ opt_error = true;
+ }
break;
case 'c':
- if (!parse_list(optarg, MAX_CHIPS, c_list, &c_count))
+ if (!parse_list(optarg, MAX_CHIPS, c_list, &c_count)) {
fprintf(stderr, "Failed to parse '-c %s'\n", optarg);
- else
- opt_error = false;
+ opt_error = true;
+ }
break;
case 't':
- if (!parse_list(optarg, MAX_THREADS, t_list, &t_count))
+ if (!parse_list(optarg, MAX_THREADS, t_list, &t_count)) {
fprintf(stderr, "Failed to parse '-t %s'\n", optarg);
- else
opt_error = false;
+ }
break;
case 'b':
- opt_error = false;
if (strcmp(optarg, "fsi") == 0) {
backend = FSI;
device_node = "p9w";
@@ -312,12 +309,13 @@ static bool parse_options(int argc, char *argv[])
backend = FAKE;
} else if (strcmp(optarg, "host") == 0) {
backend = HOST;
- } else
+ } else {
+ fprintf(stderr, "Invalid backend '%s'\n", optarg);
opt_error = true;
+ }
break;
case 'd':
- opt_error = false;
device_node = optarg;
break;
@@ -325,6 +323,8 @@ static bool parse_options(int argc, char *argv[])
errno = 0;
i2c_addr = strtoull(optarg, &endptr, 0);
opt_error = (errno || *endptr != '\0');
+ if (opt_error)
+ fprintf(stderr, "Invalid slave address '%s'\n", optarg);
break;
case 'D':
@@ -337,19 +337,18 @@ static bool parse_options(int argc, char *argv[])
break;
case 'E':
- opt_error = false;
pdbg_expert_mode = true;
break;
case '?':
case 'h':
opt_error = true;
+ print_usage(basename(argv[0]));
break;
}
} while (c != EOF && !opt_error);
if (opt_error) {
- print_usage(basename(argv[0]));
return false;
}
--
2.17.0
More information about the Pdbg
mailing list