summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel/src
diff options
context:
space:
mode:
Diffstat (limited to 'dev/Kernel/src')
-rw-r--r--dev/Kernel/src/DriveMgr.cc11
-rw-r--r--dev/Kernel/src/FS/NeFS.cc16
-rw-r--r--dev/Kernel/src/KernelMain.cc3
-rw-r--r--dev/Kernel/src/Utils.cc9
4 files changed, 24 insertions, 15 deletions
diff --git a/dev/Kernel/src/DriveMgr.cc b/dev/Kernel/src/DriveMgr.cc
index 5d1868da..53b22a58 100644
--- a/dev/Kernel/src/DriveMgr.cc
+++ b/dev/Kernel/src/DriveMgr.cc
@@ -134,7 +134,7 @@ namespace Kernel
constexpr auto kBlankDrive = "/media/blank/";
rt_copy_memory((VoidPtr)kBlankDrive, trait.fName, rt_string_len(kBlankDrive));
- trait.fKind = kInvalidDisc;
+ trait.fKind = kInvalidDrive;
trait.fInput = io_drv_unimplemented;
trait.fOutput = io_drv_unimplemented;
@@ -169,7 +169,7 @@ namespace Kernel
if (rt_string_cmp(((BOOT_BLOCK_STRUCT*)trait.fPacket.fPacketContent)->Magic, kEPMMagic, kEPMMagicLength) == 0)
{
trait.fPacket.fPacketReadOnly = NO;
- trait.fKind = kMassStorageDisc | kEPMDrive;
+ trait.fKind = kMassStorageDrive | kEPMDrive;
kout << "Disk is EPM.\r";
@@ -187,12 +187,15 @@ namespace Kernel
else
{
trait.fPacket.fPacketReadOnly = YES;
- trait.fKind = kMassStorageDisc | kUnformattedDrive | kReadOnlyDrive;
+ trait.fKind = kMassStorageDrive | kUnformattedDrive | kReadOnlyDrive;
kout << "Scheme Found: " << block_struct.Name << endl;
- if (block_struct.Name[0] == 0)
+ if (block_struct.Name[0] == 0 ||
+ !rt_is_alnum(block_struct.Name[0]))
+ {
kout << "Disk partition is empty (Read Only)\r";
+ }
}
rt_copy_memory((VoidPtr) "*/*", trait.fPacket.fPacketMime,
diff --git a/dev/Kernel/src/FS/NeFS.cc b/dev/Kernel/src/FS/NeFS.cc
index f8938444..91c6820e 100644
--- a/dev/Kernel/src/FS/NeFS.cc
+++ b/dev/Kernel/src/FS/NeFS.cc
@@ -449,13 +449,12 @@ _Output NEFS_CATALOG_STRUCT* NeFileSystemParser::CreateCatalog(_Input const Char
/// @return If it was sucessful, see err_global_get().
bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const Lba endLba, _Input const Int32 flags, const Char* part_name)
{
-#ifdef NE_EPM_SUPPORT
if (*part_name == 0 ||
endLba == 0)
return false;
// verify disk.
- drive->fVerify(&drive->fPacket);
+ drive->fVerify(drive->fPacket);
rt_copy_memory((VoidPtr) "fs/nefs-packet", drive->fPacket.fPacketMime,
rt_string_len("fs/nefs-packet"));
@@ -475,7 +474,7 @@ bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const L
drive->fPacket.fPacketSize = sizeof(NEFS_ROOT_PARTITION_BLOCK);
drive->fPacket.fPacketLba = start;
- drive->fInput(&drive->fPacket);
+ drive->fInput(drive->fPacket);
if (flags & kNeFSPartitionTypeBoot)
{
@@ -511,7 +510,7 @@ bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const L
drive->fPacket.fPacketSize = sizeof(EPM_PART_BLOCK);
drive->fPacket.fPacketLba = outEpmLba;
- drive->fInput(&drive->fPacket);
+ drive->fInput(drive->fPacket);
if (buf[0] == 0)
{
@@ -527,7 +526,7 @@ bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const L
drive->fPacket.fPacketSize = sizeof(EPM_PART_BLOCK);
drive->fPacket.fPacketLba = outEpmLba;
- drive->fOutput(&drive->fPacket);
+ drive->fOutput(drive->fPacket);
break;
}
@@ -579,7 +578,7 @@ bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const L
drive->fPacket.fPacketSize = sizeof(NEFS_ROOT_PARTITION_BLOCK);
drive->fPacket.fPacketLba = kNeFSRootCatalogStartAddress;
- drive->fOutput(&drive->fPacket);
+ drive->fOutput(drive->fPacket);
kout << "drive kind: " << drive->fDriveKind() << endl;
@@ -604,9 +603,8 @@ bool NeFileSystemParser::Format(_Input _Output DriveTrait* drive, _Input const L
drive->fPacket.fPacketSize = sizeof(NEFS_ROOT_PARTITION_BLOCK);
drive->fPacket.fPacketLba = start;
- drive->fInput(&drive->fPacket);
+ drive->fInput(drive->fPacket);
}
-#endif // NE_EPM_SUPPORT
return false;
}
@@ -785,7 +783,7 @@ _Output NEFS_CATALOG_STRUCT* NeFileSystemParser::FindCatalog(_Input const Char*
NEFS_CATALOG_STRUCT temporary_catalog{};
kNeFSSearchThroughCatalogList:
- while (YES)
+ while (drive.fPacket.fPacketGood || !drive.fPacket.fPacketReadOnly)
{
drive.fPacket.fPacketLba = start_catalog_lba;
drive.fPacket.fPacketContent = &temporary_catalog;
diff --git a/dev/Kernel/src/KernelMain.cc b/dev/Kernel/src/KernelMain.cc
index d4a9e126..c9b8a629 100644
--- a/dev/Kernel/src/KernelMain.cc
+++ b/dev/Kernel/src/KernelMain.cc
@@ -99,4 +99,7 @@ EXTERN_C Kernel::Void rtl_kernel_main(Kernel::SizeT argc, char** argv, char** en
Kernel::NeFS::fs_init_nefs();
Kernel::Detail::NeFilesystemInstaller installer{};
#endif // __NE_AUTO_FORMAT__
+
+ while (YES)
+ ;
}
diff --git a/dev/Kernel/src/Utils.cc b/dev/Kernel/src/Utils.cc
index c09d82fb..07090e91 100644
--- a/dev/Kernel/src/Utils.cc
+++ b/dev/Kernel/src/Utils.cc
@@ -124,6 +124,11 @@ namespace Kernel
return character;
}
+ Int32 rt_is_alnum(Int32 character)
+ {
+ return (character >= 'a' && character <= 'z') || (character >= 'A' && character <= 'Z') || (character >= '0' && character <= '9');
+ }
+
Int32 rt_to_lower(Int32 character)
{
if (character >= 'A' && character <= 'Z')
@@ -132,12 +137,12 @@ namespace Kernel
return character;
}
- Boolean is_space(Char chr)
+ Boolean rt_is_space(Char chr)
{
return chr == ' ';
}
- Boolean is_newln(Char chr)
+ Boolean rt_is_newln(Char chr)
{
return chr == '\n';
}