summaryrefslogtreecommitdiff
path: root/test/visit_archive.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2017-01-03 12:22:14 +0100
committerMax Kellermann <max@musicpd.org>2017-01-03 12:24:05 +0100
commitd2046de1932039643493a6de3bec79c17406fe0a (patch)
treeccceda6219b4bcac78e0af7ea003d0398d3b2a39 /test/visit_archive.cxx
parent4397fe3a13add8517a2d35702c8d56a79f3af282 (diff)
test/run_input, ...: RAII-style global initialization
Diffstat (limited to 'test/visit_archive.cxx')
-rw-r--r--test/visit_archive.cxx39
1 files changed, 23 insertions, 16 deletions
diff --git a/test/visit_archive.cxx b/test/visit_archive.cxx
index 28d5dda35..dd5b2d3b3 100644
--- a/test/visit_archive.cxx
+++ b/test/visit_archive.cxx
@@ -35,8 +35,29 @@
#include <stdlib.h>
#include <stdio.h>
+class GlobalInit {
+ const ScopeIOThread io_thread;
+
+public:
+ GlobalInit() {
+ config_global_init();
+#ifdef ENABLE_ARCHIVE
+ archive_plugin_init_all();
+#endif
+ input_stream_global_init();
+ }
+
+ ~GlobalInit() {
+ input_stream_global_finish();
+#ifdef ENABLE_ARCHIVE
+ archive_plugin_deinit_all();
+#endif
+ config_global_finish();
+ }
+};
+
class MyArchiveVisitor final : public ArchiveVisitor {
- public:
+public:
virtual void VisitArchiveEntry(const char *path_utf8) override {
printf("%s\n", path_utf8);
}
@@ -55,13 +76,7 @@ try {
/* initialize MPD */
- config_global_init();
-
- const ScopeIOThread io_thread;
-
- archive_plugin_init_all();
-
- input_stream_global_init();
+ const GlobalInit init;
/* open the archive and dump it */
@@ -79,14 +94,6 @@ try {
file->Visit(visitor);
file->Close();
- /* deinitialize everything */
-
- input_stream_global_finish();
-
- archive_plugin_deinit_all();
-
- config_global_finish();
-
return result;
} catch (const std::exception &e) {
LogError(e);