summaryrefslogtreecommitdiffhomepage
path: root/Kernel/Sources
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel/Sources')
-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
4 files changed, 37 insertions, 13 deletions
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;