diff options
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | doc/protocol.xml | 41 | ||||
-rw-r--r-- | src/command.c | 19 |
3 files changed, 61 insertions, 0 deletions
@@ -3,6 +3,7 @@ ver 0.17 (2011/??/??) - support client-to-client communication - "update" and "rescan" need only "CONTROL" permission - new command "seekcur" for simpler seeking within current song + - new command "config" dumps location of music directory - add range parameter to command "load" - print extra "playlist" object for embedded CUE sheets * input: diff --git a/doc/protocol.xml b/doc/protocol.xml index dbc60f40d..5b8857ee0 100644 --- a/doc/protocol.xml +++ b/doc/protocol.xml @@ -1845,6 +1845,47 @@ OK <title>Reflection</title> <variablelist> + <varlistentry id="command_config"> + <term> + <cmdsynopsis> + <command>config</command> + </cmdsynopsis> + </term> + <listitem> + <para> + Dumps configuration values that may be interesting for + the client. This command is only permitted to "local" + clients (connected via UNIX domain socket). + </para> + <para> + The following response attributes are available: + </para> + <informaltable> + <tgroup cols="2"> + <thead> + <row> + <entry> + Name + </entry> + <entry> + Description + </entry> + </row> + </thead> + <tbody> + <row> + <entry> + <varname>music_directory</varname> + </entry> + <entry> + The absolute path of the music directory. + </entry> + </row> + </tbody> + </tgroup> + </informaltable> + </listitem> + </varlistentry> <varlistentry id="command_commands"> <term> <cmdsynopsis> diff --git a/src/command.c b/src/command.c index 4479b803e..61f0fdd0c 100644 --- a/src/command.c +++ b/src/command.c @@ -55,6 +55,7 @@ #include "path.h" #include "replay_gain_config.h" #include "idle.h" +#include "mapper.h" #ifdef ENABLE_SQLITE #include "sticker.h" @@ -1697,6 +1698,23 @@ handle_not_commands(struct client *client, G_GNUC_UNUSED int argc, G_GNUC_UNUSED char *argv[]); static enum command_return +handle_config(struct client *client, + G_GNUC_UNUSED int argc, G_GNUC_UNUSED char *argv[]) +{ + if (!client_is_local(client)) { + command_error(client, ACK_ERROR_PERMISSION, + "Command only permitted to local clients"); + return COMMAND_RETURN_ERROR; + } + + const char *path = mapper_get_music_directory(); + if (path != NULL) + client_printf(client, "music_directory: %s\n", path); + + return COMMAND_RETURN_OK; +} + +static enum command_return handle_playlistclear(struct client *client, G_GNUC_UNUSED int argc, char *argv[]) { GError *error = NULL; @@ -2139,6 +2157,7 @@ static const struct command commands[] = { { "clearerror", PERMISSION_CONTROL, 0, 0, handle_clearerror }, { "close", PERMISSION_NONE, -1, -1, handle_close }, { "commands", PERMISSION_NONE, 0, 0, handle_commands }, + { "config", PERMISSION_ADMIN, 0, 0, handle_config }, { "consume", PERMISSION_CONTROL, 1, 1, handle_consume }, { "count", PERMISSION_READ, 2, -1, handle_count }, { "crossfade", PERMISSION_CONTROL, 1, 1, handle_crossfade }, |