summaryrefslogtreecommitdiffhomepage
path: root/Kernel/Sources
diff options
context:
space:
mode:
authorAmlal EL Mahrouss <amlalelmahrouss@icloud.com>2024-07-31 04:04:46 +0200
committerAmlal EL Mahrouss <amlalelmahrouss@icloud.com>2024-07-31 04:04:46 +0200
commit5dc33d9a22207b8b664ea83f88280911a22d0c52 (patch)
treef6f55df6b9b44addf07caafea3111ef77f95f8bb /Kernel/Sources
parent3bfb95803ba25a04ddb57ebbc0f25e4dec29d7e0 (diff)
[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 <amlalelmahrouss@icloud.com>
Diffstat (limited to 'Kernel/Sources')
-rw-r--r--Kernel/Sources/FS/NewFS.cxx16
-rw-r--r--Kernel/Sources/NewFS+FileManager.cxx7
-rw-r--r--Kernel/Sources/User.cxx5
3 files changed, 27 insertions, 1 deletions
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 <NewKit/Utils.hpp>
#include <FirmwareKit/EPM.hxx>
#include <KernelKit/ProcessScheduler.hxx>
+#include <KernelKit/User.hxx>
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)