From c04dcc2e7d834218ef2d4194331e383402495ae1 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 20:07:22 +0200 Subject: Adding upstream version 2:20.4+dfsg. Signed-off-by: Daniel Baumann --- xbmc/interfaces/legacy/ModuleXbmcvfs.cpp | 137 +++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 xbmc/interfaces/legacy/ModuleXbmcvfs.cpp (limited to 'xbmc/interfaces/legacy/ModuleXbmcvfs.cpp') diff --git a/xbmc/interfaces/legacy/ModuleXbmcvfs.cpp b/xbmc/interfaces/legacy/ModuleXbmcvfs.cpp new file mode 100644 index 0000000..c6858e3 --- /dev/null +++ b/xbmc/interfaces/legacy/ModuleXbmcvfs.cpp @@ -0,0 +1,137 @@ +/* + * Copyright (C) 2005-2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#include "ModuleXbmcvfs.h" + +#include "FileItem.h" +#include "LanguageHook.h" +#include "URL.h" +#include "Util.h" +#include "filesystem/Directory.h" +#include "filesystem/File.h" +#include "filesystem/SpecialProtocol.h" +#include "utils/FileUtils.h" +#include "utils/URIUtils.h" + +namespace XBMCAddon +{ + + namespace xbmcvfs + { + bool copy(const String& strSource, const String& strDestination) + { + DelayedCallGuard dg; + return XFILE::CFile::Copy(strSource, strDestination); + } + + // delete a file + bool deleteFile(const String& strSource) + { + DelayedCallGuard dg; + return XFILE::CFile::Delete(strSource); + } + + // rename a file + bool rename(const String& file, const String& newFile) + { + DelayedCallGuard dg; + return XFILE::CFile::Rename(file,newFile); + } + + // check for a file or folder existence, mimics Pythons os.path.exists() + bool exists(const String& path) + { + DelayedCallGuard dg; + if (URIUtils::HasSlashAtEnd(path, true)) + return XFILE::CDirectory::Exists(path, false); + return XFILE::CFile::Exists(path, false); + } + + // make legal file name + String makeLegalFilename(const String& filename) + { + XBMC_TRACE; + return CUtil::MakeLegalPath(filename); + } + + // translate path + String translatePath(const String& path) + { + XBMC_TRACE; + return CSpecialProtocol::TranslatePath(path); + } + + // validate path + String validatePath(const String& path) + { + XBMC_TRACE; + return CUtil::ValidatePath(path, true); + } + + // make a directory + bool mkdir(const String& path) + { + DelayedCallGuard dg; + return XFILE::CDirectory::Create(path); + } + + // make all directories along the path + bool mkdirs(const String& path) + { + DelayedCallGuard dg; + return CUtil::CreateDirectoryEx(path); + } + + bool rmdir(const String& path, bool force) + { + DelayedCallGuard dg; + + if (force) + return CFileUtils::DeleteItem(path); + else + return XFILE::CDirectory::Remove(path); + } + + Tuple, std::vector > listdir(const String& path) + { + DelayedCallGuard dg; + CFileItemList items; + std::string strSource; + strSource = path; + XFILE::CDirectory::GetDirectory(strSource, items, "", XFILE::DIR_FLAG_NO_FILE_DIRS); + + Tuple, std::vector > ret; + // initialize the Tuple to two values + ret.second(); + + for (int i=0; i < items.Size(); i++) + { + std::string itemPath = items[i]->GetPath(); + + if (URIUtils::HasSlashAtEnd(itemPath)) // folder + { + URIUtils::RemoveSlashAtEnd(itemPath); + std::string strFileName = URIUtils::GetFileName(itemPath); + if (strFileName.empty()) + { + CURL url(itemPath); + strFileName = url.GetHostName(); + } + ret.first().push_back(strFileName); + } + else // file + { + std::string strFileName = URIUtils::GetFileName(itemPath); + ret.second().push_back(strFileName); + } + } + + return ret; + } + } +} -- cgit v1.2.3