diff options
Diffstat (limited to 'dev/Kernel/src')
| -rw-r--r-- | dev/Kernel/src/DriveMgr.cc | 11 | ||||
| -rw-r--r-- | dev/Kernel/src/FS/NeFS.cc | 16 | ||||
| -rw-r--r-- | dev/Kernel/src/KernelMain.cc | 3 | ||||
| -rw-r--r-- | dev/Kernel/src/Utils.cc | 9 |
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'; } |
