[pulseaudio-discuss] [PATCH 3/5] cli: Add function to check state for .if CLI meta commands
Peter Meerwald
pmeerw at pmeerw.net
Mon May 4 15:13:44 PDT 2015
Signed-off-by: Peter Meerwald <pmeerw at pmeerw.net>
---
src/pulsecore/cli-command.c | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c
index 9a73605..6a38dd9 100644
--- a/src/pulsecore/cli-command.c
+++ b/src/pulsecore/cli-command.c
@@ -1992,6 +1992,17 @@ static int pa_cli_command_dump_volumes(pa_core *c, pa_tokenizer *t, pa_strbuf *b
return 0;
}
+static bool pa_cli_check_ifstate(pa_strbuf *buf, int *ifstate, const char *cs) {
+ if (!ifstate) {
+ pa_strbuf_printf(buf, "Meta command %s is not valid in this context\n", cs);
+ return false;
+ } else if (*ifstate != IFSTATE_NONE) {
+ pa_strbuf_printf(buf, "Nested %s commands not supported\n", cs);
+ return false;
+ } else
+ return true;
+}
+
int pa_cli_command_execute_line_stateful(pa_core *c, const char *s, pa_strbuf *buf, bool *fail, int *ifstate) {
const char *cs;
@@ -2101,13 +2112,9 @@ int pa_cli_command_execute_line_stateful(pa_core *c, const char *s, pa_strbuf *b
}
}
} else if (l == sizeof(META_IFEXISTS)-1 && !strncmp(cs, META_IFEXISTS, l)) {
- if (!ifstate) {
- pa_strbuf_printf(buf, "Meta command %s is not valid in this context\n", cs);
+ if (!pa_cli_check_ifstate(buf, ifstate, cs))
return -1;
- } else if (*ifstate != IFSTATE_NONE) {
- pa_strbuf_printf(buf, "Nested %s commands not supported\n", cs);
- return -1;
- } else {
+ else {
const char *filename = cs+l+strspn(cs+l, whitespace);
*ifstate = pa_module_exists(filename) ? IFSTATE_TRUE : IFSTATE_FALSE;
}
--
1.9.1
More information about the pulseaudio-discuss
mailing list