* [RFC PATCH v2] plugins: Passed the parsed arguments directly to plugins
@ 2021-06-23 16:00 Mahmoud Mandour
0 siblings, 0 replies; only message in thread
From: Mahmoud Mandour @ 2021-06-23 16:00 UTC (permalink / raw)
To: qemu-devel; +Cc: Mahmoud Mandour, Alex Bennée
Arguments were passed to plugins in the following form:
-plugin path/to/plugin,arg="positional_arg=value",arg="second_arg"
This patch removes the need for "arg" so that the argument name itself
is now expected and passed directly to the plugin.
Now options can be passed in the following manner:
-plugin path/to/plugin,positional_arg=value,second_arg
Since short boolean arguments are deprecated, passing an argument that
takes no value will trigger a warning saying that the user should use a
full "arg_name=on" instead of just "arg_name". In either case, the
argument is passed to the plugin as only the name, omitting the "=on"
part.
Signed-off-by: Mahmoud Mandour <ma.mandourr@gmail.com>
---
plugins/loader.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/plugins/loader.c b/plugins/loader.c
index 05df40398d..7f32b8c8bd 100644
--- a/plugins/loader.c
+++ b/plugins/loader.c
@@ -94,6 +94,7 @@ static int plugin_add(void *opaque, const char *name, const char *value,
{
struct qemu_plugin_parse_arg *arg = opaque;
struct qemu_plugin_desc *p;
+ char *full_arg;
if (strcmp(name, "file") == 0) {
if (strcmp(value, "") == 0) {
@@ -107,7 +108,7 @@ static int plugin_add(void *opaque, const char *name, const char *value,
QTAILQ_INSERT_TAIL(arg->head, p, entry);
}
arg->curr = p;
- } else if (strcmp(name, "arg") == 0) {
+ } else {
if (arg->curr == NULL) {
error_setg(errp, "missing earlier '-plugin file=' option");
return 1;
@@ -115,9 +116,12 @@ static int plugin_add(void *opaque, const char *name, const char *value,
p = arg->curr;
p->argc++;
p->argv = g_realloc_n(p->argv, p->argc, sizeof(char *));
- p->argv[p->argc - 1] = g_strdup(value);
- } else {
- error_setg(errp, "-plugin: unexpected parameter '%s'; ignored", name);
+ if (strcmp(value, "on")) {
+ full_arg = g_strdup_printf("%s=%s", name, value);
+ } else {
+ full_arg = g_strdup(name);
+ }
+ p->argv[p->argc - 1] = full_arg;
}
return 0;
}
--
2.25.1
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2021-06-23 16:05 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-06-23 16:00 [RFC PATCH v2] plugins: Passed the parsed arguments directly to plugins Mahmoud Mandour
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).