From 5dc33d9a22207b8b664ea83f88280911a22d0c52 Mon Sep 17 00:00:00 2001 From: Amlal EL Mahrouss Date: Wed, 31 Jul 2024 04:04:46 +0200 Subject: [IMP] See below. NewFS: - Add meta files type inside NewFS. - Add flags to file when creating it. - Create file when specifying it. Users: - Can now fetch the current logged in user. Meta: - Add documentation to code. Boot: - Replace 'invalid disk geometry' with 'invalid disk'. Signed-off-by: Amlal EL Mahrouss --- Kernel/Sources/FS/NewFS.cxx | 16 +++++++++++++++- Kernel/Sources/NewFS+FileManager.cxx | 7 +++++++ Kernel/Sources/User.cxx | 5 +++++ 3 files changed, 27 insertions(+), 1 deletion(-) (limited to 'Kernel/Sources') diff --git a/Kernel/Sources/FS/NewFS.cxx b/Kernel/Sources/FS/NewFS.cxx index a8790109..05833c0e 100644 --- a/Kernel/Sources/FS/NewFS.cxx +++ b/Kernel/Sources/FS/NewFS.cxx @@ -17,6 +17,7 @@ #include #include #include +#include using namespace Kernel; @@ -300,13 +301,26 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const char* name, NFS_CATALOG_STRUCT* catalogChild = new NFS_CATALOG_STRUCT(); + Int32 flagsList = flags; + + if (name[0] == kNewFSMetaFilePrefix) + { + if (UserView::The()->Current() != UserView::The()->fRootUser) + { + delete catalogChild; + return nullptr; + } + + flagsList |= kNewFSCatalogKindMetaFile; + } + catalogChild->ResourceForkSize = cDefaultForkSize; catalogChild->DataForkSize = cDefaultForkSize; catalogChild->NextSibling = outLba; catalogChild->PrevSibling = outLba; catalogChild->Kind = kind; - catalogChild->Flags = kNewFSFlagCreated; + catalogChild->Flags = kNewFSFlagCreated | flagsList; rt_copy_memory((VoidPtr)name, (VoidPtr)catalogChild->Name, rt_string_len(name)); diff --git a/Kernel/Sources/NewFS+FileManager.cxx b/Kernel/Sources/NewFS+FileManager.cxx index 146f721d..402ce56c 100644 --- a/Kernel/Sources/NewFS+FileManager.cxx +++ b/Kernel/Sources/NewFS+FileManager.cxx @@ -84,6 +84,13 @@ namespace Kernel { return kNewFSSeparator; } + + /// @brief Gets the metafile character. + /// @return + const char NewFilesystemHelper::MetaFile() + { + return kNewFSMetaFilePrefix; + } } // namespace Kernel #endif // ifdef __FSKIT_USE_NEWFS__ diff --git a/Kernel/Sources/User.cxx b/Kernel/Sources/User.cxx index 49c5cad9..7d496a69 100644 --- a/Kernel/Sources/User.cxx +++ b/Kernel/Sources/User.cxx @@ -143,6 +143,11 @@ namespace Kernel return true; } + User* UserView::Current() noexcept + { + return fCurrentUser; + } + Void UserView::LogOff() noexcept { if (!fCurrentUser) -- cgit v1.2.3