[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