From c8c3f208405e6ceb2d608bdb9e6d9d4377d9aee6 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 5 Feb 2014 19:24:59 +0100 Subject: storage/local: move to src/storage/plugins/ --- src/storage/LocalStorage.cxx | 146 ------------------------------------------- 1 file changed, 146 deletions(-) delete mode 100644 src/storage/LocalStorage.cxx (limited to 'src/storage/LocalStorage.cxx') diff --git a/src/storage/LocalStorage.cxx b/src/storage/LocalStorage.cxx deleted file mode 100644 index f0a1726e0..000000000 --- a/src/storage/LocalStorage.cxx +++ /dev/null @@ -1,146 +0,0 @@ -/* - * 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 "LocalStorage.hxx" -#include "FileInfo.hxx" -#include "util/Error.hxx" -#include "fs/FileSystem.hxx" - -static bool -Stat(Path path, bool follow, FileInfo &info, Error &error) -{ - struct stat st; - if (!StatFile(path, st, follow)) { - error.SetErrno(); - - const auto path_utf8 = path.ToUTF8(); - error.FormatPrefix("Failed to stat %s: ", path_utf8.c_str()); - return false; - } - - if (S_ISREG(st.st_mode)) - info.type = FileInfo::Type::REGULAR; - else if (S_ISDIR(st.st_mode)) - info.type = FileInfo::Type::DIRECTORY; - else - info.type = FileInfo::Type::OTHER; - - info.size = st.st_size; - info.mtime = st.st_mtime; - info.device = st.st_dev; - info.inode = st.st_ino; - return true; -} - -std::string -LocalStorage::MapUTF8(const char *uri_utf8) const -{ - assert(uri_utf8 != nullptr); - - if (*uri_utf8 == 0) - return base_utf8; - - return PathTraitsUTF8::Build(base_utf8.c_str(), uri_utf8); -} - -AllocatedPath -LocalStorage::MapFS(const char *uri_utf8, Error &error) const -{ - assert(uri_utf8 != nullptr); - - if (*uri_utf8 == 0) - return base_fs; - - AllocatedPath path_fs = AllocatedPath::FromUTF8(uri_utf8, error); - if (!path_fs.IsNull()) - path_fs = AllocatedPath::Build(base_fs, path_fs); - - return path_fs; -} - -AllocatedPath -LocalStorage::MapFS(const char *uri_utf8) const -{ - return MapFS(uri_utf8, IgnoreError()); -} - -bool -LocalStorage::GetInfo(const char *uri_utf8, bool follow, FileInfo &info, - Error &error) -{ - AllocatedPath path_fs = MapFS(uri_utf8, error); - if (path_fs.IsNull()) - return false; - - return Stat(path_fs, follow, info, error); -} - -LocalDirectoryReader * -LocalStorage::OpenDirectory(const char *uri_utf8, Error &error) -{ - AllocatedPath path_fs = MapFS(uri_utf8, error); - if (path_fs.IsNull()) - return nullptr; - - LocalDirectoryReader *reader = - new LocalDirectoryReader(std::move(path_fs)); - if (reader->HasFailed()) { - error.FormatErrno("Failed to open '%s'", uri_utf8); - delete reader; - return nullptr; - } - - return reader; -} - -gcc_pure -static bool -SkipNameFS(const char *name_fs) -{ - return name_fs[0] == '.' && - (name_fs[1] == 0 || - (name_fs[1] == '.' && name_fs[2] == 0)); -} - -const char * -LocalDirectoryReader::Read() -{ - while (reader.ReadEntry()) { - const Path name_fs = reader.GetEntry(); - if (SkipNameFS(name_fs.c_str())) - continue; - - name_utf8 = name_fs.ToUTF8(); - if (name_utf8.empty()) - continue; - - return name_utf8.c_str(); - } - - return nullptr; -} - -bool -LocalDirectoryReader::GetInfo(bool follow, FileInfo &info, Error &error) -{ - const AllocatedPath path_fs = - AllocatedPath::Build(base_fs, reader.GetEntry()); - return Stat(path_fs, follow, info, error); -} -- cgit v1.2.3