diff options
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | src/input/LocalOpen.cxx | 48 | ||||
-rw-r--r-- | src/input/LocalOpen.hxx | 38 |
3 files changed, 87 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am index 0fa7a4692..799444d3c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1106,6 +1106,7 @@ libinput_a_SOURCES = \ src/input/Init.cxx src/input/Init.hxx \ src/input/Registry.cxx src/input/Registry.hxx \ src/input/Open.cxx \ + src/input/LocalOpen.cxx src/input/LocalOpen.hxx \ src/input/Offset.hxx \ src/input/InputStream.cxx src/input/InputStream.hxx \ src/input/InputPlugin.hxx \ diff --git a/src/input/LocalOpen.cxx b/src/input/LocalOpen.cxx new file mode 100644 index 000000000..a1ac2b856 --- /dev/null +++ b/src/input/LocalOpen.cxx @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2003-2014 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. + */ + +#include "config.h" +#include "LocalOpen.hxx" +#include "InputStream.hxx" +#include "plugins/FileInputPlugin.hxx" + +#ifdef ENABLE_ARCHIVE +#include "plugins/ArchiveInputPlugin.hxx" +#endif + +#include "fs/Path.hxx" +#include "util/Error.hxx" + +#include <assert.h> + +InputStream * +OpenLocalInputStream(Path path, Mutex &mutex, Cond &cond, Error &error) +{ + assert(!error.IsDefined()); + + InputStream *is = OpenFileInputStream(path, mutex, cond, error); +#ifdef ENABLE_ARCHIVE + if (is == nullptr && !error.IsDefined()) + is = OpenArchiveInputStream(path, mutex, cond, error); +#endif + + assert(is == nullptr || is->IsReady()); + + return is; +} diff --git a/src/input/LocalOpen.hxx b/src/input/LocalOpen.hxx new file mode 100644 index 000000000..cf1b2b632 --- /dev/null +++ b/src/input/LocalOpen.hxx @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2003-2014 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. + */ + +#ifndef MPD_INPUT_LOCAL_OPEN_HXX +#define MPD_INPUT_LOCAL_OPEN_HXX + +#include "check.h" + +class InputStream; +class Path; +class Mutex; +class Cond; +class Error; + +/** + * Open a "local" file. This is a wrapper for the input plugins + * "file" and "archive". + */ +InputStream * +OpenLocalInputStream(Path path, Mutex &mutex, Cond &cond, Error &error); + +#endif |