[pulseaudio-commits] src/pulsecore src/utils
Tanu Kaskinen
tanuk at kemper.freedesktop.org
Mon Jun 4 09:03:57 PDT 2012
src/pulsecore/cli-command.c | 31 +++++++++++++++++++++++--------
src/utils/pacmd.c | 2 +-
2 files changed, 24 insertions(+), 9 deletions(-)
New commits:
commit 23432d39ee83ce773941a045b8e6f0527b1336fb
Author: poljar <poljarinho at gmail.com>
Date: Wed May 30 14:27:26 2012 +0200
pacmd: Add unloading modules by name.
pacmd should allow unloading modules by name.
The command_unload() function was expanded to handle names while
unloading modules.
If there are multiple modules with the same name all
of them will be unloaded.
BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=48289
diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c
index 23f79ee..fc9465b 100644
--- a/src/pulsecore/cli-command.c
+++ b/src/pulsecore/cli-command.c
@@ -34,6 +34,7 @@
#include <dirent.h>
#include <time.h>
#include <fcntl.h>
+#include <ctype.h>
#include <pulse/xmalloc.h>
#include <pulse/error.h>
@@ -152,7 +153,7 @@ static const struct command commands[] = {
{ "ls", pa_cli_command_info, NULL, 1 },
{ "list", pa_cli_command_info, NULL, 1 },
{ "load-module", pa_cli_command_load, "Load a module (args: name, arguments)", 3},
- { "unload-module", pa_cli_command_unload, "Unload a module (args: index)", 2},
+ { "unload-module", pa_cli_command_unload, "Unload a module (args: index|name)", 2},
{ "describe-module", pa_cli_command_describe, "Describe a module (arg: name)", 2},
{ "set-sink-volume", pa_cli_command_sink_volume, "Set the volume of a sink (args: index|name, volume)", 3},
{ "set-source-volume", pa_cli_command_source_volume, "Set the volume of a source (args: index|name, volume)", 3},
@@ -447,7 +448,7 @@ static int pa_cli_command_unload(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa
pa_module *m;
uint32_t idx;
const char *i;
- char *e;
+ pa_bool_t unloaded = FALSE;
pa_core_assert_ref(c);
pa_assert(t);
@@ -455,17 +456,31 @@ static int pa_cli_command_unload(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa
pa_assert(fail);
if (!(i = pa_tokenizer_get(t, 1))) {
- pa_strbuf_puts(buf, "You need to specify the module index.\n");
+ pa_strbuf_puts(buf, "You need to specify the module index or name.\n");
return -1;
}
- idx = (uint32_t) strtoul(i, &e, 10);
- if (*e || !(m = pa_idxset_get_by_index(c->modules, idx))) {
- pa_strbuf_puts(buf, "Invalid module index.\n");
- return -1;
+ if (pa_atou(i, &idx) >= 0) {
+ if (!(m = pa_idxset_get_by_index(c->modules, idx))) {
+ pa_strbuf_puts(buf, "Invalid module index.\n");
+ return -1;
+ }
+
+ pa_module_unload_request(m, FALSE);
+
+ } else {
+ PA_IDXSET_FOREACH(m, c->modules, idx)
+ if (pa_streq(i, m->name)) {
+ unloaded = TRUE;
+ pa_module_unload_request(m, FALSE);
+ }
+
+ if (unloaded == FALSE) {
+ pa_strbuf_printf(buf, "Module %s not loaded.\n", i);
+ return -1;
+ }
}
- pa_module_unload_request(m, FALSE);
return 0;
}
diff --git a/src/utils/pacmd.c b/src/utils/pacmd.c
index 7e1f33b..c7c693b 100644
--- a/src/utils/pacmd.c
+++ b/src/utils/pacmd.c
@@ -51,7 +51,7 @@ static void help(const char *argv0) {
printf("%s %s\n", argv0, "stat");
printf("%s %s\n", argv0, "info");
printf("%s %s %s\n", argv0, "load-module", _("NAME [ARGS ...]"));
- printf("%s %s %s\n", argv0, "unload-module", _("#N"));
+ printf("%s %s %s\n", argv0, "unload-module", _("NAME|#N"));
printf("%s %s %s\n", argv0, "describe-module", _("NAME"));
printf("%s %s %s\n", argv0, "set-(sink|source)-volume", _("NAME|#N VOLUME"));
printf("%s %s %s\n", argv0, "set-(sink-input|source-output)-volume", _("#N VOLUME"));
More information about the pulseaudio-commits
mailing list