summaryrefslogtreecommitdiffhomepage
path: root/Kernel
diff options
context:
space:
mode:
authorAmlal EL Mahrouss <amlalelmahrouss@icloud.com>2024-08-10 16:47:14 +0200
committerAmlal EL Mahrouss <amlalelmahrouss@icloud.com>2024-08-10 16:47:14 +0200
commit9a0184dae5723488daf16c86ee8a3741cd70f894 (patch)
treec62a21c453853b78a012666a7235c5b300a856d2 /Kernel
parent8a2cab86eb8723b2f8b4f85c5d09d764003087a3 (diff)
[IMP] Many fixes inside kernel DLL, fixing filesystem now.
Signed-off-by: Amlal EL Mahrouss <amlalelmahrouss@icloud.com>
Diffstat (limited to 'Kernel')
-rw-r--r--Kernel/HALKit/AMD64/HalKernelMain.cxx1
-rw-r--r--Kernel/KernelKit/User.hxx2
-rw-r--r--Kernel/KernelRsrc.rsrc2
-rw-r--r--Kernel/Sources/FS/NewFS.cxx28
-rw-r--r--Kernel/Sources/FileManager.cxx8
-rw-r--r--Kernel/Sources/NewFS+FileManager.cxx2
-rw-r--r--Kernel/Sources/User.cxx12
7 files changed, 38 insertions, 17 deletions
diff --git a/Kernel/HALKit/AMD64/HalKernelMain.cxx b/Kernel/HALKit/AMD64/HalKernelMain.cxx
index 495cb0be..01153c0e 100644
--- a/Kernel/HALKit/AMD64/HalKernelMain.cxx
+++ b/Kernel/HALKit/AMD64/HalKernelMain.cxx
@@ -224,7 +224,6 @@ Kernel::Void hal_real_init(Kernel::Void) noexcept
const auto cPassword = "password";
#endif
-
cRoot->TrySave(cPassword);
Kernel::UserManager::The()->TryLogIn(cRoot, cPassword);
diff --git a/Kernel/KernelKit/User.hxx b/Kernel/KernelKit/User.hxx
index 169a8bce..ac0b2bb7 100644
--- a/Kernel/KernelKit/User.hxx
+++ b/Kernel/KernelKit/User.hxx
@@ -16,7 +16,7 @@
#define kSuperUser "\\Local\\Super"
#define kGuestUser "\\Local\\Guest"
-#define kUsersFile "\\Users\\$UserMTF"
+#define kUsersFile "\\Users\\$MANIFEST"
#define kMaxUserNameLen (255)
#define kMaxUserTokenLen (4096)
diff --git a/Kernel/KernelRsrc.rsrc b/Kernel/KernelRsrc.rsrc
index 4cf7e352..113b2176 100644
--- a/Kernel/KernelRsrc.rsrc
+++ b/Kernel/KernelRsrc.rsrc
@@ -1,5 +1,3 @@
-1 ICON "../Icons/default.ico"
-
#include "CompilerKit/Version.hxx"
1 VERSIONINFO
diff --git a/Kernel/Sources/FS/NewFS.cxx b/Kernel/Sources/FS/NewFS.cxx
index 83c39e4b..a332576c 100644
--- a/Kernel/Sources/FS/NewFS.cxx
+++ b/Kernel/Sources/FS/NewFS.cxx
@@ -221,13 +221,13 @@ _Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const char* name)
/// @param flags the flags of the catalog.
/// @param kind the catalog kind.
/// @return catalog pointer.
-_Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const char* name,
+_Output NFS_CATALOG_STRUCT* NewFSParser::CreateCatalog(_Input const Char* name,
_Input const Int32& flags,
_Input const Int32& kind)
{
if (!sMountpointInterface.GetAddressOf(this->fDriveIndex))
return nullptr;
-
+
Lba outLba = 0UL;
/// a directory should have a slash in the end.
@@ -610,10 +610,8 @@ bool NewFSParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endL
/// @param catalog the catalog itself
/// @param data the data.
/// @return if the catalog w rote the contents successfully.
-bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, voidPtr data, SizeT sizeOfData, _Input const char* forkName)
+bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, voidPtr data, SizeT sizeOfData, _Input const Char* forkName)
{
- if (sizeOfData > catalog->DataForkSize)
- return false;
if (!sMountpointInterface.GetAddressOf(this->fDriveIndex))
return false;
@@ -656,6 +654,11 @@ bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, voidP
StringBuilder::Equals(forkData->ForkName, forkName) &&
StringBuilder::Equals(forkData->CatalogName, catalog->Name))
{
+ // ===================================================== //
+ // Store size of blob now.
+ // ===================================================== //
+ forkData->DataSize = sizeOfData;
+
drive->fPacket.fPacketContent = data;
drive->fPacket.fPacketSize = sizeOfData;
drive->fPacket.fLba = forkData->DataOffset;
@@ -670,6 +673,11 @@ bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, voidP
else if (auto catalog = this->GetCatalog(forkData->CatalogName);
catalog == nullptr)
{
+ // ===================================================== //
+ // Store size of blob now.
+ // ===================================================== //
+ forkData->DataSize = sizeOfData;
+
delete catalog;
drive->fPacket.fPacketContent = data;
@@ -680,6 +688,16 @@ bool NewFSParser::WriteCatalog(_Input _Output NFS_CATALOG_STRUCT* catalog, voidP
drive->fOutput(&drive->fPacket);
+ forkData->Flags = kNewFSFlagCreated;
+
+ drive->fPacket.fPacketContent = forkData;
+ drive->fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
+ drive->fPacket.fLba = startFork;
+
+ drive->fOutput(&drive->fPacket);
+
+ kcout << "newoskrnl: wrote fork at offset: " << hex_number(forkData->DataOffset) << endl;
+
delete forkData;
return true;
}
diff --git a/Kernel/Sources/FileManager.cxx b/Kernel/Sources/FileManager.cxx
index 634e4fd6..96e42dc9 100644
--- a/Kernel/Sources/FileManager.cxx
+++ b/Kernel/Sources/FileManager.cxx
@@ -37,13 +37,13 @@ namespace Kernel
}
/// @brief Mount filesystem.
- /// @param mountPtr The filesystem to mount.
+ /// @param mount_ptr The filesystem to mount.
/// @return if it succeeded true, otherwise false.
- bool FilesystemManagerInterface::Mount(_Input FilesystemManagerInterface* mountPtr)
+ bool FilesystemManagerInterface::Mount(_Input FilesystemManagerInterface* mount_ptr)
{
- if (kMounted == nullptr)
+ if (mount_ptr != nullptr)
{
- kMounted = mountPtr;
+ kMounted = mount_ptr;
return true;
}
diff --git a/Kernel/Sources/NewFS+FileManager.cxx b/Kernel/Sources/NewFS+FileManager.cxx
index b1622f77..3d216ca5 100644
--- a/Kernel/Sources/NewFS+FileManager.cxx
+++ b/Kernel/Sources/NewFS+FileManager.cxx
@@ -25,6 +25,8 @@ namespace Kernel
NewFilesystemManager::~NewFilesystemManager()
{
+ kcout << "Destroying it...\r";
+
if (fImpl)
{
delete fImpl;
diff --git a/Kernel/Sources/User.cxx b/Kernel/Sources/User.cxx
index ee825400..028d184c 100644
--- a/Kernel/Sources/User.cxx
+++ b/Kernel/Sources/User.cxx
@@ -17,6 +17,9 @@
#include <KernelKit/Heap.hxx>
+#define cStdUser (0xCF)
+#define cSuperUser (0xEF)
+
/// BUGS: 0
namespace Kernel
@@ -34,7 +37,7 @@ namespace Kernel
for (Size i_pass = 0; i_pass < rt_string_len(password); ++i_pass)
{
Char cur_chr = password[i_pass];
- password[i_pass] = cur_chr + (user->IsStdUser() ? 0xCF : 0xEF);
+ password[i_pass] = cur_chr + (user->IsStdUser() ? cStdUser : cSuperUser);
}
return 0;
@@ -72,8 +75,9 @@ namespace Kernel
if (NewFilesystemManager::GetMounted())
{
- if (auto dir = NewFilesystemManager::GetMounted()->CreateDirectory("\\Users");
- dir)
+ auto dir = NewFilesystemManager::GetMounted()->CreateDirectory("\\Users\\");
+
+ if (dir)
{
delete dir;
}
@@ -84,7 +88,7 @@ namespace Kernel
}
auto node = NewFilesystemManager::GetMounted()->Create(kUsersFile);
- NewFilesystemManager::GetMounted()->Write(this->fUserName.CData(), node, (VoidPtr)token, this->IsStdUser() ? 0xCF : 0xEF, len);
+ NewFilesystemManager::GetMounted()->Write(this->fUserName.CData(), node, (VoidPtr)token, this->IsStdUser() ? cStdUser : cSuperUser, len);
delete node;
delete token;