aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-08-11 21:15:25 +0200
committerMax Kellermann <max@duempel.org>2014-08-11 21:48:25 +0200
commit486b5b6bfc61344c945d807b230c12a99c3c8edb (patch)
treec891f90667376fe5fdd7cc365987a65e442c0139
parent88a2f128ec9e72bb53a8d6646ce44d7053862f78 (diff)
downloadmpd-486b5b6bfc61344c945d807b230c12a99c3c8edb.tar.gz
mpd-486b5b6bfc61344c945d807b230c12a99c3c8edb.tar.xz
mpd-486b5b6bfc61344c945d807b230c12a99c3c8edb.zip
fs/io/TextFile: use AutoGunzipReader
Several MPD subsystems can now read gzipped files; for example, the database file can be gzipped.
-rw-r--r--src/fs/io/TextFile.cxx17
-rw-r--r--src/fs/io/TextFile.hxx7
2 files changed, 23 insertions, 1 deletions
diff --git a/src/fs/io/TextFile.cxx b/src/fs/io/TextFile.cxx
index 396d0f9cd..5b3bc4505 100644
--- a/src/fs/io/TextFile.cxx
+++ b/src/fs/io/TextFile.cxx
@@ -20,6 +20,7 @@
#include "config.h"
#include "TextFile.hxx"
#include "FileReader.hxx"
+#include "AutoGunzipReader.hxx"
#include "BufferedReader.hxx"
#include "fs/Path.hxx"
@@ -27,8 +28,19 @@
TextFile::TextFile(Path path_fs, Error &error)
:file_reader(new FileReader(path_fs, error)),
+#ifdef HAVE_ZLIB
+ gunzip_reader(file_reader->IsDefined()
+ ? new AutoGunzipReader(*file_reader)
+ : nullptr),
+#endif
buffered_reader(file_reader->IsDefined()
- ? new BufferedReader(*file_reader)
+ ? new BufferedReader(*
+#ifdef HAVE_ZLIB
+ gunzip_reader
+#else
+ file_reader
+#endif
+ )
: nullptr)
{
}
@@ -36,6 +48,9 @@ TextFile::TextFile(Path path_fs, Error &error)
TextFile::~TextFile()
{
delete buffered_reader;
+#ifdef HAVE_ZLIB
+ delete gunzip_reader;
+#endif
delete file_reader;
}
diff --git a/src/fs/io/TextFile.hxx b/src/fs/io/TextFile.hxx
index 33a1b8060..8bab808c7 100644
--- a/src/fs/io/TextFile.hxx
+++ b/src/fs/io/TextFile.hxx
@@ -20,6 +20,7 @@
#ifndef MPD_TEXT_FILE_HXX
#define MPD_TEXT_FILE_HXX
+#include "check.h"
#include "Compiler.h"
#include <stddef.h>
@@ -27,10 +28,16 @@
class Path;
class Error;
class FileReader;
+class AutoGunzipReader;
class BufferedReader;
class TextFile {
FileReader *const file_reader;
+
+#ifdef HAVE_ZLIB
+ AutoGunzipReader *const gunzip_reader;
+#endif
+
BufferedReader *const buffered_reader;
public: