[Pdbg] [PATCH 20/29] main: Remove oldstyle command parsing

Cyril Bur cyrilbur at gmail.com
Fri Feb 9 15:38:48 AEDT 2018


It should be noted here that 'GETVMEM' was declared but never actually
used so it has disapeared from the source entirely.

Signed-off-by: Cyril Bur <cyrilbur at gmail.com>
---
 src/main.c | 85 +-------------------------------------------------------------
 1 file changed, 1 insertion(+), 84 deletions(-)

diff --git a/src/main.c b/src/main.c
index 45a32ab..d4c169a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -47,23 +47,6 @@
 
 #define THREADS_PER_CORE	8
 
-enum command { GETCFAM = 1, PUTCFAM, GETSCOM, PUTSCOM,	\
-	       GETMEM, PUTMEM, GETGPR, GETNIA, GETSPR,	\
-	       GETMSR, PUTGPR, PUTNIA, PUTSPR, PUTMSR,	\
-	       STOP, START, THREADSTATUS, STEP, PROBE,	\
-	       GETVMEM, SRESET, HTM_STOP, HTM_ANALYSE,  \
-	       HTM_START, HTM_DUMP, HTM_RESET, HTM_GO,  \
-	       HTM_TRACE, HTM_STATUS };
-
-#define MAX_CMD_ARGS 3
-enum command cmd = 0;
-static int cmd_arg_count = 0;
-static int cmd_min_arg_count = 0;
-static int cmd_max_arg_count = 0;
-
-/* At the moment all commands only take some kind of number */
-static uint64_t cmd_args[MAX_CMD_ARGS];
-
 enum backend { FSI, I2C, KERNEL, FAKE, HOST };
 static enum backend backend = KERNEL;
 
@@ -169,24 +152,6 @@ static void print_usage(char *pname)
 	printf("\thtm_analyse\n");
 }
 
-enum command parse_cmd(char *optarg)
-{
-	cmd_max_arg_count = 0;
-
-	if (strcmp(optarg, "getvmem") == 0) {
-		cmd = GETVMEM;
-		cmd_min_arg_count = 1;
-	} else if (strcmp(optarg, "probe") == 0) {
-		cmd = PROBE;
-		cmd_min_arg_count = 0;
-	}
-
-	if (cmd_min_arg_count && !cmd_max_arg_count)
-		cmd_max_arg_count = cmd_min_arg_count;
-
-	return cmd;
-}
-
 static bool parse_options(int argc, char *argv[])
 {
 	int c;
@@ -309,43 +274,6 @@ static bool parse_options(int argc, char *argv[])
 	return opt_error;
 }
 
-static bool parse_command(int argc, char *argv[])
-{
-	int cmd_arg_idx = 0, i = optind;
-	bool opt_error = true;
-	char *endptr;
-
-	/*
-	 * In order to make the series changing this code cleaner,
-	 * this is going to happen gradually.
-	 * Eventually parse_command() will be deleted but so that this
-	 * can be done over multiple patches neatly remove the error
-	 * check here and print the usage later.
-	 * We'll just have a lie a bit for now.
-	 */
-	if (i >= argc || !parse_cmd(argv[i]))
-		return false;
-
-	i++;
-	while (i < argc && !opt_error) {
-		if (cmd_arg_idx >= MAX_CMD_ARGS ||
-			 (cmd && cmd_arg_idx >= cmd_max_arg_count))
-			opt_error = true;
-		else {
-			errno = 0;
-			cmd_args[cmd_arg_idx++] = strtoull(argv[i], &endptr, 0);
-			opt_error = (errno || *endptr != '\0');
-		}
-		i++;
-	}
-	opt_error |= cmd_arg_idx < cmd_min_arg_count;
-	if (opt_error)
-		print_usage(argv[0]);
-
-	cmd_arg_count = cmd_arg_idx;
-	return opt_error;
-}
-
 /* Returns the sum of return codes. This can be used to count how many targets the callback was run on. */
 int for_each_child_target(char *class, struct pdbg_target *parent,
 				 int (*cb)(struct pdbg_target *, uint32_t, uint64_t *, uint64_t *),
@@ -552,7 +480,6 @@ static int handle_probe(int optind, int argc, char *argv[])
 
 int main(int argc, char *argv[])
 {
-	bool found = true;
 	int i, rc = 0;
 
 	if (parse_options(argc, argv))
@@ -569,24 +496,14 @@ int main(int argc, char *argv[])
 
 	pdbg_target_probe();
 
-	if (parse_command(argc, argv))
-		return -1;
-
-	switch(cmd) {
-	default:
-		found = false;
-		break;
-	}
-
 	for (i = 0; i < ARRAY_SIZE(actions); i++) {
 		if (strcmp(argv[optind], actions[i].name) == 0) {
-			found = true;
 			rc = actions[i].fn(optind, argc, argv);
 			break;
 		}
 	}
 
-	if (!found) {
+	if (i == ARRAY_SIZE(actions)) {
 		PR_ERROR("Unsupported command: %s\n", argv[optind]);
 		print_usage(argv[0]);
 		return 1;
-- 
2.16.1



More information about the Pdbg mailing list