summaryrefslogtreecommitdiffhomepage
path: root/Private/Source/FileManager.cxx
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-05-05 21:10:18 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-05-05 21:10:18 +0200
commitf95d8bf159d10b5a9521dcaa0bc37aa0e9dfc02b (patch)
treebf8186f1a0521a64983bb0bca4f7b54883542195 /Private/Source/FileManager.cxx
parent5a903c1d8f80ca8d7bc5fbea0aea710ce0133f9d (diff)
MHR-23: Add run_format.sh, kernel patches.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'Private/Source/FileManager.cxx')
-rw-r--r--Private/Source/FileManager.cxx250
1 files changed, 135 insertions, 115 deletions
diff --git a/Private/Source/FileManager.cxx b/Private/Source/FileManager.cxx
index a8c8ad47..58330c9b 100644
--- a/Private/Source/FileManager.cxx
+++ b/Private/Source/FileManager.cxx
@@ -11,124 +11,144 @@
/// BUGS: 0
//! @brief File manager for NewOS.
-namespace NewOS {
-static FilesystemManagerInterface* kMounted = nullptr;
-
-/// @brief FilesystemManager getter.
-/// @return The mounted filesystem.
-FilesystemManagerInterface* FilesystemManagerInterface::GetMounted() {
- return kMounted;
-}
-
-/// @brief Unmount filesystem.
-/// @return The unmounted filesystem.
-FilesystemManagerInterface* FilesystemManagerInterface::Unmount() {
- if (kMounted) {
- auto mount = kMounted;
- kMounted = nullptr;
-
- return mount;
- }
-
- return nullptr;
-}
-
-/// @brief Mount filesystem.
-/// @param mountPtr The filesystem to mount.
-/// @return if it succeeded true, otherwise false.
-bool FilesystemManagerInterface::Mount(FilesystemManagerInterface* mountPtr) {
- if (kMounted == nullptr) {
- kMounted = mountPtr;
- return true;
- }
-
- return false;
-}
+namespace NewOS
+{
+ static FilesystemManagerInterface* kMounted = nullptr;
+
+ /// @brief FilesystemManager getter.
+ /// @return The mounted filesystem.
+ FilesystemManagerInterface* FilesystemManagerInterface::GetMounted()
+ {
+ return kMounted;
+ }
+
+ /// @brief Unmount filesystem.
+ /// @return The unmounted filesystem.
+ FilesystemManagerInterface* FilesystemManagerInterface::Unmount()
+ {
+ if (kMounted)
+ {
+ auto mount = kMounted;
+ kMounted = nullptr;
+
+ return mount;
+ }
+
+ return nullptr;
+ }
+
+ /// @brief Mount filesystem.
+ /// @param mountPtr The filesystem to mount.
+ /// @return if it succeeded true, otherwise false.
+ bool FilesystemManagerInterface::Mount(FilesystemManagerInterface* mountPtr)
+ {
+ if (kMounted == nullptr)
+ {
+ kMounted = mountPtr;
+ return true;
+ }
+
+ return false;
+ }
#ifdef __FSKIT_NEWFS__
-/// @brief Opens a new file.
-/// @param path
-/// @param r
-/// @return
-NodePtr NewFilesystemManager::Open(const char* path, const char* r) {
- if (!path || *path == 0) return nullptr;
-
- if (!r || *r == 0) return nullptr;
-
- auto catalog = fImpl->GetCatalog(path);
-
- if (catalog->Kind != kNewFSCatalogKindFile) {
- fImpl->CloseCatalog(catalog);
- return nullptr;
- }
-
- return node_cast(catalog);
-}
-
-/// @brief Writes to a catalog
-/// @param node
-/// @param data
-/// @param flags
-/// @return
-Void NewFilesystemManager::Write(NodePtr node, VoidPtr data, Int32 flags,
- SizeT size) {
- constexpr const char* cReadAllFork = kNewFSDataFork;
-
- if ((reinterpret_cast<NewCatalog*>(node))->Kind == kNewFSCatalogKindFile)
- fImpl->WriteCatalog(reinterpret_cast<NewCatalog*>(node), data, size,
- cReadAllFork);
-}
-
-/**
+ /// @brief Opens a new file.
+ /// @param path
+ /// @param r
+ /// @return
+ NodePtr NewFilesystemManager::Open(const char* path, const char* r)
+ {
+ if (!path || *path == 0)
+ return nullptr;
+
+ if (!r || *r == 0)
+ return nullptr;
+
+ auto catalog = fImpl->GetCatalog(path);
+
+ if (catalog->Kind != kNewFSCatalogKindFile)
+ {
+ fImpl->CloseCatalog(catalog);
+ return nullptr;
+ }
+
+ return node_cast(catalog);
+ }
+
+ /// @brief Writes to a catalog
+ /// @param node
+ /// @param data
+ /// @param flags
+ /// @return
+ Void NewFilesystemManager::Write(NodePtr node, VoidPtr data, Int32 flags, SizeT size)
+ {
+ constexpr const char* cReadAllFork = kNewFSDataFork;
+
+ if ((reinterpret_cast<NewCatalog*>(node))->Kind == kNewFSCatalogKindFile)
+ fImpl->WriteCatalog(reinterpret_cast<NewCatalog*>(node), data, size,
+ cReadAllFork);
+ }
+
+ /**
* NOTE: Write and Read are implemented using a custom NodePtr, retrieved
* using OpenFork.
*/
-/// @brief Reads from filesystem.
-/// @param node
-/// @param flags
-/// @param sz
-/// @return
-VoidPtr NewFilesystemManager::Read(NodePtr node, Int32 flags, SizeT sz) {
- constexpr const char* cReadAllFork = kNewFSDataFork;
-
- if ((reinterpret_cast<NewCatalog*>(node))->Kind == kNewFSCatalogKindFile)
- return fImpl->ReadCatalog(reinterpret_cast<NewCatalog*>(node), sz,
- cReadAllFork);
-
- return nullptr;
-}
-
-/// @brief Seek from Catalog.
-/// @param node
-/// @param off
-/// @return
-bool NewFilesystemManager::Seek(NodePtr node, SizeT off) {
- if (!node || off == 0) return false;
-
- return fImpl->Seek(reinterpret_cast<NewCatalog*>(node), off);
-}
-
-/// @brief Tell where the catalog is/
-/// @param node
-/// @return
-SizeT NewFilesystemManager::Tell(NodePtr node) {
- if (!node) return kNPos;
-
- return fImpl->Tell(reinterpret_cast<NewCatalog*>(node));
-}
-
-/// @brief Rewind the catalog.
-/// @param node
-/// @return
-bool NewFilesystemManager::Rewind(NodePtr node) {
- if (!node) return false;
-
- return this->Seek(node, 0);
-}
-
-/// @brief The filesystem implementation.
-/// @return
-NewFSParser* NewFilesystemManager::GetImpl() noexcept { return fImpl; }
-#endif // __FSKIT_NEWFS__
-} // namespace NewOS
+ /// @brief Reads from filesystem.
+ /// @param node
+ /// @param flags
+ /// @param sz
+ /// @return
+ VoidPtr NewFilesystemManager::Read(NodePtr node, Int32 flags, SizeT sz)
+ {
+ constexpr const char* cReadAllFork = kNewFSDataFork;
+
+ if ((reinterpret_cast<NewCatalog*>(node))->Kind == kNewFSCatalogKindFile)
+ return fImpl->ReadCatalog(reinterpret_cast<NewCatalog*>(node), sz,
+ cReadAllFork);
+
+ return nullptr;
+ }
+
+ /// @brief Seek from Catalog.
+ /// @param node
+ /// @param off
+ /// @return
+ bool NewFilesystemManager::Seek(NodePtr node, SizeT off)
+ {
+ if (!node || off == 0)
+ return false;
+
+ return fImpl->Seek(reinterpret_cast<NewCatalog*>(node), off);
+ }
+
+ /// @brief Tell where the catalog is/
+ /// @param node
+ /// @return
+ SizeT NewFilesystemManager::Tell(NodePtr node)
+ {
+ if (!node)
+ return kNPos;
+
+ return fImpl->Tell(reinterpret_cast<NewCatalog*>(node));
+ }
+
+ /// @brief Rewind the catalog.
+ /// @param node
+ /// @return
+ bool NewFilesystemManager::Rewind(NodePtr node)
+ {
+ if (!node)
+ return false;
+
+ return this->Seek(node, 0);
+ }
+
+ /// @brief The filesystem implementation.
+ /// @return
+ NewFSParser* NewFilesystemManager::GetImpl() noexcept
+ {
+ return fImpl;
+ }
+#endif // __FSKIT_NEWFS__
+} // namespace NewOS