Add check for empty drivers list and print message if no drivers to load

This commit is contained in:
EnderIce2 2024-03-02 01:33:00 +02:00
parent 0fd804abab
commit d651dcbe7f
Signed by untrusted user who does not match committer: enderice2
GPG Key ID: EACC3AD603BAB4DD

View File

@ -34,6 +34,12 @@ namespace Driver
{ {
void Manager::LoadAllDrivers() void Manager::LoadAllDrivers()
{ {
if (Drivers.empty())
{
KPrint("\eFF0000No drivers to load");
return;
}
foreach (auto &var in Drivers) foreach (auto &var in Drivers)
{ {
DriverObject *Drv = &var.second; DriverObject *Drv = &var.second;
@ -506,15 +512,15 @@ namespace Driver
{ {
debug("Initializing driver manager"); debug("Initializing driver manager");
const char *DriverDirectory = Config.DriverDirectory; const char *DriverDirectory = Config.DriverDirectory;
RefNode *rn = fs->Open(DriverDirectory); RefNode *drvDirNode = fs->Open(DriverDirectory);
if (!rn) if (!drvDirNode)
{ {
error("Failed to open driver directory %s", DriverDirectory); error("Failed to open driver directory %s", DriverDirectory);
KPrint("Failed to open driver directory %s", DriverDirectory); KPrint("Failed to open driver directory %s", DriverDirectory);
return; return;
} }
foreach (auto drvNode in rn->node->Children) foreach (auto drvNode in drvDirNode->node->Children)
{ {
if (drvNode->Type != vfs::FILE) if (drvNode->Type != vfs::FILE)
continue; continue;
@ -558,7 +564,7 @@ namespace Driver
strncpy(Drivers[countr].Name, drvName, sizeof(Drivers[countr].Name)); strncpy(Drivers[countr].Name, drvName, sizeof(Drivers[countr].Name));
} }
delete rn; delete drvDirNode;
InputMouseDev = new MasterDeviceFile("mice", "mouse", DevFS, ddt_Mouse); InputMouseDev = new MasterDeviceFile("mice", "mouse", DevFS, ddt_Mouse);
InputKeyboardDev = new MasterDeviceFile("key", "kbd", DevFS, ddt_Keyboard); InputKeyboardDev = new MasterDeviceFile("key", "kbd", DevFS, ddt_Keyboard);