conf: add a "database" block
The new block overrides the "db_file" setting, and allows configuring any database plugin.
This commit is contained in:
parent
dc2fa246a9
commit
ca9795c30a
119
doc/user.xml
119
doc/user.xml
@ -164,6 +164,53 @@ systemctl start mpd.socket</programlisting>
|
|||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<title>Configuring database plugins</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
If a music directory is configured, one database plugin is
|
||||||
|
used. To configure this plugin, add a
|
||||||
|
<varname>database</varname> block to
|
||||||
|
<filename>mpd.conf</filename>:
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<programlisting>database {
|
||||||
|
plugin "simple"
|
||||||
|
path "/var/lib/mpd/db"
|
||||||
|
}
|
||||||
|
</programlisting>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The following table lists the <varname>database</varname>
|
||||||
|
options valid for all plugins:
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<informaltable>
|
||||||
|
<tgroup cols="2">
|
||||||
|
<thead>
|
||||||
|
<row>
|
||||||
|
<entry>
|
||||||
|
Name
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
Description
|
||||||
|
</entry>
|
||||||
|
</row>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<row>
|
||||||
|
<entry>
|
||||||
|
<varname>plugin</varname>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
The name of the plugin.
|
||||||
|
</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</informaltable>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<title>Configuring input plugins</title>
|
<title>Configuring input plugins</title>
|
||||||
|
|
||||||
@ -617,6 +664,78 @@ systemctl start mpd.socket</programlisting>
|
|||||||
<chapter>
|
<chapter>
|
||||||
<title>Plugin reference</title>
|
<title>Plugin reference</title>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<title>Database plugins</title>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<title><varname>simple</varname></title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The default plugin. Stores a copy of the database in
|
||||||
|
memory. A file is used for permanent storage.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<informaltable>
|
||||||
|
<tgroup cols="2">
|
||||||
|
<thead>
|
||||||
|
<row>
|
||||||
|
<entry>Setting</entry>
|
||||||
|
<entry>Description</entry>
|
||||||
|
</row>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<row>
|
||||||
|
<entry>
|
||||||
|
<varname>path</varname>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
The path of the database file.
|
||||||
|
</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</informaltable>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<title><varname>proxy</varname></title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Provides access to the database of another MPD instance
|
||||||
|
using <filename>libmpdclient</filename>. Experimental!
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<informaltable>
|
||||||
|
<tgroup cols="2">
|
||||||
|
<thead>
|
||||||
|
<row>
|
||||||
|
<entry>Setting</entry>
|
||||||
|
<entry>Description</entry>
|
||||||
|
</row>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<row>
|
||||||
|
<entry>
|
||||||
|
<varname>host</varname>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
The host name of the "master" MPD instance.
|
||||||
|
</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>
|
||||||
|
<varname>port</varname>
|
||||||
|
</entry>
|
||||||
|
<entry>
|
||||||
|
The port number of the "master" MPD instance.
|
||||||
|
</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</informaltable>
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<title>Input plugins</title>
|
<title>Input plugins</title>
|
||||||
|
|
||||||
|
@ -102,6 +102,7 @@ static struct config_entry config_entries[] = {
|
|||||||
{ .name = CONF_DESPOTIFY_PASSWORD, false, false},
|
{ .name = CONF_DESPOTIFY_PASSWORD, false, false},
|
||||||
{ .name = CONF_DESPOTIFY_HIGH_BITRATE, false, false },
|
{ .name = CONF_DESPOTIFY_HIGH_BITRATE, false, false },
|
||||||
{ .name = "filter", true, true },
|
{ .name = "filter", true, true },
|
||||||
|
{ .name = "database", false, true },
|
||||||
};
|
};
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
|
24
src/main.c
24
src/main.c
@ -154,35 +154,47 @@ glue_mapper_init(GError **error_r)
|
|||||||
static bool
|
static bool
|
||||||
glue_db_init_and_load(void)
|
glue_db_init_and_load(void)
|
||||||
{
|
{
|
||||||
|
const struct config_param *param = config_get_param("database");
|
||||||
const struct config_param *path = config_get_param(CONF_DB_FILE);
|
const struct config_param *path = config_get_param(CONF_DB_FILE);
|
||||||
|
|
||||||
|
if (param != NULL && path != NULL)
|
||||||
|
g_message("Found both 'database' and '" CONF_DB_FILE
|
||||||
|
"' setting - ignoring the latter");
|
||||||
|
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
bool ret;
|
bool ret;
|
||||||
|
|
||||||
if (!mapper_has_music_directory()) {
|
if (!mapper_has_music_directory()) {
|
||||||
|
if (param != NULL)
|
||||||
|
g_message("Found database setting without "
|
||||||
|
CONF_MUSIC_DIR " - disabling database");
|
||||||
if (path != NULL)
|
if (path != NULL)
|
||||||
g_message("Found " CONF_DB_FILE " setting without "
|
g_message("Found " CONF_DB_FILE " setting without "
|
||||||
CONF_MUSIC_DIR " - disabling database");
|
CONF_MUSIC_DIR " - disabling database");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (path == NULL)
|
struct config_param *allocated = NULL;
|
||||||
MPD_ERROR(CONF_DB_FILE " setting missing");
|
|
||||||
|
|
||||||
struct config_param *param = config_new_param("database", path->line);
|
if (param == NULL && path != NULL) {
|
||||||
config_add_block_param(param, "path", path->value, path->line);
|
allocated = config_new_param("database", path->line);
|
||||||
|
config_add_block_param(allocated, "path",
|
||||||
|
path->value, path->line);
|
||||||
|
param = allocated;
|
||||||
|
}
|
||||||
|
|
||||||
if (!db_init(param, &error))
|
if (!db_init(param, &error))
|
||||||
MPD_ERROR("%s", error->message);
|
MPD_ERROR("%s", error->message);
|
||||||
|
|
||||||
config_param_free(param);
|
if (allocated != NULL)
|
||||||
|
config_param_free(allocated);
|
||||||
|
|
||||||
ret = db_load(&error);
|
ret = db_load(&error);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
MPD_ERROR("%s", error->message);
|
MPD_ERROR("%s", error->message);
|
||||||
|
|
||||||
/* run database update after daemonization? */
|
/* run database update after daemonization? */
|
||||||
return db_exists();
|
return !db_is_simple() || db_exists();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user