From 48da345e79a0b690aa7d6d59ba8b50875988243b Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 12 Jun 2012 20:52:04 +0200 Subject: cmdline: don't initalise archive plugins for --version Dump all archive plugins, even those that fail to initialise. --- src/archive_list.c | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/archive_list.c') diff --git a/src/archive_list.c b/src/archive_list.c index 2656726b5..686498117 100644 --- a/src/archive_list.c +++ b/src/archive_list.c @@ -80,8 +80,6 @@ void archive_plugin_print_all_suffixes(FILE * fp) for (unsigned i = 0; archive_plugins[i] != NULL; ++i) { const struct archive_plugin *plugin = archive_plugins[i]; - if (!archive_plugins_enabled[i]) - continue; suffixes = plugin->suffixes; while (suffixes && *suffixes) { -- cgit v1.2.3 From 9ebbdb9b0b288164ce956ba34bc0c38f94868110 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 12 Jun 2012 20:50:51 +0200 Subject: archive_list: add _for_each() macros --- src/archive_list.c | 42 +++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 25 deletions(-) (limited to 'src/archive_list.c') diff --git a/src/archive_list.c b/src/archive_list.c index 686498117..39eaf4d69 100644 --- a/src/archive_list.c +++ b/src/archive_list.c @@ -28,7 +28,7 @@ #include #include -static const struct archive_plugin *const archive_plugins[] = { +const struct archive_plugin *const archive_plugins[] = { #ifdef HAVE_BZ2 &bz2_archive_plugin, #endif @@ -44,44 +44,38 @@ static const struct archive_plugin *const archive_plugins[] = { /** which plugins have been initialized successfully? */ static bool archive_plugins_enabled[G_N_ELEMENTS(archive_plugins) - 1]; +#define archive_plugins_for_each_enabled(plugin) \ + archive_plugins_for_each(plugin) \ + if (archive_plugins_enabled[archive_plugin_iterator - archive_plugins]) + const struct archive_plugin * archive_plugin_from_suffix(const char *suffix) { if (suffix == NULL) return NULL; - for (unsigned i = 0; archive_plugins[i] != NULL; ++i) { - const struct archive_plugin *plugin = archive_plugins[i]; - if (archive_plugins_enabled[i] && - plugin->suffixes != NULL && - string_array_contains(plugin->suffixes, suffix)) { - ++i; + archive_plugins_for_each_enabled(plugin) + if (plugin->suffixes != NULL && + string_array_contains(plugin->suffixes, suffix)) return plugin; - } - } + return NULL; } const struct archive_plugin * archive_plugin_from_name(const char *name) { - for (unsigned i = 0; archive_plugins[i] != NULL; ++i) { - const struct archive_plugin *plugin = archive_plugins[i]; - if (archive_plugins_enabled[i] && - strcmp(plugin->name, name) == 0) + archive_plugins_for_each_enabled(plugin) + if (strcmp(plugin->name, name) == 0) return plugin; - } + return NULL; } void archive_plugin_print_all_suffixes(FILE * fp) { - const char *const*suffixes; - - for (unsigned i = 0; archive_plugins[i] != NULL; ++i) { - const struct archive_plugin *plugin = archive_plugins[i]; - - suffixes = plugin->suffixes; + archive_plugins_for_each(plugin) { + const char *const*suffixes = plugin->suffixes; while (suffixes && *suffixes) { fprintf(fp, "%s ", *suffixes); suffixes++; @@ -102,10 +96,8 @@ void archive_plugin_init_all(void) void archive_plugin_deinit_all(void) { - for (unsigned i = 0; archive_plugins[i] != NULL; ++i) { - const struct archive_plugin *plugin = archive_plugins[i]; - if (archive_plugins_enabled[i] && plugin->finish != NULL) - archive_plugins[i]->finish(); - } + archive_plugins_for_each_enabled(plugin) + if (plugin->finish != NULL) + plugin->finish(); } -- cgit v1.2.3 From ae70875f45c6d7f1bb0f703179035709d909978a Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 12 Jun 2012 22:29:04 +0200 Subject: cmdline: consistent plugin listings --- src/archive_list.c | 13 ------------- 1 file changed, 13 deletions(-) (limited to 'src/archive_list.c') diff --git a/src/archive_list.c b/src/archive_list.c index 39eaf4d69..6c1079c1a 100644 --- a/src/archive_list.c +++ b/src/archive_list.c @@ -72,19 +72,6 @@ archive_plugin_from_name(const char *name) return NULL; } -void archive_plugin_print_all_suffixes(FILE * fp) -{ - archive_plugins_for_each(plugin) { - const char *const*suffixes = plugin->suffixes; - while (suffixes && *suffixes) { - fprintf(fp, "%s ", *suffixes); - suffixes++; - } - } - fprintf(fp, "\n"); - fflush(fp); -} - void archive_plugin_init_all(void) { for (unsigned i = 0; archive_plugins[i] != NULL; ++i) { -- cgit v1.2.3