From f9c4d88b12f681ac2eed8fedeb009975067a6f4b Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 3 Dec 2021 14:13:17 +0100 Subject: [PATCH] fs/io/TextFile: add interface LineReader --- src/fs/io/LineReader.hxx | 33 +++++++++++++++++++++++++++++++++ src/fs/io/TextFile.hxx | 13 ++++--------- 2 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 src/fs/io/LineReader.hxx diff --git a/src/fs/io/LineReader.hxx b/src/fs/io/LineReader.hxx new file mode 100644 index 000000000..f82bf4cdd --- /dev/null +++ b/src/fs/io/LineReader.hxx @@ -0,0 +1,33 @@ +/* + * Copyright 2003-2021 The Music Player Daemon Project + * http://www.musicpd.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#pragma once + +class LineReader +{ +public: + /** + * Reads a line from the input file, and strips trailing + * space. There is a reasonable maximum line length, only to + * prevent denial of service. + * + * @return a pointer to the line, or nullptr on end-of-file + */ + virtual char *ReadLine() = 0; +}; diff --git a/src/fs/io/TextFile.hxx b/src/fs/io/TextFile.hxx index 99d61feaa..06b67f4bf 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 "LineReader.hxx" #include "config.h" #include @@ -29,7 +30,7 @@ class FileReader; class AutoGunzipReader; class BufferedReader; -class TextFile { +class TextFile final : public LineReader { const std::unique_ptr file_reader; #ifdef ENABLE_ZLIB @@ -45,14 +46,8 @@ public: ~TextFile() noexcept; - /** - * Reads a line from the input file, and strips trailing - * space. There is a reasonable maximum line length, only to - * prevent denial of service. - * - * @return a pointer to the line, or nullptr on end-of-file - */ - char *ReadLine(); + /* virtual methods from class LineReader */ + char *ReadLine() override; }; #endif