[Accel-config] [PATCH v1 2/5] accel-config: Make command handler return status instead of exiting out

ramesh.thomas at intel.com
Newsgroups dev.linux.lists.accel-config
Message-ID <[email protected]>
From: Ramesh Thomas <ramesh.thomas(a)intel.com>

Make main_handle_internal_command() return a value indicating status
instead of exiting out directly. This will allow post processing after
handling commands.

Signed-off-by: Ramesh Thomas <ramesh.thomas(a)intel.com>
---
 accfg/accel-config.c | 9 ++++++---
 util/main.c          | 8 ++++++--
 util/main.h          | 2 +-
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/accfg/accel-config.c b/accfg/accel-config.c
index f963fc7..b096a5c 100644
--- a/accfg/accel-config.c
+++ b/accfg/accel-config.c
@@ -98,9 +98,12 @@ int main(int argc, const char **argv)
 	rc = accfg_new(&ctx);
 	if (rc)
 		return 0;
-	main_handle_internal_command(argc, argv, ctx, commands,
+	rc = main_handle_internal_command(argc, argv, ctx, commands,
 				     ARRAY_SIZE(commands));
 	accfg_unref(ctx);
-	fprintf(stderr, "Unknown command: '%s'\n", argv[0]);
-	return -EINVAL;
+
+	if (!rc)
+		return EXIT_SUCCESS;
+
+	return EXIT_FAILURE;
 }
diff --git a/util/main.c b/util/main.c
index b95d468..2bf7796 100644
--- a/util/main.c
+++ b/util/main.c
@@ -81,7 +81,7 @@ int main_handle_options(const char ***argv, int *argc, const char *usage_msg,
 	return handled;
 }
 
-void main_handle_internal_command(int argc, const char **argv, void *ctx,
+int main_handle_internal_command(int argc, const char **argv, void *ctx,
 		struct cmd_struct *cmds, int num_cmds)
 {
 	const char *cmd = argv[0];
@@ -97,6 +97,10 @@ void main_handle_internal_command(int argc, const char **argv, void *ctx,
 		struct cmd_struct *p = cmds+i;
 		if (strcmp(p->cmd, cmd))
 			continue;
-		exit(p->fn(argc, argv, ctx));
+		return p->fn(argc, argv, ctx);
 	}
+
+	fprintf(stderr, "Unknown command: '%s'\n", argv[0]);
+
+	return -EINVAL;
 }
diff --git a/util/main.h b/util/main.h
index bcfe9f3..cccba7a 100644
--- a/util/main.h
+++ b/util/main.h
@@ -19,7 +19,7 @@
 struct cmd_struct;
 int main_handle_options(const char ***argv, int *argc, const char *usage_msg,
 		struct cmd_struct *cmds, int num_cmds);
-void main_handle_internal_command(int argc, const char **argv, void *ctx,
+int main_handle_internal_command(int argc, const char **argv, void *ctx,
 		struct cmd_struct *cmds, int num_cmds);
 int help_show_man_page(const char *cmd, const char *util_name,
 		const char *viewer);
-- 
2.26.2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.