diff --git a/src/archive/meson.build b/src/archive/meson.build index e2f45f8e6..c40b7b272 100644 --- a/src/archive/meson.build +++ b/src/archive/meson.build @@ -18,7 +18,6 @@ endif archive_glue = static_library( 'archive_glue', - 'ArchiveLookup.cxx', 'ArchivePlugin.cxx', '../input/plugins/ArchiveInputPlugin.cxx', include_directories: inc, diff --git a/src/archive/ArchiveLookup.cxx b/src/fs/LookupFile.cxx similarity index 95% rename from src/archive/ArchiveLookup.cxx rename to src/fs/LookupFile.cxx index e9227c913..9cee68262 100644 --- a/src/archive/ArchiveLookup.cxx +++ b/src/fs/LookupFile.cxx @@ -17,8 +17,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#include "ArchiveLookup.hxx" -#include "fs/FileInfo.hxx" +#include "LookupFile.hxx" +#include "FileInfo.hxx" #include "system/Error.hxx" gcc_pure @@ -33,7 +33,7 @@ FindSlash(PathTraitsFS::pointer_type p, size_t i) noexcept } ArchiveLookupResult -archive_lookup(Path pathname) +LookupFile(Path pathname) { PathTraitsFS::string buffer(pathname.c_str()); size_t idx = buffer.size(); diff --git a/src/archive/ArchiveLookup.hxx b/src/fs/LookupFile.hxx similarity index 93% rename from src/archive/ArchiveLookup.hxx rename to src/fs/LookupFile.hxx index 6166dd3ca..80fc1bf39 100644 --- a/src/archive/ArchiveLookup.hxx +++ b/src/fs/LookupFile.hxx @@ -17,10 +17,10 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef MPD_ARCHIVE_LOOKUP_HXX -#define MPD_ARCHIVE_LOOKUP_HXX +#ifndef MPD_LOOKUP_FILE_HXX +#define MPD_LOOKUP_FILE_HXX -#include "fs/AllocatedPath.hxx" +#include "AllocatedPath.hxx" struct ArchiveLookupResult { AllocatedPath archive = nullptr; @@ -50,7 +50,7 @@ struct ArchiveLookupResult { * Throws on error. */ ArchiveLookupResult -archive_lookup(Path pathname); +LookupFile(Path pathname); #endif diff --git a/src/fs/meson.build b/src/fs/meson.build index 201d446a2..8e49728cd 100644 --- a/src/fs/meson.build +++ b/src/fs/meson.build @@ -10,6 +10,7 @@ fs_sources = [ 'List.cxx', 'StandardDirectory.cxx', 'CheckFile.cxx', + 'LookupFile.cxx', 'DirectoryReader.cxx', 'io/PeekReader.cxx', 'io/FileReader.cxx', diff --git a/src/input/plugins/ArchiveInputPlugin.cxx b/src/input/plugins/ArchiveInputPlugin.cxx index 769b67c58..d8b5e754f 100644 --- a/src/input/plugins/ArchiveInputPlugin.cxx +++ b/src/input/plugins/ArchiveInputPlugin.cxx @@ -18,11 +18,11 @@ */ #include "ArchiveInputPlugin.hxx" -#include "archive/ArchiveLookup.hxx" #include "archive/ArchiveList.hxx" #include "archive/ArchivePlugin.hxx" #include "archive/ArchiveFile.hxx" #include "../InputStream.hxx" +#include "fs/LookupFile.hxx" #include "fs/Path.hxx" #include "Log.hxx" @@ -31,10 +31,9 @@ OpenArchiveInputStream(Path path, Mutex &mutex) { const ArchivePlugin *arplug; - // archive_lookup will modify pname when true is returned ArchiveLookupResult l; try { - l = archive_lookup(path); + l = LookupFile(path); if (l.archive.IsNull()) { return nullptr; } diff --git a/test/TestLookupFile.cxx b/test/TestLookupFile.cxx new file mode 100644 index 000000000..be6d85cfb --- /dev/null +++ b/test/TestLookupFile.cxx @@ -0,0 +1,30 @@ +#include "fs/LookupFile.hxx" +#include "util/Compiler.h" + +#include + +#include +#include + +TEST(ArchiveTest, Lookup) +{ + EXPECT_THROW(LookupFile(Path::FromFS("")), std::system_error); + + EXPECT_FALSE(LookupFile(Path::FromFS("."))); + + EXPECT_FALSE(LookupFile(Path::FromFS("config.h"))); + + EXPECT_THROW(LookupFile(Path::FromFS("src/foo/bar")), std::system_error); + + fclose(fopen("dummy", "w")); + + auto result = LookupFile(Path::FromFS("dummy/foo/bar")); + EXPECT_TRUE(result); + EXPECT_STREQ(result.archive.c_str(), "dummy"); + EXPECT_STREQ(result.inside.c_str(), "foo/bar"); + + result = LookupFile(Path::FromFS("config.h/foo/bar")); + EXPECT_TRUE(result); + EXPECT_STREQ(result.archive.c_str(), "config.h"); + EXPECT_STREQ(result.inside.c_str(), "foo/bar"); +} diff --git a/test/meson.build b/test/meson.build index 731ad2cec..7b4325322 100644 --- a/test/meson.build +++ b/test/meson.build @@ -92,6 +92,9 @@ test('test_queue_priority', executable( test('TestFs', executable( 'TestFs', 'TestFs.cxx', + 'TestLookupFile.cxx', + '../src/Log.cxx', + '../src/LogBackend.cxx', include_directories: inc, dependencies: [ fs_dep, @@ -339,18 +342,6 @@ endif # if archive_glue_dep.found() - test('test_archive', executable( - 'test_archive', - 'test_archive.cxx', - '../src/Log.cxx', - '../src/LogBackend.cxx', - include_directories: inc, - dependencies: [ - archive_glue_dep, - gtest_dep, - ], - )) - executable( 'visit_archive', 'visit_archive.cxx', diff --git a/test/test_archive.cxx b/test/test_archive.cxx deleted file mode 100644 index 55e655b21..000000000 --- a/test/test_archive.cxx +++ /dev/null @@ -1,30 +0,0 @@ -#include "archive/ArchiveLookup.hxx" -#include "util/Compiler.h" - -#include - -#include -#include - -TEST(ArchiveTest, Lookup) -{ - EXPECT_THROW(archive_lookup(Path::FromFS("")), std::system_error); - - EXPECT_FALSE(archive_lookup(Path::FromFS("."))); - - EXPECT_FALSE(archive_lookup(Path::FromFS("config.h"))); - - EXPECT_THROW(archive_lookup(Path::FromFS("src/foo/bar")), std::system_error); - - fclose(fopen("dummy", "w")); - - auto result = archive_lookup(Path::FromFS("dummy/foo/bar")); - EXPECT_TRUE(result); - EXPECT_STREQ(result.archive.c_str(), "dummy"); - EXPECT_STREQ(result.inside.c_str(), "foo/bar"); - - result = archive_lookup(Path::FromFS("config.h/foo/bar")); - EXPECT_TRUE(result); - EXPECT_STREQ(result.archive.c_str(), "config.h"); - EXPECT_STREQ(result.inside.c_str(), "foo/bar"); -}