diff options
author | Max Kellermann <max@duempel.org> | 2014-08-11 21:15:25 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-08-11 21:48:25 +0200 |
commit | 486b5b6bfc61344c945d807b230c12a99c3c8edb (patch) | |
tree | c891f90667376fe5fdd7cc365987a65e442c0139 /src/fs/io | |
parent | 88a2f128ec9e72bb53a8d6646ce44d7053862f78 (diff) | |
download | mpd-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.
Diffstat (limited to 'src/fs/io')
-rw-r--r-- | src/fs/io/TextFile.cxx | 17 | ||||
-rw-r--r-- | src/fs/io/TextFile.hxx | 7 |
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: |