aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-09-23 13:15:42 +0200
committerMax Kellermann <max@duempel.org>2008-09-23 13:15:42 +0200
commit72ad9955c8d5c9abe28d8d59301e159493087976 (patch)
tree1a40e0e4808ec3e207b4022a0204f94b357ece1b
parentca8a4cf4d050457f633edd13f0052e119629a9f6 (diff)
downloadmpd-72ad9955c8d5c9abe28d8d59301e159493087976.tar.gz
mpd-72ad9955c8d5c9abe28d8d59301e159493087976.tar.xz
mpd-72ad9955c8d5c9abe28d8d59301e159493087976.zip
lyrics: configurable global plugin directory
The lyrics library loads all plugins from the directory configured with "--with-lyrics-plugin-dir".
-rw-r--r--Makefile.am11
-rw-r--r--configure.ac9
-rw-r--r--src/lyrics.c23
3 files changed, 39 insertions, 4 deletions
diff --git a/Makefile.am b/Makefile.am
index 456cb532c..419bd097c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -18,3 +18,14 @@ doc_DATA = \
EXTRA_DIST = \
$(doc_DATA)
+
+#
+# lyrics plugins
+#
+
+lyrics_plugin_dir = @lyrics_plugin_dir@
+lyrics_plugins = hd.py leoslyrics.py lyricswiki.rb
+
+install-exec-local:
+ install -m 0755 -d $(lyrics_plugin_dir)
+ install -m 0755 $(addprefix lyrics/,$(lyrics_plugins)) $(lyrics_plugin_dir)
diff --git a/configure.ac b/configure.ac
index e04cea920..3fa9ca6b7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -256,6 +256,15 @@ fi
AC_MSG_RESULT([$lyrics_screen])
+AC_ARG_WITH([lyrics-plugin-dir],
+ AC_HELP_STRING([[--with-lyrics-plugin-dir[=DIRECTORY]]],
+ [Directory where lyrics plugins are stored @<:@default=PREFIX/lib/ncmpc/lyrics@:>@]),
+ [lyrics_plugin_dir=$withval],
+ [lyrics_plugin_dir="$prefix/lib/ncmpc/lyrics"])
+AC_DEFINE_UNQUOTED([LYRICS_PLUGIN_DIR], ["$lyrics_plugin_dir"],
+ [Directory to search for lyrics plugins])
+AC_SUBST(lyrics_plugin_dir)
+
dnl Default host
AC_MSG_CHECKING([for default MPD host])
AC_ARG_WITH([default-host],
diff --git a/src/lyrics.c b/src/lyrics.c
index 7a6124b69..e6cb5d2b3 100644
--- a/src/lyrics.c
+++ b/src/lyrics.c
@@ -18,6 +18,7 @@
#include "lyrics.h"
#include "gcc.h"
+#include "../config.h"
#include <assert.h>
#include <stdlib.h>
@@ -62,12 +63,26 @@ static int lyrics_register_plugin(const char *path0)
void lyrics_init(void)
{
+ GDir *dir;
+
plugins = g_ptr_array_new();
- /* XXX configurable paths */
- lyrics_register_plugin("./lyrics/hd.py");
- lyrics_register_plugin("./lyrics/leoslyrics.py");
- lyrics_register_plugin("./lyrics/lyricswiki.rb");
+ dir = g_dir_open(LYRICS_PLUGIN_DIR, 0, NULL);
+ if (dir != NULL) {
+ const char *name;
+ char path[sizeof(LYRICS_PLUGIN_DIR) + 128];
+
+ memcpy(path, LYRICS_PLUGIN_DIR, sizeof(LYRICS_PLUGIN_DIR) - 1);
+ path[sizeof(LYRICS_PLUGIN_DIR) - 1] = G_DIR_SEPARATOR;
+
+ while ((name = g_dir_read_name(dir)) != NULL) {
+ g_strlcpy(path + sizeof(LYRICS_PLUGIN_DIR), name,
+ sizeof(path) - sizeof(LYRICS_PLUGIN_DIR));
+ lyrics_register_plugin(path);
+ }
+
+ g_dir_close(dir);
+ }
}
void lyrics_deinit(void)