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 @@ -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: