From 0fe0425dee555027c94a39ca0bca5bac947f4702 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 27 Dec 2008 14:33:41 +0100 Subject: [PATCH] disable archive API without plugins When there are no archive plugins, we do not need the archive API at all. Drop all its overhead. --- configure.ac | 10 ++++++++++ src/Makefile.am | 13 +++++++++---- src/input_stream.c | 5 +++++ src/ls.c | 2 ++ src/main.c | 11 ++++++++++- src/update.c | 7 +++++++ 6 files changed, 43 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index 9bfccafaf..16189a07a 100644 --- a/configure.ac +++ b/configure.ac @@ -217,6 +217,16 @@ if test x$enable_iso = xyes; then AC_DEFINE(HAVE_ISO, 1, [Define to have iso archive support]) fi +dnl archive API +if test x$enable_bz2 = xyes || test x$enable_zip = xyes || test x$enable_iso = xyes; then + enable_archive=yes + AC_DEFINE(ENABLE_ARCHIVE, 1, [The archive API is available]) +else + enable_archive=no +fi + +AM_CONDITIONAL(ENABLE_ARCHIVE, test x$enable_archive = xyes) + dnl dnl decoder plugins diff --git a/src/Makefile.am b/src/Makefile.am index 38ba8b223..b327a8f93 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -158,10 +158,7 @@ mpd_SOURCES = \ volume.c \ locate.c \ stored_playlist.c \ - timer.c \ - archive_api.c \ - archive_list.c \ - input_archive.c + timer.c if HAVE_LIBSAMPLERATE mpd_SOURCES += pcm_resample_libsamplerate.c @@ -187,6 +184,14 @@ if HAVE_ISO mpd_SOURCES += archive/iso_plugin.c endif +if ENABLE_ARCHIVE +mpd_SOURCES += \ + archive_api.c \ + archive_list.c \ + input_archive.c +endif + + # decoder plugins if HAVE_MAD diff --git a/src/input_stream.c b/src/input_stream.c index 45b7ec5e9..3df8fe006 100644 --- a/src/input_stream.c +++ b/src/input_stream.c @@ -20,7 +20,10 @@ #include "config.h" #include "input_file.h" + +#ifdef ENABLE_ARCHIVE #include "input_archive.h" +#endif #ifdef HAVE_CURL #include "input_curl.h" @@ -31,7 +34,9 @@ static const struct input_plugin *const input_plugins[] = { &input_plugin_file, +#ifdef ENABLE_ARCHIVE &input_plugin_archive, +#endif #ifdef HAVE_CURL &input_plugin_curl, #endif diff --git a/src/ls.c b/src/ls.c index f0f403f44..22b2fc9fc 100644 --- a/src/ls.c +++ b/src/ls.c @@ -84,6 +84,7 @@ hasMusicSuffix(const char *utf8file, unsigned int next) return ret; } +#ifdef ENABLE_ARCHIVE const struct archive_plugin * get_archive_by_suffix(const char *utf8file) { @@ -98,3 +99,4 @@ get_archive_by_suffix(const char *utf8file) } return ret; } +#endif diff --git a/src/main.c b/src/main.c index 199d76471..79c9dfa08 100644 --- a/src/main.c +++ b/src/main.c @@ -40,7 +40,6 @@ #include "permission.h" #include "replay_gain.h" #include "decoder_list.h" -#include "archive_list.h" #include "audioOutput.h" #include "input_stream.h" #include "state_file.h" @@ -52,6 +51,10 @@ #include "main_notify.h" #include "os_compat.h" +#ifdef ENABLE_ARCHIVE +#include "archive_list.h" +#endif + #include #ifdef HAVE_LOCALE @@ -147,10 +150,12 @@ static void version(void) "Supported outputs:\n"); printAllOutputPluginTypes(stdout); +#ifdef ENABLE_ARCHIVE puts("\n" "Supported archives:\n"); archive_plugin_init_all(); archive_plugin_print_all_suffixes(stdout); +#endif } static void parseOptions(int argc, char **argv, Options * options) @@ -421,7 +426,9 @@ int main(int argc, char *argv[]) mapper_init(); initPermissions(); initPlaylist(); +#ifdef ENABLE_ARCHIVE archive_plugin_init_all(); +#endif decoder_plugin_init_all(); update_global_init(); @@ -507,7 +514,9 @@ int main(int argc, char *argv[]) command_finish(); update_global_finish(); decoder_plugin_deinit_all(); +#ifdef ENABLE_ARCHIVE archive_plugin_deinit_all(); +#endif music_pipe_free(); cleanUpPidFile(); finishConf(); diff --git a/src/update.c b/src/update.c index c7ad71c7b..307d198f3 100644 --- a/src/update.c +++ b/src/update.c @@ -276,6 +276,7 @@ make_subdir(struct directory *parent, const char *name) return directory; } +#ifdef ENABLE_ARCHIVE static void update_archive_tree(struct directory *directory, char *name) { @@ -308,6 +309,7 @@ update_archive_tree(struct directory *directory, char *name) } } } +#endif static bool updateDirectory(struct directory *directory, const struct stat *st); @@ -316,7 +318,10 @@ static void updateInDirectory(struct directory *directory, const char *name, const struct stat *st) { +#ifdef ENABLE_ARCHIVE const struct archive_plugin *archive; +#endif + assert(strchr(name, '/') == NULL); if (S_ISREG(st->st_mode) && hasMusicSuffix(name, 0)) { @@ -351,6 +356,7 @@ updateInDirectory(struct directory *directory, ret = updateDirectory(subdir, st); if (!ret) delete_directory(subdir); +#ifdef ENABLE_ARCHIVE } else if (S_ISREG(st->st_mode) && (archive = get_archive_by_suffix(name))) { struct archive_file *archfile; char pathname[MPD_PATH_MAX]; @@ -380,6 +386,7 @@ updateInDirectory(struct directory *directory, } else { g_warning("unable to open archive %s\n", pathname); } +#endif } else { g_debug("update: %s is not a directory, archive or music\n", name); }